public void EqbSimpleEquivalence() { TypeFactory factory = new TypeFactory(); TypeStore store = new TypeStore(); EquivalenceClassBuilder eqb = new EquivalenceClassBuilder(factory, store); Identifier id1 = new Identifier("id2", PrimitiveType.Word32, null); Identifier id2 = new Identifier("id2", PrimitiveType.Word32, null); Assignment ass = new Assignment(id1, id2); ass.Accept(eqb); Assert.IsNotNull(id1); Assert.IsNotNull(id2); Assert.AreEqual(2, id1.TypeVariable.Number, "id1 type number"); Assert.AreEqual(2, id1.TypeVariable.Number, "id2 type number"); Assert.AreEqual(id1.TypeVariable.Class, id2.TypeVariable.Class); }
public void EqbSimpleEquivalence() { TypeFactory factory = new TypeFactory(); TypeStore store = new TypeStore(); EquivalenceClassBuilder eqb = new EquivalenceClassBuilder(factory, store, listener); Identifier id1 = new Identifier("id2", PrimitiveType.Word32, null); Identifier id2 = new Identifier("id2", PrimitiveType.Word32, null); Assignment ass = new Assignment(id1, id2); ass.Accept(eqb); Assert.IsNotNull(id1); Assert.IsNotNull(id2); Assert.AreEqual(2, id1.TypeVariable.Number, "id1 type number"); Assert.AreEqual(2, id1.TypeVariable.Number, "id2 type number"); Assert.AreEqual(id1.TypeVariable.Class, id2.TypeVariable.Class); }
public void DtbRepeatedLoads() { Identifier pfoo = new Identifier("pfoo", PrimitiveType.Word32, null); Identifier x = new Identifier("x", PrimitiveType.Word32, null); Assignment ass1 = new Assignment(x, MemLoad(pfoo, 4, PrimitiveType.Word32)); Assignment ass2 = new Assignment(x, MemLoad(pfoo, 4, PrimitiveType.Word32)); ass1.Accept(eqb); ass2.Accept(eqb); TraitCollector trco = new TraitCollector(factory, store, dtb, program); trco.VisitAssignment(ass1); trco.VisitAssignment(ass2); dtb.BuildEquivalenceClassDataTypes(); Verify("Typing/DtbRepeatedLoads.txt"); }
public void DtbSameMemFetch() { Identifier foo = new Identifier("foo", PrimitiveType.Word32, null); Identifier bar = new Identifier("bar", PrimitiveType.Word16, null); Identifier baz = new Identifier("baz", PrimitiveType.Word16, null); Assignment ass1 = new Assignment(bar, MemLoad(foo, 4, PrimitiveType.Word16)); Assignment ass2 = new Assignment(baz, MemLoad(foo, 4, PrimitiveType.Word16)); ass1.Accept(eqb); ass2.Accept(eqb); TraitCollector trco = new TraitCollector(factory, store, dtb, program); trco.VisitAssignment(ass1); trco.VisitAssignment(ass2); dtb.BuildEquivalenceClassDataTypes(); Verify("Typing/DtbSameMemFetch.txt"); }
public void DtbSameMemFetch() { Identifier foo = new Identifier("foo", PrimitiveType.Word32, null); Identifier bar = new Identifier("bar", PrimitiveType.Word16, null); Identifier baz = new Identifier("baz", PrimitiveType.Word16, null); Assignment ass1 = new Assignment(bar, MemLoad(foo, 4, PrimitiveType.Word16)); Assignment ass2 = new Assignment(baz, MemLoad(foo, 4, PrimitiveType.Word16)); ass1.Accept(eqb); ass2.Accept(eqb); TraitCollector trco = new TraitCollector(factory, store, dtb, prog); trco.VisitAssignment(ass1); trco.VisitAssignment(ass2); dtb.BuildEquivalenceClassDataTypes(); Verify("Typing/DtbSameMemFetch.txt"); }
public void DtbRepeatedLoads() { Identifier pfoo = new Identifier("pfoo", PrimitiveType.Word32, null); Identifier x = new Identifier("x", PrimitiveType.Word32, null); Assignment ass1 = new Assignment(x, MemLoad(pfoo, 4, PrimitiveType.Word32)); Assignment ass2 = new Assignment(x, MemLoad(pfoo, 4, PrimitiveType.Word32)); ass1.Accept(eqb); ass2.Accept(eqb); TraitCollector trco = new TraitCollector(factory, store, dtb, prog); trco.VisitAssignment(ass1); trco.VisitAssignment(ass2); dtb.BuildEquivalenceClassDataTypes(); Verify("Typing/DtbRepeatedLoads.txt"); }
public void VisitorWithReturnIsImplemented() { var sut = new Assignment(); sut.Accept(23).VerifyWithReturn(v => v.Visit(sut, 23)); }