Example #1
0
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
Example #2
0
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
Example #3
0
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
Example #4
0
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
Example #5
0
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
Example #6
0
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