public void TtranUnion() { UnionType ut = factory.CreateUnionType("foo", null); ut.AddAlternative(PrimitiveType.Word32); ut.AddAlternative(PrimitiveType.Word32); ut.AddAlternative(PrimitiveType.Word32); ut.AddAlternative(PrimitiveType.Word32); TypeTransformer trans = new TypeTransformer(factory, null, null); PrimitiveType dt = (PrimitiveType)ut.Accept(trans); Assert.AreEqual("word32", dt.ToString()); ut.AddAlternative(PrimitiveType.Real32); ut.AddAlternative(PrimitiveType.Int32); DataType d = ut.Accept(trans); Assert.AreEqual("(union \"foo\" (int32 u0) (real32 u1))", d.ToString()); }
public void ArrayOfUnions() { var ut = new UnionType(null, null, false); ut.AddAlternative(PrimitiveType.Word32); ut.AddAlternative(PrimitiveType.Real64); ArrayType a = new ArrayType(ut, 0); TypeVariable tv = store.CreateTypeVariable(factory); tv.Class.DataType = a; Assert.AreEqual(1, store.UsedEquivalenceClasses.Count); tv.Class.DataType.Accept(nct); Assert.AreEqual(2, store.UsedEquivalenceClasses.Count); Assert.AreEqual( "(arr Eq_2)", store.UsedEquivalenceClasses[0].DataType.ToString()); Assert.AreEqual( "(union (real64 u1) (word32 u0))", store.UsedEquivalenceClasses[1].DataType.ToString()); }