Exemple #1
0
        public void StrFldMerger_EmptyStruct()
        {
            StructureType str = new StructureType("foo", 0);
            var           sfm = new StructureFieldMerger(str);
            DataType      dt  = sfm.Merge();

            Assert.AreEqual("(struct \"foo\")", dt.ToString());
        }
Exemple #2
0
        public void StrFldMerger_SingleMember()
        {
            StructureType str = new StructureType("foo", 0);

            str.Fields.Add(4, PrimitiveType.Word16);
            var      sfm = new StructureFieldMerger(str);
            DataType dt  = sfm.Merge();

            Assert.AreEqual("(struct \"foo\" (4 word16 w0004))", dt.ToString());
        }
Exemple #3
0
        public void StrFldMerger_FindOverlappingCluster()
        {
            StructureType str = new StructureType("foo", 0);

            str.Fields.Add(2, PrimitiveType.Word32);
            str.Fields.Add(4, PrimitiveType.Word32);
            var sfm = new StructureFieldMerger(str);

            foreach (List <StructureField> cluster in sfm.GetOverlappingClusters(str.Fields))
            {
                Assert.AreEqual(2, cluster.Count);
            }
        }
Exemple #4
0
        public void StrFldMerger_Merge()
        {
            StructureType    str = new StructureType("foo", 0);
            UnionType        u   = new UnionType(null, null, PrimitiveType.Ptr32, PrimitiveType.Word16);
            EquivalenceClass eq  = Eqv(u);

            str.Fields.Add(2, eq);
            str.Fields.Add(4, PrimitiveType.SegmentSelector);
            var           sfm    = new StructureFieldMerger(str);
            StructureType strNew = sfm.Merge();

            Assert.AreEqual("(struct \"foo\" (2 (union (ptr32 u0) ((struct (0 word16 w0000) (2 selector pseg0002)) u1)) u0002))", strNew.ToString());
        }
Exemple #5
0
        public void StrFldMerger_BuildOverlappedStructure()
        {
            List <StructureField> fields = new List <StructureField>();

            fields.Add(new StructureField(0, PrimitiveType.Ptr32));
            fields.Add(new StructureField(0, PrimitiveType.Word16));
            fields.Add(new StructureField(2, PrimitiveType.SegmentSelector));

            var      sfm = new StructureFieldMerger(new StructureType());
            DataType dt  = sfm.BuildOverlappedStructure(fields);

            Assert.AreEqual("(union (ptr32 u0) ((struct (0 word16 w0000) (2 selector pseg0002)) u1))", dt.ToString());
        }
Exemple #6
0
        public void StrFldMerger_FindOverLappingClusterWithEqv()
        {
            StructureType    str = new StructureType("foo", 0);
            UnionType        u   = new UnionType(null, null, PrimitiveType.Ptr32, PrimitiveType.Word16);
            EquivalenceClass eq  = Eqv(u);

            str.Fields.Add(2, eq);
            str.Fields.Add(4, PrimitiveType.SegmentSelector);

            var sfm = new StructureFieldMerger(str);
            IEnumerable <List <StructureField> > eb = sfm.GetOverlappingClusters(str.Fields);
            IEnumerator <List <StructureField> > e  = eb.GetEnumerator();

            Assert.IsTrue(e.MoveNext());
            Assert.AreEqual(3, e.Current.Count);
            List <StructureField> cluster = e.Current;
        }
 public void Setup()
 {
     factory = new TypeFactory();
     sfm     = new StructureFieldMerger();
 }