Esempio n. 1
0
        public void CollectionSizedByExpression()
        {
            var input    = @"
Object1
{
    size : int32;
    field2 : u32[(size - this) / 4];
}";
            var expected = new ProgramBuilder();
            var object1  = expected.AddObject();

            object1.Name = "Object1";
            object1.Fields.Add(("size", new Signed(null, 32), null, null));
            var field2_size = new Division(
                null,
                new Subtraction(
                    null,
                    new FieldIdentifier(null, "size"),
                    new This(null)
                    ),
                new BiPaGe.AST.Literals.Integer(null, "4"));

            object1.Fields.Add(("field2", new Unsigned(null, 32), field2_size, null));
            expected.Validate(SimpleBuilder.Build(input));
        }
Esempio n. 2
0
        public void CollectionSizedByExpression2()
        {
            var input = @"
Object1
{
    size : int32;
    size2 : int16;
    collection : bool[size + size2 - 10 * 5];
}";

            var expected = new ProgramBuilder();
            var object1  = expected.AddObject();

            object1.Name = "Object1";
            object1.Fields.Add(("size", new Signed(null, 32), null, null));
            object1.Fields.Add(("size2", new Signed(null, 16), null, null));
            var field3_size = new Subtraction(
                null,
                new Addition(
                    null,
                    new FieldIdentifier(null, "size"),
                    new FieldIdentifier(null, "size2")
                    ),
                new Multiplication(
                    null,
                    new BiPaGe.AST.Literals.Integer(null, "10"),
                    new BiPaGe.AST.Literals.Integer(null, "5")
                    ));

            object1.Fields.Add(("collection", new BiPaGe.AST.FieldTypes.Boolean(null), field3_size, null));
            expected.Validate(SimpleBuilder.Build(input));
        }
Esempio n. 3
0
        public void Signed()
        {
            var input    = @"
SomeEnumeration : i16
{
    value1 = -2,
    value2 = -1,
    value3 = 0,
    value4 = 1,
    value5 = 2
}
Object1
{
    enum_field : SomeEnumeration;
}";
            var expected = new ProgramBuilder();

            var enum1 = expected.AddEnumeration();

            enum1.Name = "SomeEnumeration";
            enum1.Type = new Signed(null, 16);
            enum1.Enumerators.Add(("value1", -2));
            enum1.Enumerators.Add(("value2", -1));
            enum1.Enumerators.Add(("value3", 0));
            enum1.Enumerators.Add(("value4", 1));
            enum1.Enumerators.Add(("value5", 2));

            var object1 = expected.AddObject();

            object1.Name = "Object1";
            object1.Fields.Add(("enum_field", new Identifier(null, "SomeEnumeration"), null, null));

            expected.Validate(SimpleBuilder.Build(input));
        }
Esempio n. 4
0
        public void Standard()
        {
            var input    = @"
Object1
{
    enum_field : u8
    {
        value1 = 1,
        value2 = 2,
        value3 = 0
    };
}";
            var expected = new ProgramBuilder();

            var inline_enum = new BiPaGe.AST.FieldTypes.InlineEnumeration(null, new Unsigned(null, 8),
                                                                          new List <BiPaGe.AST.Enumerator>
            {
                new BiPaGe.AST.Enumerator(null, "value1", "1"),
                new BiPaGe.AST.Enumerator(null, "value2", "2"),
                new BiPaGe.AST.Enumerator(null, "value3", "0")
            });

            var object1 = expected.AddObject();

            object1.Name = "Object1";
            object1.Fields.Add(("enum_field", inline_enum, null, null));

            expected.Validate(SimpleBuilder.Build(input));
        }
Esempio n. 5
0
        public void AsciiString()
        {
            var input    = @"
Object1
{
    field1 : ascii_string[64] = ""This is a string initializer"";
}";
            var expected = new ProgramBuilder();
            var object1  = expected.AddObject();

            object1.Name = "Object1";
            object1.Fields.Add(("field1", new AsciiString(null), new BiPaGe.AST.Literals.Integer(null, "64"), new BiPaGe.AST.Literals.StringLiteral(null, "This is a string initializer")));
            expected.Validate(SimpleBuilder.Build(input));
        }
