def test_infiletodb_read_map(): m = MockCodeGenMachine() m.context = { "MyFactory": OrderedDict([('vars', OrderedDict([ ('x', { 'type': 'int', 'uitype': 'nuclide' }), ]))]) } f = InfileToDbFilter(m) cpptype = ('std::map', 'int', 'double') alias = [['streams', 'entry'], 'id', 'mass'] obs = f.read_member('mymap', alias, cpptype, uitype=None) exp = ( ' std::map< int, double > mymap;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("streams", 0);\n' ' cyclus::InfileTree* sub = bub;\n' ' int n1 = sub->NMatches("entry");\n' ' std::map< int, double > mymap_in;\n' ' for (int i1 = 0; i1 < n1; ++i1) {\n' ' int key;\n' ' {\n' ' int key_in = cyclus::Query<int>(sub, "entry/id", i1);\n' ' key = key_in;\n' ' }\n' ' double val;\n' ' {\n' ' double val_in = cyclus::Query<double>(sub, "entry/mass", i1);\n' ' val = val_in;\n' ' }\n' ' mymap_in[key] = val;\n' ' }\n' ' mymap = mymap_in;\n' ' }\n') yield assert_equal, exp, obs
def test_infiletodb_read_map(): m = MockCodeGenMachine() m.context = {"MyFactory": OrderedDict([('vars', OrderedDict([ ('x', {'type': 'int', 'uitype': 'nuclide'}), ])) ])} f = InfileToDbFilter(m) cpptype = ('std::map', 'int', 'double') alias = [['streams', 'entry'], 'id', 'mass'] obs = f.read_member('mymap', alias, cpptype, uitype=None) exp = ( ' std::map< int, double > mymap;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("streams", 0);\n' ' cyclus::InfileTree* sub = bub;\n' ' int n1 = sub->NMatches("entry");\n' ' std::map< int, double > mymap_in;\n' ' for (int i1 = 0; i1 < n1; ++i1) {\n' ' int key;\n' ' {\n' ' int key_in = cyclus::Query<int>(sub, "entry/id", i1);\n' ' key = key_in;\n' ' }\n' ' double val;\n' ' {\n' ' double val_in = cyclus::Query<double>(sub, "entry/mass", i1);\n' ' val = val_in;\n' ' }\n' ' mymap_in[key] = val;\n' ' }\n' ' mymap = mymap_in;\n' ' }\n') yield assert_equal, exp, obs
def test_infiletodb_read_member1(): m = MockCodeGenMachine() m.context = { "MyFactory": OrderedDict([('vars', OrderedDict([ ('x', { 'type': 'int', 'uitype': 'nuclide' }), ]))]) } f = InfileToDbFilter(m) cpptype = ('std::map', 'std::string', ('std::vector', ('std::vector', ('std::pair', 'double', ('std::pair', 'int', ('std::list', ('std::set', 'bool'))))))) alias = ['streams', 'name', ['efficiencies', 'val']] gen = f.read_member('mymap', alias, cpptype, uitype=None) exp_gen = ( ' std::map< std::string, std::vector< std::vector< std::pair< double, std::pair< int, std::list< std::set< bool > > > > > > > mymap;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("streams", 0);\n' ' cyclus::InfileTree* sub = bub;\n' ' int n1 = sub->NMatches("item");\n' ' std::map< std::string, std::vector< std::vector< std::pair< double, std::pair< int, std::list< std::set< bool > > > > > > > mymap_in;\n' ' for (int i1 = 0; i1 < n1; ++i1) {\n' ' std::string key;\n' ' {\n' ' std::string key_in = cyclus::Query<std::string>(sub, "item/name", i1);\n' ' key = key_in;\n' ' }\n' ' std::vector< std::vector< std::pair< double, std::pair< int, std::list< std::set< bool > > > > > > val;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("item/efficiencies", i1);\n' ' cyclus::InfileTree* sub = bub;\n' ' int n2 = sub->NMatches("val");\n' ' std::vector< std::vector< std::pair< double, std::pair< int, std::list< std::set< bool > > > > > > val_in;\n' ' val_in.resize(n2);\n' ' for (int i2 = 0; i2 < n2; ++i2) {\n' ' std::vector< std::pair< double, std::pair< int, std::list< std::set< bool > > > > > elem;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("val", i2);\n' ' cyclus::InfileTree* sub = bub;\n' ' int n3 = sub->NMatches("val");\n' ' std::vector< std::pair< double, std::pair< int, std::list< std::set< bool > > > > > elem_in;\n' ' elem_in.resize(n3);\n' ' for (int i3 = 0; i3 < n3; ++i3) {\n' ' std::pair< double, std::pair< int, std::list< std::set< bool > > > > elem;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("val", i3);\n' ' cyclus::InfileTree* sub = bub;\n' ' double firsti3;\n' ' {\n' ' double firsti3_in = cyclus::Query<double>(sub, "first", 0);\n' ' firsti3 = firsti3_in;\n' ' }\n' ' std::pair< int, std::list< std::set< bool > > > secondi3;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("second", 0);\n' ' cyclus::InfileTree* sub = bub;\n' ' int first0;\n' ' {\n' ' int first0_in = cyclus::Query<int>(sub, "first", 0);\n' ' first0 = first0_in;\n' ' }\n' ' std::list< std::set< bool > > second0;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("second", 0);\n' ' cyclus::InfileTree* sub = bub;\n' ' int n4 = sub->NMatches("val");\n' ' std::list< std::set< bool > > second0_in;\n' ' for (int i4 = 0; i4 < n4; ++i4) {\n' ' std::set< bool > elem;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("val", i4);\n' ' cyclus::InfileTree* sub = bub;\n' ' int n5 = sub->NMatches("val");\n' ' std::set< bool > elem_in;\n' ' for (int i5 = 0; i5 < n5; ++i5) {\n' ' bool elem;\n' ' {\n' ' bool elem_in = cyclus::Query<bool>(sub, "val", i5);\n' ' elem = elem_in;\n' ' }\n' ' elem_in.insert(elem);\n' ' }\n' ' elem = elem_in;\n' ' }\n' ' second0_in.push_back(elem);\n' ' }\n' ' second0 = second0_in;\n' ' }\n' ' std::pair< int, std::list< std::set< bool > > > secondi3_in(first0, second0);\n' ' secondi3 = secondi3_in;\n' ' }\n' ' std::pair< double, std::pair< int, std::list< std::set< bool > > > > elem_in(firsti3, secondi3);\n' ' elem = elem_in;\n' ' }\n' ' elem_in[i3] = elem;\n' ' }\n' ' elem = elem_in;\n' ' }\n' ' val_in[i2] = elem;\n' ' }\n' ' val = val_in;\n' ' }\n' ' mymap_in[key] = val;\n' ' }\n' ' mymap = mymap_in;\n' ' }\n') ## useful for debugging test failures #print(gen) #print(exp_gen) yield assert_equal, exp_gen, gen
def test_infiletodb_read_member2(): m = MockCodeGenMachine() m.context = { "MyFactory": OrderedDict([('vars', OrderedDict([ ('x', { 'type': 'int', 'uitype': 'nuclide' }), ]))]) } f = InfileToDbFilter(m) alias = ['map', 'int', ['vector', ['pair', 'str1', 'str2']]] cpptype = ('std::map', 'int', ('std::vector', ('std::pair', 'std::string', 'std::string'))) gen = f.read_member('mymap', alias, cpptype, uitype=None) exp_gen = ( ' std::map< int, std::vector< std::pair< std::string, std::string > > > mymap;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("map", 0);\n' ' cyclus::InfileTree* sub = bub;\n' ' int n1 = sub->NMatches("item");\n' ' std::map< int, std::vector< std::pair< std::string, std::string > > > mymap_in;\n' ' for (int i1 = 0; i1 < n1; ++i1) {\n' ' int key;\n' ' {\n' ' int key_in = cyclus::Query<int>(sub, "item/int", i1);\n' ' key = key_in;\n' ' }\n' ' std::vector< std::pair< std::string, std::string > > val;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("item/vector", i1);\n' ' cyclus::InfileTree* sub = bub;\n' ' int n2 = sub->NMatches("pair");\n' ' std::vector< std::pair< std::string, std::string > > val_in;\n' ' val_in.resize(n2);\n' ' for (int i2 = 0; i2 < n2; ++i2) {\n' ' std::pair< std::string, std::string > elem;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("pair", i2);\n' ' cyclus::InfileTree* sub = bub;\n' ' std::string firsti2;\n' ' {\n' ' std::string firsti2_in = cyclus::Query<std::string>(sub, "str1", 0);\n' ' firsti2 = firsti2_in;\n' ' }\n' ' std::string secondi2;\n' ' {\n' ' std::string secondi2_in = cyclus::Query<std::string>(sub, "str2", 0);\n' ' secondi2 = secondi2_in;\n' ' }\n' ' std::pair< std::string, std::string > elem_in(firsti2, secondi2);\n' ' elem = elem_in;\n' ' }\n' ' val_in[i2] = elem;\n' ' }\n' ' val = val_in;\n' ' }\n' ' mymap_in[key] = val;\n' ' }\n' ' mymap = mymap_in;\n' ' }\n') # # useful for debugging test failures # print() # print(gen) # print(exp_gen) yield assert_equal, exp_gen, gen
def test_infiletodb_read_member2(): m = MockCodeGenMachine() m.context = {"MyFactory": OrderedDict([('vars', OrderedDict([ ('x', {'type': 'int', 'uitype': 'nuclide'}), ])) ])} f = InfileToDbFilter(m) alias = ['map', 'int', ['vector', ['pair', 'str1', 'str2']]] cpptype = ('std::map', 'int', ('std::vector', ('std::pair', 'std::string', 'std::string'))) gen = f.read_member('mymap', alias, cpptype, uitype=None) exp_gen = ( ' std::map< int, std::vector< std::pair< std::string, std::string > > > mymap;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("map", 0);\n' ' cyclus::InfileTree* sub = bub;\n' ' int n1 = sub->NMatches("item");\n' ' std::map< int, std::vector< std::pair< std::string, std::string > > > mymap_in;\n' ' for (int i1 = 0; i1 < n1; ++i1) {\n' ' int key;\n' ' {\n' ' int key_in = cyclus::Query<int>(sub, "item/int", i1);\n' ' key = key_in;\n' ' }\n' ' std::vector< std::pair< std::string, std::string > > val;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("item/vector", i1);\n' ' cyclus::InfileTree* sub = bub;\n' ' int n2 = sub->NMatches("pair");\n' ' std::vector< std::pair< std::string, std::string > > val_in;\n' ' val_in.resize(n2);\n' ' for (int i2 = 0; i2 < n2; ++i2) {\n' ' std::pair< std::string, std::string > elem;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("pair", i2);\n' ' cyclus::InfileTree* sub = bub;\n' ' std::string firsti2;\n' ' {\n' ' std::string firsti2_in = cyclus::Query<std::string>(sub, "str1", 0);\n' ' firsti2 = firsti2_in;\n' ' }\n' ' std::string secondi2;\n' ' {\n' ' std::string secondi2_in = cyclus::Query<std::string>(sub, "str2", 0);\n' ' secondi2 = secondi2_in;\n' ' }\n' ' std::pair< std::string, std::string > elem_in(firsti2, secondi2);\n' ' elem = elem_in;\n' ' }\n' ' val_in[i2] = elem;\n' ' }\n' ' val = val_in;\n' ' }\n' ' mymap_in[key] = val;\n' ' }\n' ' mymap = mymap_in;\n' ' }\n' ) # # useful for debugging test failures # print() # print(gen) # print(exp_gen) yield assert_equal, exp_gen, gen
def test_infiletodb_read_member1(): m = MockCodeGenMachine() m.context = {"MyFactory": OrderedDict([('vars', OrderedDict([ ('x', {'type': 'int', 'uitype': 'nuclide'}), ])) ])} f = InfileToDbFilter(m) cpptype = ('std::map', 'std::string', ('std::vector', ('std::vector', ('std::pair', 'double', ('std::pair', 'int', ('std::list', ('std::set', 'bool'))))))) alias = ['streams', 'name', ['efficiencies', 'val']] gen = f.read_member('mymap', alias, cpptype, uitype=None) exp_gen = ( ' std::map< std::string, std::vector< std::vector< std::pair< double, std::pair< int, std::list< std::set< bool > > > > > > > mymap;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("streams", 0);\n' ' cyclus::InfileTree* sub = bub;\n' ' int n1 = sub->NMatches("item");\n' ' std::map< std::string, std::vector< std::vector< std::pair< double, std::pair< int, std::list< std::set< bool > > > > > > > mymap_in;\n' ' for (int i1 = 0; i1 < n1; ++i1) {\n' ' std::string key;\n' ' {\n' ' std::string key_in = cyclus::Query<std::string>(sub, "item/name", i1);\n' ' key = key_in;\n' ' }\n' ' std::vector< std::vector< std::pair< double, std::pair< int, std::list< std::set< bool > > > > > > val;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("item/efficiencies", i1);\n' ' cyclus::InfileTree* sub = bub;\n' ' int n2 = sub->NMatches("val");\n' ' std::vector< std::vector< std::pair< double, std::pair< int, std::list< std::set< bool > > > > > > val_in;\n' ' val_in.resize(n2);\n' ' for (int i2 = 0; i2 < n2; ++i2) {\n' ' std::vector< std::pair< double, std::pair< int, std::list< std::set< bool > > > > > elem;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("val", i2);\n' ' cyclus::InfileTree* sub = bub;\n' ' int n3 = sub->NMatches("val");\n' ' std::vector< std::pair< double, std::pair< int, std::list< std::set< bool > > > > > elem_in;\n' ' elem_in.resize(n3);\n' ' for (int i3 = 0; i3 < n3; ++i3) {\n' ' std::pair< double, std::pair< int, std::list< std::set< bool > > > > elem;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("val", i3);\n' ' cyclus::InfileTree* sub = bub;\n' ' double firsti3;\n' ' {\n' ' double firsti3_in = cyclus::Query<double>(sub, "first", 0);\n' ' firsti3 = firsti3_in;\n' ' }\n' ' std::pair< int, std::list< std::set< bool > > > secondi3;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("second", 0);\n' ' cyclus::InfileTree* sub = bub;\n' ' int first0;\n' ' {\n' ' int first0_in = cyclus::Query<int>(sub, "first", 0);\n' ' first0 = first0_in;\n' ' }\n' ' std::list< std::set< bool > > second0;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("second", 0);\n' ' cyclus::InfileTree* sub = bub;\n' ' int n4 = sub->NMatches("val");\n' ' std::list< std::set< bool > > second0_in;\n' ' for (int i4 = 0; i4 < n4; ++i4) {\n' ' std::set< bool > elem;\n' ' {\n' ' cyclus::InfileTree* bub = sub->SubTree("val", i4);\n' ' cyclus::InfileTree* sub = bub;\n' ' int n5 = sub->NMatches("val");\n' ' std::set< bool > elem_in;\n' ' for (int i5 = 0; i5 < n5; ++i5) {\n' ' bool elem;\n' ' {\n' ' bool elem_in = cyclus::Query<bool>(sub, "val", i5);\n' ' elem = elem_in;\n' ' }\n' ' elem_in.insert(elem);\n' ' }\n' ' elem = elem_in;\n' ' }\n' ' second0_in.push_back(elem);\n' ' }\n' ' second0 = second0_in;\n' ' }\n' ' std::pair< int, std::list< std::set< bool > > > secondi3_in(first0, second0);\n' ' secondi3 = secondi3_in;\n' ' }\n' ' std::pair< double, std::pair< int, std::list< std::set< bool > > > > elem_in(firsti3, secondi3);\n' ' elem = elem_in;\n' ' }\n' ' elem_in[i3] = elem;\n' ' }\n' ' elem = elem_in;\n' ' }\n' ' val_in[i2] = elem;\n' ' }\n' ' val = val_in;\n' ' }\n' ' mymap_in[key] = val;\n' ' }\n' ' mymap = mymap_in;\n' ' }\n') ## useful for debugging test failures #print(gen) #print(exp_gen) yield assert_equal, exp_gen, gen