def test_nuclide_uitype(): m = MockCodeGenMachine() m.context = {"MyFactory": OrderedDict([('vars', OrderedDict([ ('x', {'type': 'int', 'uitype': 'nuclide'}), ])) ])} # test schema is set to string f = SchemaFilter(m) f.given_classname = 'MyFactory' impl = f.impl() exp_impl = (' return ""\n' ' "<interleave>\\n"\n' ' " <element name=\\"x\\">\\n"\n' ' " <data type=\\"string\\"/>\\n"\n' ' " </element>\\n"\n' ' "</interleave>\\n";\n') yield assert_equal, exp_impl, impl # test infiletodb updates f = InfileToDbFilter(m) f.given_classname = 'MyFactory' impl = f.impl() exp_impl = ' cyclus::InfileTree* sub = tree->SubTree("config/*");\n int i;\n int n;\n {\n int x_val = pyne::nucname::id(cyclus::Query<std::string>(sub, "x"));\n x = x_val;\n }\n di.NewDatum("Info")\n ->AddVal("x", x)\n ->Record();\n' yield assert_equal, exp_impl, impl # test bad uitypes values fail m.context = {"MyFactory": OrderedDict([('vars', OrderedDict([ ('x', {'type': 'int', 'uitype': 'WRONG'}), ])) ])} f = SchemaFilter(m) f.given_classname = 'MyFactory' yield assert_raises, TypeError, f.impl
def test_nuclide_uitype(): m = MockCodeGenMachine() m.context = { "MyFactory": OrderedDict([('vars', OrderedDict([ ('x', { 'type': 'int', 'uitype': 'nuclide' }), ]))]) } # test schema is set to string f = SchemaFilter(m) f.given_classname = 'MyFactory' impl = f.impl() exp_impl = (' return ""\n' ' "<interleave>\\n"\n' ' "<element name=\\"x\\">\\n"\n' ' " <data type=\\"string\\" />\\n"\n' ' "</element>\\n"\n' ' "</interleave>\\n"\n ;\n') yield assert_equal, exp_impl, impl # test infiletodb updates f = InfileToDbFilter(m) f.given_classname = 'MyFactory' impl = f.impl() exp_impl = ( ' tree = tree->SubTree("config/*");\n' ' cyclus::InfileTree* sub;\n' ' int i;\n' ' int n;\n' ' x = pyne::nucname::id(cyclus::Query<std::string>(tree, "x"));\n' ' di.NewDatum("Info")\n' ' ->AddVal("x", x)\n' ' ->Record();\n') yield assert_equal, exp_impl, impl # test bad uitypes values fail m.context = { "MyFactory": OrderedDict([('vars', OrderedDict([ ('x', { 'type': 'int', 'uitype': 'WRONG' }), ]))]) } f = SchemaFilter(m) f.given_classname = 'MyFactory' yield assert_raises, TypeError, f.impl
def test_schemafilter(): """Test SchemaFilter""" m = MockCodeGenMachine() f = SchemaFilter(m) f.given_classname = 'MyFactory' args = f.methodargs() exp_args = "" yield assert_equal, exp_args, args impl = f.impl() exp_impl = (' return ""\n' ' "<interleave>\\n"\n' ' " <element name=\\"x\\">\\n"\n' ' " <data type=\\"positiveInteger\\"/>\\n"\n' ' " </element>\\n"\n' ' " FREAK OUT\\n"\n' ' "</interleave>\\n";\n') yield assert_equal, exp_impl, impl # schema type tests yield assert_equal, 'string', f._type('std::string') yield assert_equal, 'boolean', f._type('bool') yield assert_equal, 'token', f._type('std::string', 'token') m.context = { "MyFactory": OrderedDict([('vars', OrderedDict([ ('x', { 'type': ('std::map', 'int', 'double') }), ]))]) } impl = f.impl() exp_impl = (' return ""\n' ' "<interleave>\\n"\n' ' " <element name=\\"x\\">\\n"\n' ' " <oneOrMore>\\n"\n' ' " <element name=\\"item\\">\\n"\n' ' " <interleave>\\n"\n' ' " <element name=\\"key\\">\\n"\n' ' " <data type=\\"int\\"/>\\n"\n' ' " </element>\\n"\n' ' " <element name=\\"val\\">\\n"\n' ' " <data type=\\"double\\"/>\\n"\n' ' " </element>\\n"\n' ' " </interleave>\\n"\n' ' " </element>\\n"\n' ' " </oneOrMore>\\n"\n' ' " </element>\\n"\n' ' "</interleave>\\n";\n') yield assert_equal, exp_impl, impl
def test_schemafilter(): """Test SchemaFilter""" m = MockCodeGenMachine() f = SchemaFilter(m) f.given_classname = 'MyFactory' args = f.methodargs() exp_args = "" yield assert_equal, exp_args, args impl = f.impl() exp_impl = (' return ""\n' ' "<interleave>\\n"\n' ' " <element name=\\"x\\">\\n"\n' ' " <data type=\\"positiveInteger\\"/>\\n"\n' ' " </element>\\n"\n' ' " FREAK OUT\\n"\n' ' "</interleave>\\n";\n') yield assert_equal, exp_impl, impl # schema type tests yield assert_equal, 'string', f._type('std::string') yield assert_equal, 'boolean', f._type('bool') yield assert_equal, 'token', f._type('std::string', 'token') m.context = {"MyFactory": OrderedDict([('vars', OrderedDict([ ('x', {'type': ('std::map', 'int', 'double')}), ])) ])} impl = f.impl() exp_impl = ( ' return ""\n' ' "<interleave>\\n"\n' ' " <element name=\\"x\\">\\n"\n' ' " <oneOrMore>\\n"\n' ' " <element name=\\"item\\">\\n"\n' ' " <interleave>\\n"\n' ' " <element name=\\"key\\">\\n"\n' ' " <data type=\\"int\\"/>\\n"\n' ' " </element>\\n"\n' ' " <element name=\\"val\\">\\n"\n' ' " <data type=\\"double\\"/>\\n"\n' ' " </element>\\n"\n' ' " </interleave>\\n"\n' ' " </element>\\n"\n' ' " </oneOrMore>\\n"\n' ' " </element>\\n"\n' ' "</interleave>\\n";\n') yield assert_equal, exp_impl, impl
def test_internal_schema(): cases = [ {'params': {'internal': True, 'default': 7}, 'want': ' return ""\n "<interleave/>\\n";\n' }, {'params': {'derived_init': 'x *= 42;'}, 'want': (' return ""\n' ' "<interleave>\\n"\n' ' " <element name=\\"x\\">\\n"\n' ' " <data type=\\"int\\"/>\\n"\n' ' " </element>\\n"\n' ' "</interleave>\\n";\n') }, {'params': {'derived_init': 'x *= 42;', 'default': 7}, 'want': (' return ""\n' ' "<interleave>\\n"\n' ' " <optional>\\n"\n' ' " <element name=\\"x\\">\\n"\n' ' " <data type=\\"int\\"/>\\n"\n' ' " </element>\\n"\n' ' " </optional>\\n"\n' ' "</interleave>\\n";\n') }, {'params': {'internal': True, 'derived_init': 'x *= 42;', 'default': 7}, 'want': ' return ""\n "<interleave/>\\n";\n' }, ] for i, case in enumerate(cases): keys = case['params'].copy() m = MockCodeGenMachine() params = {'type': 'int'} params.update(keys) m.context = {"MyFactory": OrderedDict([('vars', OrderedDict([ ('x', params), ]))])} f = SchemaFilter(m) f.given_classname = 'MyFactory' impl = f.impl() want = case['want'] msg = 'case {0} failed\n ---- got ----\n {1}\n ---- want ----\n {2}'.format(i + 1, impl.replace('\n', '\n '), want.replace('\n', '\n ')) if want != impl: pprint.pprint(impl) assert_true(False, msg)
def test_schemafilter(): """Test SchemaFilter""" m = MockCodeGenMachine() f = SchemaFilter(m) f.given_classname = 'MyFactory' args = f.methodargs() exp_args = "" yield assert_equal, exp_args, args impl = f.impl() exp_impl = (' return ""\n' ' "<interleave>\\n"\n' ' "<element name=\\"x\\">\\n"\n' ' " <data type=\\"int\\" />\\n"\n' ' "</element>\\n"\n' "FREAK OUT\n" ' "</interleave>\\n"\n ;\n') yield assert_equal, exp_impl, impl
def test_internal_schema(): cases = [ { 'params': { 'internal': True, 'default': 7 }, 'want': ' return ""\n "<interleave/>\\n";\n' }, { 'params': { 'derived_init': 'x *= 42;' }, 'want': (' return ""\n' ' "<interleave>\\n"\n' ' " <element name=\\"x\\">\\n"\n' ' " <data type=\\"int\\"/>\\n"\n' ' " </element>\\n"\n' ' "</interleave>\\n";\n') }, { 'params': { 'derived_init': 'x *= 42;', 'default': 7 }, 'want': (' return ""\n' ' "<interleave>\\n"\n' ' " <optional>\\n"\n' ' " <element name=\\"x\\">\\n"\n' ' " <data type=\\"int\\"/>\\n"\n' ' " </element>\\n"\n' ' " </optional>\\n"\n' ' "</interleave>\\n";\n') }, { 'params': { 'internal': True, 'derived_init': 'x *= 42;', 'default': 7 }, 'want': ' return ""\n "<interleave/>\\n";\n' }, ] for i, case in enumerate(cases): keys = case['params'].copy() m = MockCodeGenMachine() params = {'type': 'int'} params.update(keys) m.context = { "MyFactory": OrderedDict([('vars', OrderedDict([ ('x', params), ]))]) } f = SchemaFilter(m) f.given_classname = 'MyFactory' impl = f.impl() want = case['want'] msg = 'case {0} failed\n ---- got ----\n {1}\n ---- want ----\n {2}'.format( i + 1, impl.replace('\n', '\n '), want.replace('\n', '\n ')) if want != impl: pprint.pprint(impl) assert_true(False, msg)