Esempio n. 6
0
        public void CollectionSizedByField()
        {
            var input    = @"
Object1
{
    size : int32;
    field2 : ascii_string[size];
}";
            var expected = new ProgramBuilder();
            var object1  = expected.AddObject();

            object1.Name = "Object1";
            object1.Fields.Add(("size", new Signed(null, 32), null, null));
            object1.Fields.Add(("field2", new AsciiString(null), new BiPaGe.AST.Identifiers.FieldIdentifier(null, "size"), null));
            expected.Validate(SimpleBuilder.Build(input));
        }
Esempio n. 7
0
        public void ListOfIntegersSizedByExpression2()
        {
            var input = @"
Object1
{
    size : int32;
    size2 : int16;
    collection : i32[size + size2 - 10 * 5] = {1,1,2,3,5,8,13,21,34,55};
}";

            var expected = new ProgramBuilder();
            var object1  = expected.AddObject();

            object1.Name = "Object1";
            object1.Fields.Add(("size", new Signed(null, 32), null, null));
            object1.Fields.Add(("size2", new Signed(null, 16), null, null));
            var field3_size = new Subtraction(
                null,
                new Addition(
                    null,
                    new FieldIdentifier(null, "size"),
                    new FieldIdentifier(null, "size2")
                    ),
                new Multiplication(
                    null,
                    new BiPaGe.AST.Literals.Integer(null, "10"),
                    new BiPaGe.AST.Literals.Integer(null, "5")
                    ));

            object1.Fields.Add(("collection", new BiPaGe.AST.FieldTypes.Signed(null, 32), field3_size,
                                new LiteralCollection(null,
                                                      new List <BiPaGe.AST.Literals.Literal>()
            {
                new BiPaGe.AST.Literals.Integer(null, "1"),
                new BiPaGe.AST.Literals.Integer(null, "1"),
                new BiPaGe.AST.Literals.Integer(null, "2"),
                new BiPaGe.AST.Literals.Integer(null, "3"),
                new BiPaGe.AST.Literals.Integer(null, "5"),
                new BiPaGe.AST.Literals.Integer(null, "8"),
                new BiPaGe.AST.Literals.Integer(null, "13"),
                new BiPaGe.AST.Literals.Integer(null, "21"),
                new BiPaGe.AST.Literals.Integer(null, "34"),
                new BiPaGe.AST.Literals.Integer(null, "55")
            })));
            expected.Validate(SimpleBuilder.Build(input));
        }
Esempio n. 8
0
        public void Reserved()
        {
            var input    = @"
Object1
{
    int32[5];
    ascii_string[32];
    utf8_string[255];
    ascii_string[size];
    u32[(size - this) / 4];
    bool[size + size2 - 10 * 5];
}";
            var expected = new ProgramBuilder();
            var object1  = expected.AddObject();

            object1.Name = "Object1";
            object1.Fields.Add((null, new Signed(null, 32), new BiPaGe.AST.Literals.Integer(null, "5"), null));
            object1.Fields.Add((null, new AsciiString(null), new BiPaGe.AST.Literals.Integer(null, "32"), null));
            object1.Fields.Add((null, new Utf8String(null), new BiPaGe.AST.Literals.Integer(null, "255"), null));
            object1.Fields.Add((null, new AsciiString(null), new BiPaGe.AST.Identifiers.FieldIdentifier(null, "size"), null));
            var field5_size = new Division(
                null,
                new Subtraction(
                    null,
                    new FieldIdentifier(null, "size"),
                    new This(null)
                    ),
                new BiPaGe.AST.Literals.Integer(null, "4"));

            object1.Fields.Add((null, new Unsigned(null, 32), field5_size, null));
            var field6_size = new Subtraction(
                null,
                new Addition(
                    null,
                    new FieldIdentifier(null, "size"),
                    new FieldIdentifier(null, "size2")
                    ),
                new Multiplication(
                    null,
                    new BiPaGe.AST.Literals.Integer(null, "10"),
                    new BiPaGe.AST.Literals.Integer(null, "5")
                    ));

            object1.Fields.Add((null, new BiPaGe.AST.FieldTypes.Boolean(null), field6_size, null));
            expected.Validate(SimpleBuilder.Build(input));
        }
Esempio n. 9
0
        public void StaticallySizedCollection()
        {
            var input    = @"
Object1
{
    field1 : int32[5];
    field2 : ascii_string[32];
    field3 : utf8_string[255];
}";
            var expected = new ProgramBuilder();
            var object1  = expected.AddObject();

            object1.Name = "Object1";
            object1.Fields.Add(("field1", new Signed(null, 32), new BiPaGe.AST.Literals.Integer(null, "5"), null));
            object1.Fields.Add(("field2", new AsciiString(null), new BiPaGe.AST.Literals.Integer(null, "32"), null));
            object1.Fields.Add(("field3", new Utf8String(null), new BiPaGe.AST.Literals.Integer(null, "255"), null));
            expected.Validate(SimpleBuilder.Build(input));
        }
