66
66
CPPUNIT_ASSERT_EQUAL(static_cast<Integer::ValueType>(100), x->i());
67
67
CPPUNIT_ASSERT(!downcast<String>(&integer));
68
SharedHandle<Integer> si(new Integer(101));
68
std::shared_ptr<Integer> si(new Integer(101));
69
69
const Integer* x2 = downcast<Integer>(si);
70
70
CPPUNIT_ASSERT_EQUAL(static_cast<Integer::ValueType>(101), x2->i());
88
88
CPPUNIT_ASSERT(dict.empty());
90
dict["ki"] = Integer::g(7);
91
dict["ks"] = String::g("abc");
90
dict.put("ki", Integer::g(7));
91
dict.put("ks", String::g("abc"));
93
93
CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), dict.size());
94
94
CPPUNIT_ASSERT(dict.containsKey("ki"));
98
98
CPPUNIT_ASSERT_EQUAL(std::string("abc"),
99
99
downcast<String>(dict["ks"])->s());
101
CPPUNIT_ASSERT(!dict["kn"]); // This adds kn key with default value.
102
CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), dict.size());
103
CPPUNIT_ASSERT(dict.containsKey("kn"));
101
CPPUNIT_ASSERT(!dict["kn"]); // This does not adds kn key
102
CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), dict.size());
105
const Dict& ref = dict;
106
105
ref["kn2"]; // This doesn't add kn2 key.
107
CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), ref.size());
106
CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), ref.size());
108
107
CPPUNIT_ASSERT(!ref.containsKey("kn2"));
110
dict.removeKey("kn");
111
CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), dict.size());
112
CPPUNIT_ASSERT(!dict.containsKey("kn"));
109
dict.removeKey("ks");
110
CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), dict.size());
111
CPPUNIT_ASSERT(!dict.containsKey("ks"));
113
auto ki = dict.popValue("ki");
114
CPPUNIT_ASSERT_EQUAL(Integer::ValueType{7}, downcast<Integer>(ki)->i());
115
CPPUNIT_ASSERT(dict.empty());
116
CPPUNIT_ASSERT(!dict.containsKey("ki"));
115
119
void ValueBaseTest::testDictIter()
118
dict["alpha2"] = String::g("alpha2");
119
dict["charlie"] = String::g("charlie");
120
dict["bravo"] = String::g("bravo");
121
dict["alpha"] = String::g("alpha");
122
dict.put("alpha2", String::g("alpha2"));
123
dict.put("charlie", String::g("charlie"));
124
dict.put("bravo", String::g("bravo"));
125
dict.put("alpha", String::g("alpha"));
123
127
Dict::ValueType::iterator i = dict.begin();
124
128
CPPUNIT_ASSERT_EQUAL(std::string("alpha"), (*i++).first);