Ejemplo n.º 1
0
        [Test] public void ParsePlugin()
        {
            var parser = new StructParser();
            var file   = parser.LoadStructs("plugin MyPlugin;");

            Assert.AreEqual(1, file.PluginFileNames.Count);
        }
Ejemplo n.º 2
0
 public void EndPosition()
 {
     StructFile file = new StructParser().LoadStructs("struct A {\r\nx32 a;    u32 b;}");
     TextPosition endPos = file.Structs[0].Fields[0].EndPosition;
     Assert.AreEqual(2, endPos.Line);
     Assert.AreEqual(6, endPos.Col);
 }
Ejemplo n.º 3
0
 public void BadStructAttr()
 {
     StructParser parser = new StructParser();
     parser.LoadStructs("[someshit] struct A { }");
     Assert.AreEqual(1, parser.Errors.Count);
     Assert.AreEqual("Unknown attribute someshit", parser.Errors[0].Message);
 }
Ejemplo n.º 4
0
        private void ParseStructures()
        {
            StructParser parser = new StructParser();

            try
            {
                StructSourceContext context = new StructSourceContext();
                context.BaseDirectory = Path.GetDirectoryName(_structFileName);
                context.AddSourceText(_structFileName, _structEditControl.Text);
                _structFile = parser.LoadStructs(_structFileName, context);
            }
            catch (ParseException ex)
            {
                MessageBox.Show(this, "Error in " + ex.Position + ": " + ex.Message);
                List <ParseException> list = new List <ParseException>();
                list.Add(ex);
                HighlightErrors(list.AsReadOnly());
                return;
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, "Error loading structures: " + ex.Message);
            }
            HighlightErrors(parser.Errors);
            if (parser.Errors.Count > 0)
            {
                ParseException ex = parser.Errors[0];
                MessageBox.Show(this, "Error in " + ex.Position + ": " + ex.Message);
            }
        }
Ejemplo n.º 5
0
 public void Alias()
 {
     StructFile structFile = new StructParser().LoadStructs("alias str [len=8] resref; struct A { resref r; }");
     StructField field = structFile.Structs [0].Fields [0];
     Assert.IsInstanceOfType(typeof(StrField), field);
     Assert.AreEqual(8, field.GetExpressionAttribute("len").EvaluateInt(null));
 }
Ejemplo n.º 6
0
        [Test] public void UnknownField()
        {
            StructParser parser = new StructParser();

            parser.LoadStructs("struct A { someshit a; othershit b; }");
            Assert.AreEqual(2, parser.Errors.Count);
        }
Ejemplo n.º 7
0
 public void EnumWithValue()
 {
     StructFile structFile = new StructParser().LoadStructs("enum a { b=5, c=8 }");
     EnumDef enumDef = structFile.GetEnumByName("a");
     Assert.AreEqual("b", enumDef.ValueToString(5));
     Assert.AreEqual("c", enumDef.ValueToString(8));
 }
Ejemplo n.º 8
0
        [Test] public void StructWithAttributes()
        {
            StructFile structFile = new StructParser().LoadStructs("[filemask=\"*.bmp\"] struct BITMAPFILEHEADER { }");
            StructDef  structDef  = structFile.Structs[0];

            Assert.AreEqual("*.bmp", structDef.FileMask);
        }
Ejemplo n.º 9
0
        [Test] public void FieldGroup()
        {
            StructFile structFile = new StructParser().LoadStructs("struct a { repeat(8) { u8; } }");
            StructDef  structDef  = structFile.Structs[0];

            Assert.AreEqual(1, structDef.Fields[0].ChildFields.Count);
        }
Ejemplo n.º 10
0
        [Test] public void InvalidSiblingStruct()
        {
            StructParser parser = new StructParser();

            parser.LoadStructs("struct A { u8 a; if (a > 0) { sibling NoSuchStruct; } }");
            Assert.AreEqual(1, parser.Errors.Count);
            Assert.AreEqual("Unknown struct NoSuchStruct", parser.Errors [0].Message);
        }
Ejemplo n.º 11
0
        [Test] public void Alias()
        {
            StructFile  structFile = new StructParser().LoadStructs("alias str [len=8] resref; struct A { resref r; }");
            StructField field      = structFile.Structs [0].Fields [0];

            Assert.IsInstanceOfType(typeof(StrField), field);
            Assert.AreEqual(8, field.GetExpressionAttribute("len").EvaluateInt(null));
        }
