[Test] public void ParsePlugin() { var parser = new StructParser(); var file = parser.LoadStructs("plugin MyPlugin;"); Assert.AreEqual(1, file.PluginFileNames.Count); }
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); }
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); }
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); } }
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)); }
[Test] public void UnknownField() { StructParser parser = new StructParser(); parser.LoadStructs("struct A { someshit a; othershit b; }"); Assert.AreEqual(2, parser.Errors.Count); }
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)); }
[Test] public void StructWithAttributes() { StructFile structFile = new StructParser().LoadStructs("[filemask=\"*.bmp\"] struct BITMAPFILEHEADER { }"); StructDef structDef = structFile.Structs[0]; Assert.AreEqual("*.bmp", structDef.FileMask); }
[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); }
[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); }
[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)); }
[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); }
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)); }
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); }
[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)); }
[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); }
[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); }
[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); }
[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)); }
public void Decode_ComplexParserObject_ShouldBeCorrect() { var input = ComplexParserObject.ExampleInput; var expected = ComplexParserObject.ExampleExpected; var actual = StructParser.Decode <ComplexParserObject>(input); actual.Should().BeEquivalentTo(expected); }
[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); }
[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); }
[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()); }
[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)); }
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); }
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)); }
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); }
public void Test6() { CField f6 = StructParser.parseLine("OMX_VIDEO_AVCLoopFilterEnable = 0,"); Assert.AreEqual(f6, new CField("", "OMX_VIDEO_AVCLoopFilterEnable", "")); }
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")); }
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); }
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); }
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)); }
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); }
public void Test3() { CField f3 = StructParser.parseLine("OMX_IndexAudioStartUnused = 0x04000000,"); Assert.AreEqual(f3, new CField("", "OMX_IndexAudioStartUnused", "")); }
public void ParsePlugin() { var parser = new StructParser(); var file = parser.LoadStructs("plugin MyPlugin;"); Assert.AreEqual(1, file.PluginFileNames.Count); }
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); }
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); }
public void StructWithAttributes() { StructFile structFile = new StructParser().LoadStructs("[filemask=\"*.bmp\"] struct BITMAPFILEHEADER { }"); StructDef structDef = structFile.Structs[0]; Assert.AreEqual("*.bmp", structDef.FileMask); }
public void UnknownField() { StructParser parser = new StructParser(); parser.LoadStructs("struct A { someshit a; othershit b; }"); Assert.AreEqual(2, parser.Errors.Count); }
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")); }
public void Test5() { CField f5 = StructParser.parseLine("OMX_STRING cMIMEType;"); Assert.AreEqual(f5, new CField("OMX_STRING", "cMIMEType", "")); }
public void Test4() { CField f4 = StructParser.parseLine("OMX_IndexMax = 0x7FFFFFFF"); Assert.AreEqual(f4, new CField("", "OMX_IndexMax", "")); }
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()); }
public void Test1() { CField f1 = StructParser.parseLine("OMX_IndexParamPriorityMgmt, /**< reference: OMX_PRIORITYMGMTTYPE */"); Assert.AreEqual(f1, new CField("", "OMX_IndexParamPriorityMgmt", "reference: OMX_PRIORITYMGMTTYPE")); }
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); }