diff --git a/tests/JavaScriptTest.js b/tests/JavaScriptTest.js index f1fdc693e..5e70056b3 100644 --- a/tests/JavaScriptTest.js +++ b/tests/JavaScriptTest.js @@ -4,7 +4,7 @@ import fs from 'fs' import * as flatbuffers from 'flatbuffers' import { Monster, MonsterT } from './my-game/example/monster' -import { Test } from './my-game/example/test' +import { Test, TestT } from './my-game/example/test' import { Stat } from './my-game/example/stat' import { Vec3 } from './my-game/example/vec3' import { Color } from './my-game/example/color'; @@ -47,6 +47,7 @@ function main() { fuzzTest1(); testNullStrings(); testSharedStrings(); + testVectorOfStructs(); console.log('FlatBuffers test: completed successfully'); } @@ -458,4 +459,22 @@ function testNullStrings() { assert.strictEqual(builder.createSharedString(undefined), 0); } +function testVectorOfStructs() { + let monster = new MonsterT(); + monster.name = 'testVectorOfStructs'; + monster.test4 = [ + new TestT(1, 2), + new TestT(3, 4) + ]; + + let builder = new flatbuffers.Builder(); + builder.finish(monster.pack(builder)); + + let decodedMonster = Monster.getRootAsMonster(builder.dataBuffer()).unpack(); + assert.strictEqual(decodedMonster.test4[0].a, 1); + assert.strictEqual(decodedMonster.test4[0].b, 2); + assert.strictEqual(decodedMonster.test4[1].a, 3); + assert.strictEqual(decodedMonster.test4[1].b, 4); +} + main(); diff --git a/ts/builder.ts b/ts/builder.ts index 344a629b6..8db79886a 100644 --- a/ts/builder.ts +++ b/ts/builder.ts @@ -617,7 +617,7 @@ export class Builder { createStructOffsetList(list: string[] | any[], startFunc: (builder: Builder, length: number) => void): Offset { startFunc(this, list.length); - this.createObjectOffsetList(list); + this.createObjectOffsetList(list.slice().reverse()); return this.endVector(); } }