|
Packit |
bfcc33 |
#include <string>
|
|
Packit |
bfcc33 |
#include <iostream>
|
|
Packit |
bfcc33 |
#include <assert.h>
|
|
Packit |
bfcc33 |
#include "../subset_map.hpp"
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
Subset_Map<std::string, std::string> ssm;
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
string toString(std::vector<std::string> v);
|
|
Packit |
bfcc33 |
string toString(std::vector<std::pair<std::string, std::vector<std::string>>> v);
|
|
Packit |
bfcc33 |
void assertEqual(string std::sExpected, std::string sResult);
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
void setup() {
|
|
Packit |
bfcc33 |
ssm.clear();
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//@ssm[Set[1, 2]] = "Foo"
|
|
Packit |
bfcc33 |
std::vector<std::string> s1;
|
|
Packit |
bfcc33 |
s1.push_back("1");
|
|
Packit |
bfcc33 |
s1.push_back("2");
|
|
Packit |
bfcc33 |
ssm.put(s1, "Foo");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//@ssm[Set["fizz", "fazz"]] = "Bar"
|
|
Packit |
bfcc33 |
std::vector<std::string> s2;
|
|
Packit |
bfcc33 |
s2.push_back("fizz");
|
|
Packit |
bfcc33 |
s2.push_back("fazz");
|
|
Packit |
bfcc33 |
ssm.put(s2, "Bar");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//@ssm[Set[:foo, :bar]] = "Baz"
|
|
Packit |
bfcc33 |
std::vector<std::string> s3;
|
|
Packit |
bfcc33 |
s3.push_back(":foo");
|
|
Packit |
bfcc33 |
s3.push_back(":bar");
|
|
Packit |
bfcc33 |
ssm.put(s3, "Baz");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//@ssm[Set[:foo, :bar, :baz]] = "Bang"
|
|
Packit |
bfcc33 |
std::vector<std::string> s4;
|
|
Packit |
bfcc33 |
s4.push_back(":foo");
|
|
Packit |
bfcc33 |
s4.push_back(":bar");
|
|
Packit |
bfcc33 |
s4.push_back(":baz");
|
|
Packit |
bfcc33 |
ssm.put(s4, "Bang");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//@ssm[Set[:bip, :bop, :blip]] = "Qux"
|
|
Packit |
bfcc33 |
std::vector<std::string> s5;
|
|
Packit |
bfcc33 |
s5.push_back(":bip");
|
|
Packit |
bfcc33 |
s5.push_back(":bop");
|
|
Packit |
bfcc33 |
s5.push_back(":blip");
|
|
Packit |
bfcc33 |
ssm.put(s5, "Qux");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//@ssm[Set[:bip, :bop]] = "Thram"
|
|
Packit |
bfcc33 |
std::vector<std::string> s6;
|
|
Packit |
bfcc33 |
s6.push_back(":bip");
|
|
Packit |
bfcc33 |
s6.push_back(":bop");
|
|
Packit |
bfcc33 |
ssm.put(s6, "Thram");
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
void testEqualKeys() {
|
|
Packit |
bfcc33 |
std::cout << "testEqualKeys" << std::endl;
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [["Foo", Set[1, 2]]], @ssm.get(Set[1, 2])
|
|
Packit |
bfcc33 |
std::vector<std::string> k1;
|
|
Packit |
bfcc33 |
k1.push_back("1");
|
|
Packit |
bfcc33 |
k1.push_back("2");
|
|
Packit |
bfcc33 |
assertEqual("[[Foo, Set[1, 2]]]", toString(ssm.get_kv(k1)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [["Bar", Set["fizz", "fazz"]]], @ssm.get(Set["fizz", "fazz"])
|
|
Packit |
bfcc33 |
std::vector<std::string> k2;
|
|
Packit |
bfcc33 |
k2.push_back("fizz");
|
|
Packit |
bfcc33 |
k2.push_back("fazz");
|
|
Packit |
bfcc33 |
assertEqual("[[Bar, Set[fizz, fazz]]]", toString(ssm.get_kv(k2)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::cout << std::endl;
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
void testSubsetKeys() {
|
|
Packit |
bfcc33 |
std::cout << "testSubsetKeys" << std::endl;
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [["Foo", Set[1, 2]]], @ssm.get(Set[1, 2, "fuzz"])
|
|
Packit |
bfcc33 |
std::vector<std::string> k1;
|
|
Packit |
bfcc33 |
k1.push_back("1");
|
|
Packit |
bfcc33 |
k1.push_back("2");
|
|
Packit |
bfcc33 |
k1.push_back("fuzz");
|
|
Packit |
bfcc33 |
assertEqual("[[Foo, Set[1, 2]]]", toString(ssm.get_kv(k1)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [["Bar", Set["fizz", "fazz"]]], @ssm.get(Set["fizz", "fazz", 3])
|
|
Packit |
bfcc33 |
std::vector<std::string> k2;
|
|
Packit |
bfcc33 |
k2.push_back("fizz");
|
|
Packit |
bfcc33 |
k2.push_back("fazz");
|
|
Packit |
bfcc33 |
k2.push_back("3");
|
|
Packit |
bfcc33 |
assertEqual("[[Bar, Set[fizz, fazz]]]", toString(ssm.get_kv(k2)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::cout << std::endl;
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
void testSupersetKeys() {
|
|
Packit |
bfcc33 |
std::cout << "testSupersetKeys" << std::endl;
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [], @ssm.get(Set[1])
|
|
Packit |
bfcc33 |
std::vector<std::string> k1;
|
|
Packit |
bfcc33 |
k1.push_back("1");
|
|
Packit |
bfcc33 |
assertEqual("[]", toString(ssm.get_kv(k1)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [], @ssm.get(Set[2])
|
|
Packit |
bfcc33 |
std::vector<std::string> k2;
|
|
Packit |
bfcc33 |
k2.push_back("2");
|
|
Packit |
bfcc33 |
assertEqual("[]", toString(ssm.get_kv(k2)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [], @ssm.get(Set["fizz"])
|
|
Packit |
bfcc33 |
std::vector<std::string> k3;
|
|
Packit |
bfcc33 |
k3.push_back("fizz");
|
|
Packit |
bfcc33 |
assertEqual("[]", toString(ssm.get_kv(k3)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [], @ssm.get(Set["fazz"])
|
|
Packit |
bfcc33 |
std::vector<std::string> k4;
|
|
Packit |
bfcc33 |
k4.push_back("fazz");
|
|
Packit |
bfcc33 |
assertEqual("[]", toString(ssm.get_kv(k4)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::cout << std::endl;
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
void testDisjointKeys() {
|
|
Packit |
bfcc33 |
std::cout << "testDisjointKeys" << std::endl;
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [], @ssm.get(Set[3, 4])
|
|
Packit |
bfcc33 |
std::vector<std::string> k1;
|
|
Packit |
bfcc33 |
k1.push_back("3");
|
|
Packit |
bfcc33 |
k1.push_back("4");
|
|
Packit |
bfcc33 |
assertEqual("[]", toString(ssm.get_kv(k1)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [], @ssm.get(Set["fuzz", "frizz"])
|
|
Packit |
bfcc33 |
std::vector<std::string> k2;
|
|
Packit |
bfcc33 |
k2.push_back("fuzz");
|
|
Packit |
bfcc33 |
k2.push_back("frizz");
|
|
Packit |
bfcc33 |
assertEqual("[]", toString(ssm.get_kv(k2)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [], @ssm.get(Set["gran", 15])
|
|
Packit |
bfcc33 |
std::vector<std::string> k3;
|
|
Packit |
bfcc33 |
k3.push_back("gran");
|
|
Packit |
bfcc33 |
k3.push_back("15");
|
|
Packit |
bfcc33 |
assertEqual("[]", toString(ssm.get_kv(k3)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::cout << std::endl;
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
void testSemiDisjointKeys() {
|
|
Packit |
bfcc33 |
std::cout << "testSemiDisjointKeys" << std::endl;
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [], @ssm.get(Set[2, 3])
|
|
Packit |
bfcc33 |
std::vector<std::string> k1;
|
|
Packit |
bfcc33 |
k1.push_back("2");
|
|
Packit |
bfcc33 |
k1.push_back("3");
|
|
Packit |
bfcc33 |
assertEqual("[]", toString(ssm.get_kv(k1)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [], @ssm.get(Set["fizz", "fuzz"])
|
|
Packit |
bfcc33 |
std::vector<std::string> k2;
|
|
Packit |
bfcc33 |
k2.push_back("fizz");
|
|
Packit |
bfcc33 |
k2.push_back("fuzz");
|
|
Packit |
bfcc33 |
assertEqual("[]", toString(ssm.get_kv(k2)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [], @ssm.get(Set[1, "fazz"])
|
|
Packit |
bfcc33 |
std::vector<std::string> k3;
|
|
Packit |
bfcc33 |
k3.push_back("1");
|
|
Packit |
bfcc33 |
k3.push_back("fazz");
|
|
Packit |
bfcc33 |
assertEqual("[]", toString(ssm.get_kv(k3)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::cout << std::endl;
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
void testEmptyKeySet() {
|
|
Packit |
bfcc33 |
std::cout << "testEmptyKeySet" << std::endl;
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_raises(ArgumentError) {@ssm[Set[]] = "Fail"}
|
|
Packit |
bfcc33 |
std::vector<std::string> s1;
|
|
Packit |
bfcc33 |
try {
|
|
Packit |
bfcc33 |
ssm.put(s1, "Fail");
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
catch (const char* &e) {
|
|
Packit |
bfcc33 |
assertEqual("internal error: subset map keys may not be empty", e);
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
void testEmptyKeyGet() {
|
|
Packit |
bfcc33 |
std::cout << "testEmptyKeyGet" << std::endl;
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [], @ssm.get(Set[])
|
|
Packit |
bfcc33 |
std::vector<std::string> k1;
|
|
Packit |
bfcc33 |
assertEqual("[]", toString(ssm.get_kv(k1)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::cout << std::endl;
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
void testMultipleSubsets() {
|
|
Packit |
bfcc33 |
std::cout << "testMultipleSubsets" << std::endl;
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [["Foo", Set[1, 2]], ["Bar", Set["fizz", "fazz"]]], @ssm.get(Set[1, 2, "fizz", "fazz"])
|
|
Packit |
bfcc33 |
std::vector<std::string> k1;
|
|
Packit |
bfcc33 |
k1.push_back("1");
|
|
Packit |
bfcc33 |
k1.push_back("2");
|
|
Packit |
bfcc33 |
k1.push_back("fizz");
|
|
Packit |
bfcc33 |
k1.push_back("fazz");
|
|
Packit |
bfcc33 |
assertEqual("[[Foo, Set[1, 2]], [Bar, Set[fizz, fazz]]]", toString(ssm.get_kv(k1)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [["Foo", Set[1, 2]], ["Bar", Set["fizz", "fazz"]]], @ssm.get(Set[1, 2, 3, "fizz", "fazz", "fuzz"])
|
|
Packit |
bfcc33 |
std::vector<std::string> k2;
|
|
Packit |
bfcc33 |
k2.push_back("1");
|
|
Packit |
bfcc33 |
k2.push_back("2");
|
|
Packit |
bfcc33 |
k2.push_back("3");
|
|
Packit |
bfcc33 |
k2.push_back("fizz");
|
|
Packit |
bfcc33 |
k2.push_back("fazz");
|
|
Packit |
bfcc33 |
k2.push_back("fuzz");
|
|
Packit |
bfcc33 |
assertEqual("[[Foo, Set[1, 2]], [Bar, Set[fizz, fazz]]]", toString(ssm.get_kv(k2)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [["Baz", Set[:foo, :bar]]], @ssm.get(Set[:foo, :bar])
|
|
Packit |
bfcc33 |
std::vector<std::string> k3;
|
|
Packit |
bfcc33 |
k3.push_back(":foo");
|
|
Packit |
bfcc33 |
k3.push_back(":bar");
|
|
Packit |
bfcc33 |
assertEqual("[[Baz, Set[:foo, :bar]]]", toString(ssm.get_kv(k3)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [["Baz", Set[:foo, :bar]], ["Bang", Set[:foo, :bar, :baz]]], @ssm.get(Set[:foo, :bar, :baz])
|
|
Packit |
bfcc33 |
std::vector<std::string> k4;
|
|
Packit |
bfcc33 |
k4.push_back(":foo");
|
|
Packit |
bfcc33 |
k4.push_back(":bar");
|
|
Packit |
bfcc33 |
k4.push_back(":baz");
|
|
Packit |
bfcc33 |
assertEqual("[[Baz, Set[:foo, :bar]], [Bang, Set[:foo, :bar, :baz]]]", toString(ssm.get_kv(k4)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::cout << std::endl;
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
void testBracketBracket() {
|
|
Packit |
bfcc33 |
std::cout << "testBracketBracket" << std::endl;
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal ["Foo"], @ssm[Set[1, 2, "fuzz"]]
|
|
Packit |
bfcc33 |
std::vector<std::string> k1;
|
|
Packit |
bfcc33 |
k1.push_back("1");
|
|
Packit |
bfcc33 |
k1.push_back("2");
|
|
Packit |
bfcc33 |
k1.push_back("fuzz");
|
|
Packit |
bfcc33 |
assertEqual("[Foo]", toString(ssm.get_v(k1)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal ["Baz", "Bang"], @ssm[Set[:foo, :bar, :baz]]
|
|
Packit |
bfcc33 |
std::vector<std::string> k2;
|
|
Packit |
bfcc33 |
k2.push_back(":foo");
|
|
Packit |
bfcc33 |
k2.push_back(":bar");
|
|
Packit |
bfcc33 |
k2.push_back(":baz");
|
|
Packit |
bfcc33 |
assertEqual("[Baz, Bang]", toString(ssm.get_v(k2)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::cout << std::endl;
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
void testKeyOrder() {
|
|
Packit |
bfcc33 |
std::cout << "testEqualKeys" << std::endl;
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal [["Foo", Set[1, 2]]], @ssm.get(Set[2, 1])
|
|
Packit |
bfcc33 |
std::vector<std::string> k1;
|
|
Packit |
bfcc33 |
k1.push_back("2");
|
|
Packit |
bfcc33 |
k1.push_back("1");
|
|
Packit |
bfcc33 |
assertEqual("[[Foo, Set[1, 2]]]", toString(ssm.get_kv(k1)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::cout << std::endl;
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
void testOrderPreserved() {
|
|
Packit |
bfcc33 |
std::cout << "testOrderPreserved" << std::endl;
|
|
Packit |
bfcc33 |
//@ssm[Set[10, 11, 12]] = 1
|
|
Packit |
bfcc33 |
std::vector<std::string> s1;
|
|
Packit |
bfcc33 |
s1.push_back("10");
|
|
Packit |
bfcc33 |
s1.push_back("11");
|
|
Packit |
bfcc33 |
s1.push_back("12");
|
|
Packit |
bfcc33 |
ssm.put(s1, "1");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//@ssm[Set[10, 11]] = 2
|
|
Packit |
bfcc33 |
std::vector<std::string> s2;
|
|
Packit |
bfcc33 |
s2.push_back("10");
|
|
Packit |
bfcc33 |
s2.push_back("11");
|
|
Packit |
bfcc33 |
ssm.put(s2, "2");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//@ssm[Set[11]] = 3
|
|
Packit |
bfcc33 |
std::vector<std::string> s3;
|
|
Packit |
bfcc33 |
s3.push_back("11");
|
|
Packit |
bfcc33 |
ssm.put(s3, "3");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//@ssm[Set[11, 12]] = 4
|
|
Packit |
bfcc33 |
std::vector<std::string> s4;
|
|
Packit |
bfcc33 |
s4.push_back("11");
|
|
Packit |
bfcc33 |
s4.push_back("12");
|
|
Packit |
bfcc33 |
ssm.put(s4, "4");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//@ssm[Set[9, 10, 11, 12, 13]] = 5
|
|
Packit |
bfcc33 |
std::vector<std::string> s5;
|
|
Packit |
bfcc33 |
s5.push_back("9");
|
|
Packit |
bfcc33 |
s5.push_back("10");
|
|
Packit |
bfcc33 |
s5.push_back("11");
|
|
Packit |
bfcc33 |
s5.push_back("12");
|
|
Packit |
bfcc33 |
s5.push_back("13");
|
|
Packit |
bfcc33 |
ssm.put(s5, "5");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//@ssm[Set[10, 13]] = 6
|
|
Packit |
bfcc33 |
std::vector<std::string> s6;
|
|
Packit |
bfcc33 |
s6.push_back("10");
|
|
Packit |
bfcc33 |
s6.push_back("13");
|
|
Packit |
bfcc33 |
ssm.put(s6, "6");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal([[1, Set[10, 11, 12]], [2, Set[10, 11]], [3, Set[11]], [4, Set[11, 12]], [5, Set[9, 10, 11, 12, 13]], [6, Set[10, 13]]], @ssm.get(Set[9, 10, 11, 12, 13]))
|
|
Packit |
bfcc33 |
std::vector<std::string> k1;
|
|
Packit |
bfcc33 |
k1.push_back("9");
|
|
Packit |
bfcc33 |
k1.push_back("10");
|
|
Packit |
bfcc33 |
k1.push_back("11");
|
|
Packit |
bfcc33 |
k1.push_back("12");
|
|
Packit |
bfcc33 |
k1.push_back("13");
|
|
Packit |
bfcc33 |
assertEqual("[[1, Set[10, 11, 12]], [2, Set[10, 11]], [3, Set[11]], [4, Set[11, 12]], [5, Set[9, 10, 11, 12, 13]], [6, Set[10, 13]]]", toString(ssm.get_kv(k1)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::cout << std::endl;
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
void testMultipleEqualValues() {
|
|
Packit |
bfcc33 |
std::cout << "testMultipleEqualValues" << std::endl;
|
|
Packit |
bfcc33 |
//@ssm[Set[11, 12]] = 1
|
|
Packit |
bfcc33 |
std::vector<std::string> s1;
|
|
Packit |
bfcc33 |
s1.push_back("11");
|
|
Packit |
bfcc33 |
s1.push_back("12");
|
|
Packit |
bfcc33 |
ssm.put(s1, "1");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//@ssm[Set[12, 13]] = 2
|
|
Packit |
bfcc33 |
std::vector<std::string> s2;
|
|
Packit |
bfcc33 |
s2.push_back("12");
|
|
Packit |
bfcc33 |
s2.push_back("13");
|
|
Packit |
bfcc33 |
ssm.put(s2, "2");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//@ssm[Set[13, 14]] = 1
|
|
Packit |
bfcc33 |
std::vector<std::string> s3;
|
|
Packit |
bfcc33 |
s3.push_back("13");
|
|
Packit |
bfcc33 |
s3.push_back("14");
|
|
Packit |
bfcc33 |
ssm.put(s3, "1");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//@ssm[Set[14, 15]] = 1
|
|
Packit |
bfcc33 |
std::vector<std::string> s4;
|
|
Packit |
bfcc33 |
s4.push_back("14");
|
|
Packit |
bfcc33 |
s4.push_back("15");
|
|
Packit |
bfcc33 |
ssm.put(s4, "1");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
//assert_equal([[1, Set[11, 12]], [2, Set[12, 13]], [1, Set[13, 14]], [1, Set[14, 15]]], @ssm.get(Set[11, 12, 13, 14, 15]))
|
|
Packit |
bfcc33 |
std::vector<std::string> k1;
|
|
Packit |
bfcc33 |
k1.push_back("11");
|
|
Packit |
bfcc33 |
k1.push_back("12");
|
|
Packit |
bfcc33 |
k1.push_back("13");
|
|
Packit |
bfcc33 |
k1.push_back("14");
|
|
Packit |
bfcc33 |
k1.push_back("15");
|
|
Packit |
bfcc33 |
assertEqual("[[1, Set[11, 12]], [2, Set[12, 13]], [1, Set[13, 14]], [1, Set[14, 15]]]", toString(ssm.get_kv(k1)));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::cout << std::endl;
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
int main()
|
|
Packit |
bfcc33 |
{
|
|
Packit |
bfcc33 |
std::vector<std::string> s1;
|
|
Packit |
bfcc33 |
s1.push_back("1");
|
|
Packit |
bfcc33 |
s1.push_back("2");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::vector<std::string> s2;
|
|
Packit |
bfcc33 |
s2.push_back("2");
|
|
Packit |
bfcc33 |
s2.push_back("3");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::vector<std::string> s3;
|
|
Packit |
bfcc33 |
s3.push_back("3");
|
|
Packit |
bfcc33 |
s3.push_back("4");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
ssm.put(s1, "value1");
|
|
Packit |
bfcc33 |
ssm.put(s2, "value2");
|
|
Packit |
bfcc33 |
ssm.put(s3, "value3");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::vector<std::string> s4;
|
|
Packit |
bfcc33 |
s4.push_back("1");
|
|
Packit |
bfcc33 |
s4.push_back("2");
|
|
Packit |
bfcc33 |
s4.push_back("3");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::vector<std::pair<string, std::vector<std::string> > > fetched(ssm.get_kv(s4));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::cout << "PRINTING RESULTS:" << std::endl;
|
|
Packit |
bfcc33 |
for (size_t i = 0, S = fetched.size(); i < S; ++i) {
|
|
Packit |
bfcc33 |
std::cout << fetched[i].first << std::endl;
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
Subset_Map<string, string> ssm2;
|
|
Packit |
bfcc33 |
ssm2.put(s1, "foo");
|
|
Packit |
bfcc33 |
ssm2.put(s2, "bar");
|
|
Packit |
bfcc33 |
ssm2.put(s4, "hux");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::vector<std::pair<string, std::vector<std::string> > > fetched2(ssm2.get_kv(s4));
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::cout << std::endl << "PRINTING RESULTS:" << std::endl;
|
|
Packit |
bfcc33 |
for (size_t i = 0, S = fetched2.size(); i < S; ++i) {
|
|
Packit |
bfcc33 |
std::cout << fetched2[i].first << std::endl;
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::cout << "TRYING ON A SELECTOR-LIKE OBJECT" << std::endl;
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
Subset_Map<string, string> sel_ssm;
|
|
Packit |
bfcc33 |
std::vector<std::string> target;
|
|
Packit |
bfcc33 |
target.push_back("desk");
|
|
Packit |
bfcc33 |
target.push_back(".wood");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::vector<std::string> actual;
|
|
Packit |
bfcc33 |
actual.push_back("desk");
|
|
Packit |
bfcc33 |
actual.push_back(".wood");
|
|
Packit |
bfcc33 |
actual.push_back(".mine");
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
sel_ssm.put(target, "has-aquarium");
|
|
Packit |
bfcc33 |
std::vector<std::pair<string, std::vector<std::string> > > fetched3(sel_ssm.get_kv(actual));
|
|
Packit |
bfcc33 |
std::cout << "RESULTS:" << std::endl;
|
|
Packit |
bfcc33 |
for (size_t i = 0, S = fetched3.size(); i < S; ++i) {
|
|
Packit |
bfcc33 |
std::cout << fetched3[i].first << std::endl;
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
std::cout << std::endl;
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
// BEGIN PORTED RUBY TESTS FROM /test/sass/util/subset_map_test.rb
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
setup();
|
|
Packit |
bfcc33 |
testEqualKeys();
|
|
Packit |
bfcc33 |
testSubsetKeys();
|
|
Packit |
bfcc33 |
testSupersetKeys();
|
|
Packit |
bfcc33 |
testDisjointKeys();
|
|
Packit |
bfcc33 |
testSemiDisjointKeys();
|
|
Packit |
bfcc33 |
testEmptyKeySet();
|
|
Packit |
bfcc33 |
testEmptyKeyGet();
|
|
Packit |
bfcc33 |
testMultipleSubsets();
|
|
Packit |
bfcc33 |
testBracketBracket();
|
|
Packit |
bfcc33 |
testKeyOrder();
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
setup();
|
|
Packit |
bfcc33 |
testOrderPreserved();
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
setup();
|
|
Packit |
bfcc33 |
testMultipleEqualValues();
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
return 0;
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
string toString(std::vector<std::pair<string, std::vector<std::string>>> v)
|
|
Packit |
bfcc33 |
{
|
|
Packit |
bfcc33 |
std::stringstream buffer;
|
|
Packit |
bfcc33 |
buffer << "[";
|
|
Packit |
bfcc33 |
for (size_t i = 0, S = v.size(); i < S; ++i) {
|
|
Packit |
bfcc33 |
buffer << "[" << v[i].first;
|
|
Packit |
bfcc33 |
buffer << ", Set[";
|
|
Packit |
bfcc33 |
for (size_t j = 0, S = v[i].second.size(); j < S; ++j) {
|
|
Packit |
bfcc33 |
buffer << v[i].second[j];
|
|
Packit |
bfcc33 |
if (j < S-1) {
|
|
Packit |
bfcc33 |
buffer << ", ";
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
buffer << "]]";
|
|
Packit |
bfcc33 |
if (i < S-1) {
|
|
Packit |
bfcc33 |
buffer << ", ";
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
buffer << "]";
|
|
Packit |
bfcc33 |
return buffer.str();
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
string toString(std::vector<std::string> v)
|
|
Packit |
bfcc33 |
{
|
|
Packit |
bfcc33 |
std::stringstream buffer;
|
|
Packit |
bfcc33 |
buffer << "[";
|
|
Packit |
bfcc33 |
for (size_t i = 0, S = v.size(); i < S; ++i) {
|
|
Packit |
bfcc33 |
buffer << v[i];
|
|
Packit |
bfcc33 |
if (i < S-1) {
|
|
Packit |
bfcc33 |
buffer << ", ";
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
buffer << "]";
|
|
Packit |
bfcc33 |
return buffer.str();
|
|
Packit |
bfcc33 |
}
|
|
Packit |
bfcc33 |
|
|
Packit |
bfcc33 |
void assertEqual(string sExpected, string sResult) {
|
|
Packit |
bfcc33 |
std::cout << "Expected: " << sExpected << std::endl;
|
|
Packit |
bfcc33 |
std::cout << "Result: " << sResult << std::endl;
|
|
Packit |
bfcc33 |
assert(sExpected == sResult);
|
|
Packit |
bfcc33 |
}
|