mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-25 21:28:38 +00:00
Add support for fixed-size arrays (#5313)
This commit is contained in:
committed by
Wouter van Oortmerssen
parent
0d2cebccfe
commit
e635141d5b
@@ -330,5 +330,58 @@ namespace FlatBuffers.Test
|
||||
Assert.AreEqual(nestedMonsterHp, nestedMonster.Hp);
|
||||
Assert.AreEqual(nestedMonsterName, nestedMonster.Name);
|
||||
}
|
||||
|
||||
[FlatBuffersTestMethod]
|
||||
public void TestFixedLenghtArrays()
|
||||
{
|
||||
FlatBufferBuilder builder = new FlatBufferBuilder(100);
|
||||
|
||||
float a;
|
||||
int[] b = new int[15];
|
||||
sbyte c;
|
||||
int[,] d_a = new int[2, 2];
|
||||
TestEnum[] d_b = new TestEnum[2];
|
||||
TestEnum[,] d_c = new TestEnum[2, 2];
|
||||
|
||||
a = 0.5f;
|
||||
for (int i = 0; i < 15; i++) b[i] = i;
|
||||
c = 1;
|
||||
d_a[0, 0] = 1;
|
||||
d_a[0, 1] = 2;
|
||||
d_a[1, 0] = 3;
|
||||
d_a[1, 1] = 4;
|
||||
d_b[0] = TestEnum.B;
|
||||
d_b[1] = TestEnum.C;
|
||||
d_c[0, 0] = TestEnum.A;
|
||||
d_c[0, 1] = TestEnum.B;
|
||||
d_c[1, 0] = TestEnum.C;
|
||||
d_c[1, 1] = TestEnum.B;
|
||||
|
||||
Offset<ArrayStruct> arrayOffset = ArrayStruct.CreateArrayStruct(
|
||||
builder, a, b, c, d_a, d_b, d_c);
|
||||
|
||||
// Create a table with the ArrayStruct.
|
||||
ArrayTable.StartArrayTable(builder);
|
||||
ArrayTable.AddA(builder, arrayOffset);
|
||||
Offset<ArrayTable> tableOffset = ArrayTable.EndArrayTable(builder);
|
||||
|
||||
ArrayTable.FinishArrayTableBuffer(builder, tableOffset);
|
||||
|
||||
ArrayTable table = ArrayTable.GetRootAsArrayTable(builder.DataBuffer);
|
||||
|
||||
Assert.AreEqual(table.A?.A, 0.5f);
|
||||
for (int i = 0; i < 15; i++) Assert.AreEqual(table.A?.B(i), i);
|
||||
Assert.AreEqual(table.A?.C, (sbyte)1);
|
||||
Assert.AreEqual(table.A?.D(0).A(0), 1);
|
||||
Assert.AreEqual(table.A?.D(0).A(1), 2);
|
||||
Assert.AreEqual(table.A?.D(1).A(0), 3);
|
||||
Assert.AreEqual(table.A?.D(1).A(1), 4);
|
||||
Assert.AreEqual(table.A?.D(0).B, TestEnum.B);
|
||||
Assert.AreEqual(table.A?.D(1).B, TestEnum.C);
|
||||
Assert.AreEqual(table.A?.D(0).C(0), TestEnum.A);
|
||||
Assert.AreEqual(table.A?.D(0).C(1), TestEnum.B);
|
||||
Assert.AreEqual(table.A?.D(1).C(0), TestEnum.C);
|
||||
Assert.AreEqual(table.A?.D(1).C(1), TestEnum.B);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user