diff options
author | Devtools Arcadia <arcadia-devtools@yandex-team.ru> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /util/generic/map_ut.pyx | |
download | ydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'util/generic/map_ut.pyx')
-rw-r--r-- | util/generic/map_ut.pyx | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/util/generic/map_ut.pyx b/util/generic/map_ut.pyx new file mode 100644 index 0000000000..d6ec29724d --- /dev/null +++ b/util/generic/map_ut.pyx @@ -0,0 +1,82 @@ +from util.generic.map cimport TMap +from util.generic.string cimport TString + +import pytest +import unittest + +from libcpp.pair cimport pair +from cython.operator cimport dereference as deref + + +def _check_convert(TMap[TString, int] x): + return x + + +class TestMap(unittest.TestCase): + + def test_constructors_and_assignments(self): + cdef TMap[TString, int] c1 + c1["one"] = 1 + c1["two"] = 2 + cdef TMap[TString, int] c2 = TMap[TString, int](c1) + self.assertEqual(2, c1.size()) + self.assertEqual(2, c2.size()) + self.assertEqual(1, c1.at("one")) + self.assertTrue(c1.contains("two")) + self.assertTrue(c2.contains("one")) + self.assertEqual(2, c2.at("two")) + c2["three"] = 3 + c1 = c2 + self.assertEqual(3, c1.size()) + self.assertEqual(3, c2.size()) + self.assertEqual(3, c1.at("three")) + + def test_equality_operator(self): + cdef TMap[TString, int] base + base["one"] = 1 + base["two"] = 2 + + cdef TMap[TString, int] c1 = TMap[TString, int](base) + self.assertTrue(c1==base) + + cdef TMap[TString, int] c2 + c2["one"] = 1 + c2["two"] = 2 + self.assertTrue(c2 == base) + + c2["three"] = 3 + self.assertTrue(c2 != base) + + cdef TMap[TString, int] c3 = TMap[TString, int](base) + c3["one"] = 0 + self.assertTrue(c3 != base) + + def test_insert_erase(self): + cdef TMap[TString, int] tmp + self.assertTrue(tmp.insert(pair[TString, int]("one", 0)).second) + self.assertFalse(tmp.insert(pair[TString, int]("one", 1)).second) + self.assertTrue(tmp.insert(pair[TString, int]("two", 2)).second) + cdef TString one = "one" + cdef TString two = "two" + self.assertEqual(tmp.erase(one), 1) + self.assertEqual(tmp.erase(two), 1) + self.assertEqual(tmp.size(), 0) + self.assertTrue(tmp.empty()) + + def test_iterators_and_find(self): + cdef TMap[TString, int] tmp + self.assertTrue(tmp.begin() == tmp.end()) + self.assertTrue(tmp.find("1") == tmp.end()) + tmp["1"] = 1 + self.assertTrue(tmp.begin() != tmp.end()) + cdef TMap[TString, int].iterator it = tmp.find("1") + self.assertTrue(it != tmp.end()) + self.assertEqual(deref(it).second, 1) + + def test_convert(self): + src = {'foo': 1, 'bar': 42} + self.assertEqual(_check_convert(src), src) + + bad_src = {'foo': 1, 'bar': 'baz'} + with self.assertRaises(TypeError): + _check_convert(bad_src) |