Ejemplo n.º 12
0
        [Test] public void IncludeNonExisting()
        {
            StructParser parser = new StructParser();

            parser.LoadStructs("struct A { include B; }");
            Assert.AreEqual(1, parser.Errors.Count);
            Assert.AreEqual("Unknown struct B", parser.Errors[0].Message);
        }
Ejemplo n.º 13
0
 public void Enum()
 {
     StructFile structFile = new StructParser().LoadStructs("enum a { b, c }");
     EnumDef enumDef = structFile.GetEnumByName("a");
     Assert.IsNotNull(enumDef);
     Assert.AreEqual("b", enumDef.ValueToString(0));
     Assert.AreEqual("c", enumDef.ValueToString(1));
 }
Ejemplo n.º 14
0
 public void EnumNotExisting()
 {
     StructParser parser = new StructParser();
     parser.LoadStructs("struct A { enum8 a [enum=EEEEE]; }");
     Assert.AreEqual(1, parser.Errors.Count);
     Assert.AreEqual("Unknown enum EEEEE", parser.Errors[0].Message);
     Assert.AreEqual(5, parser.Errors [0].Length);
 }
Ejemplo n.º 15
0
        [Test] public void EnumWithValue()
        {
            StructFile structFile = new StructParser().LoadStructs("enum a { b=5, c=8 }");
            EnumDef    enumDef    = structFile.GetEnumByName("a");

            Assert.AreEqual("b", enumDef.ValueToString(5));
            Assert.AreEqual("c", enumDef.ValueToString(8));
        }
Ejemplo n.º 16
0
        [Test] public void BadStructAttr()
        {
            StructParser parser = new StructParser();

            parser.LoadStructs("[someshit] struct A { }");
            Assert.AreEqual(1, parser.Errors.Count);
            Assert.AreEqual("Unknown attribute someshit", parser.Errors[0].Message);
        }
Ejemplo n.º 17
0
        [Test] public void EndPosition()
        {
            StructFile   file   = new StructParser().LoadStructs("struct A {\r\nx32 a;    u32 b;}");
            TextPosition endPos = file.Structs[0].Fields[0].EndPosition;

            Assert.AreEqual(2, endPos.Line);
            Assert.AreEqual(6, endPos.Col);
        }
Ejemplo n.º 18
0
        [Test] public void ParseSingleFieldStruct()
        {
            StructParser parser     = new StructParser();
            StructFile   structFile = parser.LoadStructs("struct BITMAPINFOHEADER { u32 biSize; }");
            StructDef    structDef  = structFile.Structs[0];

            Assert.AreEqual(1, structDef.Fields.Count);
            Assert.AreEqual("biSize", structDef.Fields[0].Tag);
        }
Ejemplo n.º 19
0
        [Test] public void Enum()
        {
            StructFile structFile = new StructParser().LoadStructs("enum a { b, c }");
            EnumDef    enumDef    = structFile.GetEnumByName("a");

            Assert.IsNotNull(enumDef);
            Assert.AreEqual("b", enumDef.ValueToString(0));
            Assert.AreEqual("c", enumDef.ValueToString(1));
        }
Ejemplo n.º 20
0
        public void Decode_ComplexParserObject_ShouldBeCorrect()
        {
            var input    = ComplexParserObject.ExampleInput;
            var expected = ComplexParserObject.ExampleExpected;

            var actual = StructParser.Decode <ComplexParserObject>(input);

            actual.Should().BeEquivalentTo(expected);
        }
Ejemplo n.º 21
0
        [Test] public void EnumNotExisting()
        {
            StructParser parser = new StructParser();

            parser.LoadStructs("struct A { enum8 a [enum=EEEEE]; }");
            Assert.AreEqual(1, parser.Errors.Count);
            Assert.AreEqual("Unknown enum EEEEE", parser.Errors[0].Message);
            Assert.AreEqual(5, parser.Errors [0].Length);
        }
Ejemplo n.º 22
0
        [Test] public void ParseSingleEmptyStruct()
        {
            StructParser parser     = new StructParser();
            StructFile   structFile = parser.LoadStructs("struct BITMAPINFOHEADER { }");

            Assert.AreEqual(1, structFile.Structs.Count);
            StructDef structDef = structFile.Structs[0];

            Assert.AreEqual("BITMAPINFOHEADER", structDef.Name);
        }
Ejemplo n.º 23
0
        [Test] public void ParseFieldWithAttributes()
        {
            StructParser parser     = new StructParser();
            StructFile   structFile = parser.LoadStructs("struct BITMAPFILEHEADER { str [len=2] bfType; }");
            StructDef    structDef  = structFile.Structs[0];

            Assert.AreEqual(1, structDef.Fields.Count);
            Assert.IsInstanceOfType(typeof(StrField), structDef.Fields [0]);
            StrField field = (StrField)structDef.Fields[0];

            Assert.AreEqual("bfType", field.Tag);
            Assert.AreEqual("2", field.GetExpressionAttribute("len").ToString());
        }
