Files
flatbuffers-bigfoot/tests/ts/JavaScriptUndefinedForOptionals.js
Iñaki Baz Castillo 3211f857d1 Add --ts-undefined-for-optionals command line option (#8861)
* Add --ts-undefined-for-optionals command line option

# Details

- Fixes #7656
- Added a new `--ts-undefined-for-optionals` command line option for `flatc`.
- If enabled, generated TypeScript code uses `undefined` for optional fields rather than `null`.

* Also add TS generated test files

* Run `sh scripts/clang-format-git.sh`

* also add tests/ts/lalala-options.ts to the repo

* move new tests to tests/ts/optional_values dir

* add tests/ts/optional_values/optional_values_generated.cjs to the repo

* reuse existing optional_scalars.fbs and add new test

* add comma

* sh scripts/clang-format-git.sh

* remove comma

* sh scripts/clang-format-git.sh

* trying things

* sh scripts/clang-format-git.sh

* done

* address feedback

* sh scripts/clang-format-git.sh

* run `sh scripts/clang-format-git.sh`

* remove uneeded `eslint-disable @typescript-eslint/no-namespace` line

---------

Co-authored-by: José Luis Millán <jmillan@aliax.net>
2026-02-04 13:37:41 +01:00

61 lines
1.9 KiB
JavaScript

import assert from 'assert'
import * as flatbuffers from 'flatbuffers'
import optional_scalars from './ts-undefined-for-optionals/optional_scalars_generated.cjs'
const { ScalarStuff, ScalarStuffT } = optional_scalars.optional_scalars;
function testScalarStuffBuf(scalarStuff) {
assert.strictEqual(scalarStuff.justI8(), -1);
assert.strictEqual(scalarStuff.maybeI8(), undefined);
assert.strictEqual(scalarStuff.defaultI8(), 42);
assert.strictEqual(scalarStuff.justU8(), 1);
assert.strictEqual(scalarStuff.maybeU8(), undefined);
assert.strictEqual(scalarStuff.defaultU8(), 42);
}
function testScalarStuffUnpack(scalarStuff) {
assert.strictEqual(scalarStuff.justI8, -1);
assert.strictEqual(scalarStuff.maybeI8, undefined);
assert.strictEqual(scalarStuff.defaultI8, 42);
assert.strictEqual(scalarStuff.justU8, 1);
assert.strictEqual(scalarStuff.maybeU8, undefined);
assert.strictEqual(scalarStuff.defaultU8, 42);
}
function createScalarStuff(fbb) {
ScalarStuff.startScalarStuff(fbb);
ScalarStuff.addJustI8(fbb, -1);
ScalarStuff.addJustU8(fbb, 1);
var offset = ScalarStuff.endScalarStuff(fbb);
ScalarStuff.finishScalarStuffBuffer(fbb, offset);
}
function main() {
var fbb = new flatbuffers.Builder();
createScalarStuff(fbb);
var buf = new flatbuffers.ByteBuffer(fbb.asUint8Array());
var scalarStuff = ScalarStuff.getRootAsScalarStuff(buf);
testScalarStuffBuf(scalarStuff);
testScalarStuffUnpack(scalarStuff.unpack());
var scalarStuff_to = new ScalarStuffT();
scalarStuff.unpackTo(scalarStuff_to);
testScalarStuffUnpack(scalarStuff_to);
fbb.clear();
ScalarStuff.finishScalarStuffBuffer(fbb, scalarStuff_to.pack(fbb));
var unpackBuf = new flatbuffers.ByteBuffer(fbb.asUint8Array());
testScalarStuffBuf(ScalarStuff.getRootAsScalarStuff(unpackBuf));
console.log('FlatBuffers --ts-undefined-for-optionals test: completed successfully');
}
main();