def test_yaml(self): n = default_node() n_schema = n.to_yaml() print("result yaml", n_schema) g = Generator(schema=n_schema, protocol="yaml") ng = Node() g.walk(node=ng) print(ng) for p in ["a", "b", "c"]: orig = n.fetch(p).value() curr = ng.fetch(p).value() print(ng) print(p, orig, curr) orig = n[p] curr = ng[p] print(ng) print(p, orig, curr) self.assertEqual(orig, curr)
def test_to_string_and_friends(self): a_val = uint32(10) b_val = uint32(20) c_val = float64(30.0) n = Node() n['a'] = a_val n['b'] = b_val n['c'] = c_val s = n.schema() print("yaml rep") print(s.to_string("yaml")) print("json rep") print(s.to_string("json")) self.assertEqual(s.to_string("yaml"),s.to_yaml()) self.assertEqual(s.to_string("json"),s.to_json())
def test_schema_child_rename(self): s = Schema() with self.assertRaises(Exception): s.rename_child('a', 'b') s["a"] = DataType.float64(10) s["b"] = DataType.float32(10) with self.assertRaises(Exception): s.rename_child('bad', 'good') with self.assertRaises(Exception): s.rename_child('b', 'a') s.rename_child("b", "c") n = Node() n.set(s) sr = n.schema() self.assertEqual(sr.total_strided_bytes(), 8 * 10 + 4 * 10) self.assertEqual(sr["a"].total_strided_bytes(), 8 * 10) self.assertEqual(sr["c"].total_strided_bytes(), 4 * 10)
def test_base64(self): n = default_node() print(n) n_schema = n.to_json("conduit_base64_json") print("result base64 json", n_schema) g = Generator(n_schema, "conduit_base64_json") ng = Node() g.walk(node=ng) print("Generator result") print(ng) for p in ["a", "b", "c"]: orig = n.fetch(p).value() curr = ng.fetch(p).value() print(ng) print(p, orig, curr) orig = n[p] curr = ng[p] print(ng) print(p, orig, curr) self.assertEqual(orig, curr)
def test_numeric_lists(self): n = Node() n["list_0"].set((1, 2, 3, 4)) n["list_1"].set((1.0, 2.0, 3.0, 4.0)) n["list_2"].set((1, 2, 3, 4.0)) print(n) self.assertEqual(n['list_0'][0], 1) self.assertEqual(n['list_0'][1], 2) self.assertEqual(n['list_0'][2], 3) self.assertEqual(n['list_0'][3], 4) self.assertEqual(n['list_1'][0], 1.0) self.assertEqual(n['list_1'][1], 2.0) self.assertEqual(n['list_1'][2], 3.0) self.assertEqual(n['list_1'][3], 4.0) self.assertEqual(n['list_2'][0], 1.0) self.assertEqual(n['list_2'][1], 2.0) self.assertEqual(n['list_2'][2], 3.0) self.assertEqual(n['list_2'][3], 4.0)
def test_string(self): n = Node() n.set("my string!") print(n) self.assertEqual(n.value(), "my string!") # test numpy string nps = np.string_("my numpy string!") n.set(nps) print(n) print(repr(n)) self.assertEqual(n.value(), "my numpy string!") aofstrs = np.array(["here", "are", "a", "few", "strings"]) print(aofstrs) n.set(aofstrs) print(n) self.assertEqual(n[0], "here") self.assertEqual(n[1], "are") self.assertEqual(n[2], "a") self.assertEqual(n[3], "few") self.assertEqual(n[4], "strings")
def test_simple(self): n = default_node() n_schema = n.to_json("conduit_json") print("result detailed json", n_schema) g = Generator(schema=n_schema) ng = Node() sg = Schema() g.walk(node=ng) g.walk(schema=sg) print(ng) print(sg) for p in ["a", "b", "c"]: orig = n.fetch(p).value() curr = ng.fetch(p).value() print(ng) print(p, orig, curr) orig = n[p] curr = ng[p] print(ng) print(p, orig, curr) self.assertEqual(orig, curr)
def test_maps(self): maps = Node() # named args test maps["a"] = np.array([1.1415, 2.1415, 3.1415]) maps["b"] = np.array([0,0,42]) t = conduit.utils.format("something about {a:0.3} and {b:04}", maps=maps, map_index =2) print(t) self.assertTrue(t == "something about 3.14 and 0042") # ordered args test maps.reset() maps.append().set(np.array([1.1415, 2.1415, 3.1415])) maps.append().set(np.array([0,0,42])); t = conduit.utils.format("something about {:0.3} and {:04}", maps=maps,map_index =2) print(t) self.assertTrue(t == "something about 3.14 and 0042") #string list case maps.reset() slist = maps.append() slist.append().set("hi 0") slist.append().set("hi 1") slist.append().set("hi 2") t = conduit.utils.format("{} is it",maps=maps,map_index =0) print(t) self.assertTrue(t == "hi 0 is it") t = conduit.utils.format("{} is it",maps=maps,map_index =1) print(t) self.assertTrue(t == "hi 1 is it") t = conduit.utils.format("{} is it",maps=maps,map_index =2) print(t) self.assertTrue(t == "hi 2 is it")
def test_to_string(self): a_val = np.uint32(10) b_val = np.uint32(20) c_val = np.float64(30.0) n = Node() n['a'] = a_val n['b'] = b_val n['c'] = c_val res_to_str_def = n.to_string() res_to_str_yaml = n.to_string(protocol="yaml") res_to_str_json = n.to_string(protocol="json") res_to_yaml = n.to_yaml() res_to_json = n.to_json() self.assertEqual(res_to_str_def, res_to_yaml) self.assertEqual(res_to_str_yaml, res_to_yaml) self.assertEqual(res_to_str_json, res_to_json) n.print_detailed()
def test_args(self): args = Node() # named args test args["a"] = "something about"; args["b"] = "and"; args["c"] = 3.1415; args["d"] = 42; t = conduit.utils.format("{a} {c:0.3} {b} {d:04}", args = args) print(t) self.assertTrue(t == "something about 3.14 and 0042") # ordered args test args.reset() args.append().set("something about") args.append().set(3.1415) args.append().set("and") args.append().set(42) t = conduit.utils.format("{} {:0.3} {} {:04}", args); print(t) self.assertTrue(t == "something about 3.14 and 0042")
def test_simple(self): a_val = uint32(10) b_val = uint32(20) c_val = float64(30.0) n = Node() n['a'] = a_val n['b'] = b_val n['c'] = c_val itr = NodeIterator() self.assertFalse(itr.has_next()) itr = n.children() self.assertTrue(itr.has_next()) print(itr.has_next()) for v in itr: print(v.name(), v.node()) idx = v.index() if idx == 0: self.assertEqual(v.node().value(), a_val) elif idx == 1: self.assertEqual(v.node().value(), b_val) elif idx == 2: self.assertEqual(v.node().value(), c_val)
def test_child_rename(self): a_val = np.uint32(10) b_val = np.uint32(20) n = Node() with self.assertRaises(Exception): n.rename_child('a', 'b') n['a'] = a_val n['b'] = b_val with self.assertRaises(Exception): n.rename_child('bad', 'good') with self.assertRaises(Exception): n.rename_child('b', 'a') self.assertTrue(n['a'] == a_val) self.assertTrue(n['b'] == b_val) n.rename_child('b', 'c') self.assertTrue(n['a'] == a_val) self.assertTrue(n['c'] == b_val)
def test_parent(self): vec = array(range(100), uint32) n = Node() n['a'] = vec na = n.fetch('a') self.assertFalse(na.is_root())
def test_general_tuples(self): n = Node() n.set((1, "here")) print(n) self.assertEqual(n[0], 1.0) self.assertEqual(n[1], "here")
def test_parse(self): n = Node() n.parse('{"a": 42.0}', "json") self.assertTrue(n['a'] == np.float64(42.0)) n.parse('a: 52.0', "yaml") self.assertTrue(n['a'] == np.float64(52.0))
def test_nested(self): val = uint32(10) n = Node() n['a']['b'] = val print(n['a']['b']) self.assertEqual(n['a']['b'], val)
def test_vector(self): vec = array(range(100), uint32) n = Node() n['a'] = vec self.assertEqual(n['a'][99], 99)
def test_general_lists(self): n = Node() n.set([1, "there"]) print(n) self.assertEqual(n[0], 1.0) self.assertEqual(n[1], "there")