Ejemplo n.º 24
0
        [Test] public void IncludeStructFile()
        {
            StructSourceContext context = new StructSourceContext();

            context.AddSourceText("a.strs", "include b.strs; struct A { enum8 [enum=E] q; }");
            context.AddSourceText("b.strs", "enum E { z, x, c }");
            StructParser parser = new StructParser();
            StructFile   file   = parser.LoadStructs("a.strs", context);

            Assert.IsNotNull(file);
            Assert.AreEqual(0, parser.Errors.Count);
            EnumDef e = file.GetEnumByName("E");

            Assert.AreEqual("c", e.ValueToString(2));
        }
Ejemplo n.º 25
0
        protected static string parseForXref(ParseContext2 context, UnkRec.ErrorCode errVal = UnkRec.ErrorCode.MissIdent)
        {
            string xref;
            string extra;

            StructParser.parseXrefExtra(context.Remain, out xref, out extra);
            if (string.IsNullOrEmpty(xref))
            {
                UnkRec err = new UnkRec();
                err.Error = errVal;
                err.Beg   = err.End = context.Begline + context.Parent.BegLine;
                err.Tag   = context.Tag;
                context.Parent.Errors.Add(err);
            }
            return(xref);
        }
Ejemplo n.º 26
0
        private static InstanceTree PrepareInstanceTree(string structDefs, byte[] data)
        {
            StructParser parser     = new StructParser();
            StructFile   structFile = parser.LoadStructs(structDefs);

            if (structFile == null && parser.Errors.Count > 0)
            {
                Assert.IsTrue(false, parser.Errors[0].Message);
            }
            else
            {
                Assert.IsNotNull(structFile);
            }
            MemoryStream dataStream = new MemoryStream(data);

            return(structFile.Structs[0].LoadData(dataStream));
        }
Ejemplo n.º 27
0
        public void Decode_SampleStruct_ShouldBeCorrect()
        {
            var input = "33:1~8:444";

            var actual = StructParser.Decode <StructSample>(input);

            var expected = new StructSample()
            {
                FirstObject = new ObjectSample()
                {
                    X = 1
                },
                SecondObject = new LargeObject()
                {
                    x8 = 444
                }
            };

            actual.Should().BeEquivalentTo(expected);
        }
Ejemplo n.º 28
0
        public void Test6()
        {
            CField f6 = StructParser.parseLine("OMX_VIDEO_AVCLoopFilterEnable = 0,");

            Assert.AreEqual(f6, new CField("", "OMX_VIDEO_AVCLoopFilterEnable", ""));
        }
Ejemplo n.º 29
0
        public void Test7()
        {
            CField f7 = StructParser.parseLine("OMX_U32 nSize;                    /**< Size of this structure, in Bytes */ ");

            Assert.AreEqual(f7, new CField("OMX_U32", "nSize", "Size of this structure, in Bytes"));
        }
Ejemplo n.º 30
0
 private static InstanceTree PrepareInstanceTree(string structDefs, byte[] data)
 {
     StructParser parser = new StructParser();
     StructFile structFile = parser.LoadStructs(structDefs);
     if (structFile == null && parser.Errors.Count > 0)
     {
         Assert.IsTrue(false, parser.Errors[0].Message);
     }
     else
     {
         Assert.IsNotNull(structFile);
     }
     MemoryStream dataStream = new MemoryStream(data);
     return structFile.Structs[0].LoadData(dataStream);
 }
Ejemplo n.º 31
0
 public void IncludeNonExisting()
 {
     StructParser parser = new StructParser();
     parser.LoadStructs("struct A { include B; }");
     Assert.AreEqual(1, parser.Errors.Count);
     Assert.AreEqual("Unknown struct B", parser.Errors[0].Message);
 }
Ejemplo n.º 32
0
 public void IncludeStructFile()
 {
     StructSourceContext context = new StructSourceContext();
     context.AddSourceText("a.strs", "include b.strs; struct A { enum8 [enum=E] q; }");
     context.AddSourceText("b.strs", "enum E { z, x, c }");
     StructParser parser = new StructParser();
     StructFile file = parser.LoadStructs("a.strs", context);
     Assert.IsNotNull(file);
     Assert.AreEqual(0, parser.Errors.Count);
     EnumDef e = file.GetEnumByName("E");
     Assert.AreEqual("c", e.ValueToString(2));
 }
