def test_type_variables_complex(self): r1 = types.Record() r1.add_field("foo") r1.add_field("bar") r2 = types.Record() r2.add_field("baz") function = types.Function.for_multiple_inputs( [r1, r2], types.UnconstrainedType()) self.assertEqual( function.as_signature(codegen.Module()), "{ a | bar : b, foo : c } -> { d | baz : e } -> f", )
def test_record_update(self): rec = types.Record() rec.add_field("name", dtypes.String) rec.add_field("age", dtypes.Number) rec.add_field("height", dtypes.Number) scope = codegen.Scope() tmp = scope.reserve_name("tmp", type=rec) var = scope.variables[tmp] update = codegen.RecordUpdate(var, name=codegen.String("Fred"), age=codegen.Number(34)) self.assertCodeEqual( update.as_source_code(), """ { tmp | age = 34, name = "Fred" } """, )
def test_one_field_record_signature(self): r = types.Record() r.add_field("foo", type_obj=dtypes.String) self.assertEqual(r.as_signature(codegen.Module()), "{ a | foo : String }")
def test_empty_record_signature_in_function(self): function = types.Function(types.Record(), types.UnconstrainedType()) self.assertEqual(function.as_signature(codegen.Module()), "a -> b")
def test_empty_record_signature(self): self.assertEqual(types.Record().as_signature(codegen.Module()), "a")
def test_one_field_fixed_record_signature(self): r = types.Record(foo=dtypes.String) self.assertEqual(r.as_signature(codegen.Module()), "{ foo : String }")