def test_statements_in_module_body_are_transformed(self): module_node = nodes.module([nodes.expression_statement(nodes.ref("value"))], is_executable=True) module_type = types.module("blah", []) _assert_transform( module_node, cc.module([cc.expression_statement(cc.ref("value"))], is_executable=True, exported_names=[]), type_lookup=[(module_node, module_type)] )
def non_executable_module_adds_value_to_modules_object(self): node = cc.module([], is_executable=False, exported_names=["x"]) module = LocalModule("blah.py", node) expected = """internal class Module__blah_py { internal static dynamic Init() { dynamic __module = new System.Dynamic.ExpandoObject(); __module.x = x; return __module; } } """ assert_equal(expected, cs.dumps(transform(module)))
def executable_module_is_converted_to_class_with_main_method(self): node = cc.module([ cc.expression_statement(cc.call(cc.ref("f"), [])) ], is_executable=True) module = LocalModule("blah.py", node) expected = """internal class Program { internal static void Main() { f(); } } """ assert_equal(expected, cs.dumps(transform(module)))
def test_transform_module_with_exports(): _assert_transform( cc.module([ cc.declare("__all__"), cc.declare("x"), cc.assign(cc.ref("__all__"), cc.list_literal([cc.str_literal("x")])), cc.assign(cc.ref("x"), cc.none) ], exported_names=["x"]), """ var __all__; var x; __all__ = ["x"]; x = null; $exports.x = x; """ )
def test_module_exports_are_set_directly_on_module(self): module_node = nodes.module( [nodes.assign([nodes.ref("value")], nodes.none())], is_executable=False ) module_type = types.module("blah", [types.attr("value", types.none_type)]) _assert_transform( module_node, cc.module( [ cc.declare("value"), cc.assign(cc.ref("value"), cc.none) ], is_executable=False, exported_names=["value"], ), type_lookup=[(module_node, module_type)] )
def test_transform_module(): _assert_transform( cc.module([cc.expression_statement(cc.ref("x"))], is_executable=False, exported_names=[]), js.statements([js.expression_statement(js.ref("x"))]) )
def auxiliary_definitions_are_included_in_module(self): node = cc.module([cc.class_("A", methods=[], body=[])], is_executable=True) module = LocalModule("blah.py", node) assert_in("class __A", cs.dumps(transform(module)))