Ejemplo n.º 33
0
 public void FieldGroup()
 {
     StructFile structFile = new StructParser().LoadStructs("struct a { repeat(8) { u8; } }");
     StructDef structDef = structFile.Structs[0];
     Assert.AreEqual(1, structDef.Fields[0].ChildFields.Count);
 }
Ejemplo n.º 34
0
        public void Test3()
        {
            CField f3 = StructParser.parseLine("OMX_IndexAudioStartUnused = 0x04000000,");

            Assert.AreEqual(f3, new CField("", "OMX_IndexAudioStartUnused", ""));
        }
Ejemplo n.º 35
0
 public void ParsePlugin()
 {
     var parser = new StructParser();
     var file = parser.LoadStructs("plugin MyPlugin;");
     Assert.AreEqual(1, file.PluginFileNames.Count);
 }
Ejemplo n.º 36
0
 public void ParseSingleEmptyStruct()
 {
     StructParser parser = new StructParser();
     StructFile structFile = parser.LoadStructs("struct BITMAPINFOHEADER { }");
     Assert.AreEqual(1, structFile.Structs.Count);
     StructDef structDef = structFile.Structs[0];
     Assert.AreEqual("BITMAPINFOHEADER", structDef.Name);
 }
Ejemplo n.º 37
0
 public void ParseSingleFieldStruct()
 {
     StructParser parser = new StructParser();
     StructFile structFile = parser.LoadStructs("struct BITMAPINFOHEADER { u32 biSize; }");
     StructDef structDef = structFile.Structs[0];
     Assert.AreEqual(1, structDef.Fields.Count);
     Assert.AreEqual("biSize", structDef.Fields[0].Tag);
 }
Ejemplo n.º 38
0
 public void StructWithAttributes()
 {
     StructFile structFile = new StructParser().LoadStructs("[filemask=\"*.bmp\"] struct BITMAPFILEHEADER { }");
     StructDef structDef = structFile.Structs[0];
     Assert.AreEqual("*.bmp", structDef.FileMask);
 }
Ejemplo n.º 39
0
 public void UnknownField()
 {
     StructParser parser = new StructParser();
     parser.LoadStructs("struct A { someshit a; othershit b; }");
     Assert.AreEqual(2, parser.Errors.Count);
 }
Ejemplo n.º 40
0
        public void Test2()
        {
            CField f2 = StructParser.parseLine("OMX_BOOL bFlagErrorConcealment;  /**< Turns on error concealment if it is supported by the OMX component */");

            Assert.AreEqual(f2, new CField("OMX_BOOL", "bFlagErrorConcealment", "Turns on error concealment if it is supported by the OMX component"));
        }
Ejemplo n.º 41
0
        public void Test5()
        {
            CField f5 = StructParser.parseLine("OMX_STRING cMIMEType;");

            Assert.AreEqual(f5, new CField("OMX_STRING", "cMIMEType", ""));
        }
Ejemplo n.º 42
0
        public void Test4()
        {
            CField f4 = StructParser.parseLine("OMX_IndexMax = 0x7FFFFFFF");

            Assert.AreEqual(f4, new CField("", "OMX_IndexMax", ""));
        }
Ejemplo n.º 43
0
 public void ParseFieldWithAttributes()
 {
     StructParser parser = new StructParser();
     StructFile structFile = parser.LoadStructs("struct BITMAPFILEHEADER { str [len=2] bfType; }");
     StructDef structDef = structFile.Structs[0];
     Assert.AreEqual(1, structDef.Fields.Count);
     Assert.IsInstanceOfType(typeof(StrField), structDef.Fields [0]);
     StrField field = (StrField) structDef.Fields[0];
     Assert.AreEqual("bfType", field.Tag);
     Assert.AreEqual("2", field.GetExpressionAttribute("len").ToString());
 }
Ejemplo n.º 44
0
        public void Test1()
        {
            CField f1 = StructParser.parseLine("OMX_IndexParamPriorityMgmt,             /**< reference: OMX_PRIORITYMGMTTYPE */");

            Assert.AreEqual(f1, new CField("", "OMX_IndexParamPriorityMgmt", "reference: OMX_PRIORITYMGMTTYPE"));
        }
Ejemplo n.º 45
0
 public void InvalidSiblingStruct()
 {
     StructParser parser = new StructParser();
     parser.LoadStructs("struct A { u8 a; if (a > 0) { sibling NoSuchStruct; } }");
     Assert.AreEqual(1, parser.Errors.Count);
     Assert.AreEqual("Unknown struct NoSuchStruct", parser.Errors [0].Message);
 }