Esempio n. 10
0
        public void Enumeration()
        {
            var expected = new ProgramBuilder();

            var enum1 = expected.AddEnumeration();

            enum1.Name = "SomeEnumeration";
            enum1.Type = new Unsigned(null, 8);
            enum1.Enumerators.Add(("value1", 1));
            enum1.Enumerators.Add(("value2", 2));
            enum1.Enumerators.Add(("value3", 0));

            var object1 = expected.AddObject();

            object1.Name = "Object1";
            object1.Fields.Add(("enum_field", new Identifier(null, "SomeEnumeration"), null, null));

            expected.Validate(SimpleBuilder.Build("SomeEnumeration : u8{value1=1,value2=2,value3=0}Object1{enum_field:SomeEnumeration;}"));
        }
Esempio n. 11
0
        public void ListOfBooleans()
        {
            var input    = @"
Object1
{
    field1 : bool[3] = {true, false, true};
}";
            var expected = new ProgramBuilder();
            var object1  = expected.AddObject();

            object1.Name = "Object1";
            object1.Fields.Add(("field1", new BiPaGe.AST.FieldTypes.Boolean(null), new BiPaGe.AST.Literals.Integer(null, "3"),
                                new LiteralCollection(null,
                                                      new List <BiPaGe.AST.Literals.Literal>()
            {
                new BiPaGe.AST.Literals.Boolean(null, "true"),
                new BiPaGe.AST.Literals.Boolean(null, "false"),
                new BiPaGe.AST.Literals.Boolean(null, "true")
            })));
            expected.Validate(SimpleBuilder.Build(input));
        }
Esempio n. 12
0
        public void Reserved()
        {
            var input    = @"
Object1
{
    int2;
    u6;
    i11;
    u12;
    bool;
}";
            var expected = new ProgramBuilder();
            var object1  = expected.AddObject();

            object1.Name = "Object1";
            object1.Fields.Add((null, new Signed(null, 2), null, null));
            object1.Fields.Add((null, new Unsigned(null, 6), null, null));
            object1.Fields.Add((null, new Signed(null, 11), null, null));
            object1.Fields.Add((null, new Unsigned(null, 12), null, null));
            object1.Fields.Add((null, new BiPaGe.AST.FieldTypes.Boolean(null), null, null));
            expected.Validate(SimpleBuilder.Build(input));
        }
Esempio n. 13
0
        public void OddWidths()
        {
            var input    = @"
Object1
{
    field1 : int2;
    field2 : u6;
    field3 : i11;
    field4 : u12;
    field5 : bool;
}";
            var expected = new ProgramBuilder();
            var object1  = expected.AddObject();

            object1.Name = "Object1";
            object1.Fields.Add(("field1", new Signed(null, 2), null, null));
            object1.Fields.Add(("field2", new Unsigned(null, 6), null, null));
            object1.Fields.Add(("field3", new Signed(null, 11), null, null));
            object1.Fields.Add(("field4", new Unsigned(null, 12), null, null));
            object1.Fields.Add(("field5", new BiPaGe.AST.FieldTypes.Boolean(null), null, null));
            expected.Validate(SimpleBuilder.Build(input));
        }
Esempio n. 14
0
        public void ListOfMixedSignIntegers()
        {
            var input    = @"
Object1
{
    field1 : int32[5] = {1,-2,3,-4,5};
}";
            var expected = new ProgramBuilder();
            var object1  = expected.AddObject();

            object1.Name = "Object1";
            object1.Fields.Add(("field1", new Signed(null, 32), new BiPaGe.AST.Literals.Integer(null, "5"),
                                new LiteralCollection(null,
                                                      new List <BiPaGe.AST.Literals.Literal>()
            {
                new BiPaGe.AST.Literals.Integer(null, "1"),
                new BiPaGe.AST.Literals.Integer(null, "-2"),
                new BiPaGe.AST.Literals.Integer(null, "3"),
                new BiPaGe.AST.Literals.Integer(null, "-4"),
                new BiPaGe.AST.Literals.Integer(null, "5")
            })));
            expected.Validate(SimpleBuilder.Build(input));
        }
