Esempio n. 1
0
        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());
        }