Esempio n. 15
0
        public void Collections()
        {
            var expected = new ProgramBuilder();
            var object1  = expected.AddObject();

            object1.Name = "Object1";
            object1.Fields.Add(("field1", new Signed(null, 32), new BiPaGe.AST.Literals.Integer(null, "5"),
                                new LiteralCollection(null,
                                                      new List <BiPaGe.AST.Literals.Literal>()
            {
                new BiPaGe.AST.Literals.Integer(null, "1"),
                new BiPaGe.AST.Literals.Integer(null, "2"),
                new BiPaGe.AST.Literals.Integer(null, "3"),
                new BiPaGe.AST.Literals.Integer(null, "4"),
                new BiPaGe.AST.Literals.Integer(null, "5")
            })));
            object1.Fields.Add(("field2", new Signed(null, 32), new BiPaGe.AST.Literals.Integer(null, "5"),
                                new LiteralCollection(null,
                                                      new List <BiPaGe.AST.Literals.Literal>()
            {
                new BiPaGe.AST.Literals.Integer(null, "-1"),
                new BiPaGe.AST.Literals.Integer(null, "-2"),
                new BiPaGe.AST.Literals.Integer(null, "-3"),
                new BiPaGe.AST.Literals.Integer(null, "-4"),
                new BiPaGe.AST.Literals.Integer(null, "-5")
            })));
            object1.Fields.Add(("field3", new Signed(null, 32), new BiPaGe.AST.Literals.Integer(null, "5"),
                                new LiteralCollection(null,
                                                      new List <BiPaGe.AST.Literals.Literal>()
            {
                new BiPaGe.AST.Literals.Integer(null, "1"),
                new BiPaGe.AST.Literals.Integer(null, "-2"),
                new BiPaGe.AST.Literals.Integer(null, "3"),
                new BiPaGe.AST.Literals.Integer(null, "-4"),
                new BiPaGe.AST.Literals.Integer(null, "5")
            })));
            var field4_size = new Subtraction(
                null,
                new Addition(
                    null,
                    new FieldIdentifier(null, "size"),
                    new FieldIdentifier(null, "size2")
                    ),
                new Multiplication(
                    null,
                    new BiPaGe.AST.Literals.Integer(null, "10"),
                    new BiPaGe.AST.Literals.Integer(null, "5")
                    ));

            object1.Fields.Add(("collection", new BiPaGe.AST.FieldTypes.Signed(null, 32), field4_size,
                                new LiteralCollection(null,
                                                      new List <BiPaGe.AST.Literals.Literal>()
            {
                new BiPaGe.AST.Literals.Integer(null, "1"),
                new BiPaGe.AST.Literals.Integer(null, "1"),
                new BiPaGe.AST.Literals.Integer(null, "2"),
                new BiPaGe.AST.Literals.Integer(null, "3"),
                new BiPaGe.AST.Literals.Integer(null, "5"),
                new BiPaGe.AST.Literals.Integer(null, "8"),
                new BiPaGe.AST.Literals.Integer(null, "13"),
                new BiPaGe.AST.Literals.Integer(null, "21"),
                new BiPaGe.AST.Literals.Integer(null, "34"),
                new BiPaGe.AST.Literals.Integer(null, "55")
            })));
            object1.Fields.Add(("field4", new BiPaGe.AST.FieldTypes.Boolean(null), new BiPaGe.AST.Literals.Integer(null, "3"),
                                new LiteralCollection(null,
                                                      new List <BiPaGe.AST.Literals.Literal>()
            {
                new BiPaGe.AST.Literals.Boolean(null, "true"),
                new BiPaGe.AST.Literals.Boolean(null, "false"),
                new BiPaGe.AST.Literals.Boolean(null, "true")
            })));
            object1.Fields.Add(("field5", new AsciiString(null), new BiPaGe.AST.Literals.Integer(null, "64"), new BiPaGe.AST.Literals.StringLiteral(null, "This is a string initializer")));
            expected.Validate(SimpleBuilder.Build("Object1{field1:int32[5]={1,2,3,4,5};field2:int32[5]={-1,-2,-3,-4,-5};field3:int32[5]={1,-2,3,-4,5};collection:i32[size+size2-10*5]={1,1,2,3,5,8,13,21,34,55};field4:bool[3]={true, false, true};field5:ascii_string[64]=\"This is a string initializer\";}"));
        }