mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-02 20:15:34 +00:00
[Java] Implement optional scalars (#6212)
Java implementation of optional scalars, following issue #6014.
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
import static com.google.flatbuffers.Constants.*;
|
||||
|
||||
import MyGame.Example.*;
|
||||
import optional_scalars.ScalarStuff;
|
||||
import optional_scalars.OptionalByte;
|
||||
import MyGame.MonsterExtra;
|
||||
import NamespaceA.*;
|
||||
import NamespaceA.NamespaceB.*;
|
||||
@@ -105,6 +107,8 @@ class JavaTest {
|
||||
|
||||
TestSharedStringPool();
|
||||
|
||||
TestScalarOptional();
|
||||
|
||||
System.out.println("FlatBuffers test: completed successfully");
|
||||
}
|
||||
|
||||
@@ -1032,14 +1036,7 @@ class JavaTest {
|
||||
TestEq(someString, FlexBuffers.getRoot(b).asString());
|
||||
|
||||
FlexBuffersBuilder failBuilder = new FlexBuffersBuilder(ByteBuffer.allocate(1));
|
||||
try {
|
||||
failBuilder.putString(someString);
|
||||
// This should never be reached, it should throw an exception
|
||||
// since ByteBuffers do not grow
|
||||
assert(false);
|
||||
} catch (java.lang.ArrayIndexOutOfBoundsException exception) {
|
||||
// It should throw exception
|
||||
}
|
||||
failBuilder.putString(someString);
|
||||
}
|
||||
|
||||
public static void testFlexBuffersUtf8Map() {
|
||||
@@ -1229,8 +1226,162 @@ class JavaTest {
|
||||
}
|
||||
}
|
||||
|
||||
static void TestScalarOptional() {
|
||||
FlatBufferBuilder fbb = new FlatBufferBuilder(1);
|
||||
ScalarStuff.startScalarStuff(fbb);
|
||||
int pos = ScalarStuff.endScalarStuff(fbb);
|
||||
fbb.finish(pos);
|
||||
|
||||
ScalarStuff scalarStuff = ScalarStuff.getRootAsScalarStuff(fbb.dataBuffer());
|
||||
TestEq(scalarStuff.justI8(), (byte)0);
|
||||
TestEq(scalarStuff.maybeI8(), (byte)0);
|
||||
TestEq(scalarStuff.defaultI8(), (byte)42);
|
||||
TestEq(scalarStuff.justU8(), 0);
|
||||
TestEq(scalarStuff.maybeU8(), 0);
|
||||
TestEq(scalarStuff.defaultU8(), 42);
|
||||
TestEq(scalarStuff.justI16(), (short)0);
|
||||
TestEq(scalarStuff.maybeI16(), (short)0);
|
||||
TestEq(scalarStuff.defaultI16(), (short)42);
|
||||
TestEq(scalarStuff.justU16(), 0);
|
||||
TestEq(scalarStuff.maybeU16(), 0);
|
||||
TestEq(scalarStuff.defaultU16(), 42);
|
||||
TestEq(scalarStuff.justI32(), 0);
|
||||
TestEq(scalarStuff.maybeI32(), 0);
|
||||
TestEq(scalarStuff.defaultI32(), 42);
|
||||
TestEq(scalarStuff.justU32(), 0L);
|
||||
TestEq(scalarStuff.maybeU32(), 0L);
|
||||
TestEq(scalarStuff.defaultU32(), 42L);
|
||||
TestEq(scalarStuff.justI64(), 0L);
|
||||
TestEq(scalarStuff.maybeI64(), 0L);
|
||||
TestEq(scalarStuff.defaultI64(), 42L);
|
||||
TestEq(scalarStuff.justU64(), 0L);
|
||||
TestEq(scalarStuff.maybeU64(), 0L);
|
||||
TestEq(scalarStuff.defaultU64(), 42L);
|
||||
TestEq(scalarStuff.justF32(), 0.0f);
|
||||
TestEq(scalarStuff.maybeF32(), 0f);
|
||||
TestEq(scalarStuff.defaultF32(), 42.0f);
|
||||
TestEq(scalarStuff.justF64(), 0.0);
|
||||
TestEq(scalarStuff.maybeF64(), 0.0);
|
||||
TestEq(scalarStuff.defaultF64(), 42.0);
|
||||
TestEq(scalarStuff.justBool(), false);
|
||||
TestEq(scalarStuff.maybeBool(), false);
|
||||
TestEq(scalarStuff.defaultBool(), true);
|
||||
TestEq(scalarStuff.justEnum(), OptionalByte.None);
|
||||
TestEq(scalarStuff.maybeEnum(), OptionalByte.None);
|
||||
TestEq(scalarStuff.defaultEnum(), OptionalByte.One);
|
||||
|
||||
TestEq(scalarStuff.hasMaybeI8(), false);
|
||||
TestEq(scalarStuff.hasMaybeI16(), false);
|
||||
TestEq(scalarStuff.hasMaybeI32(), false);
|
||||
TestEq(scalarStuff.hasMaybeI64(), false);
|
||||
TestEq(scalarStuff.hasMaybeU8(), false);
|
||||
TestEq(scalarStuff.hasMaybeU16(), false);
|
||||
TestEq(scalarStuff.hasMaybeU32(), false);
|
||||
TestEq(scalarStuff.hasMaybeU64(), false);
|
||||
TestEq(scalarStuff.hasMaybeF32(), false);
|
||||
TestEq(scalarStuff.hasMaybeF64(), false);
|
||||
TestEq(scalarStuff.hasMaybeBool(), false);
|
||||
TestEq(scalarStuff.hasMaybeEnum(), false);
|
||||
|
||||
fbb.clear();
|
||||
|
||||
ScalarStuff.startScalarStuff(fbb);
|
||||
ScalarStuff.addJustI8(fbb, (byte)5);
|
||||
ScalarStuff.addMaybeI8(fbb, (byte)5);
|
||||
ScalarStuff.addDefaultI8(fbb, (byte)5);
|
||||
ScalarStuff.addJustU8(fbb, 6);
|
||||
ScalarStuff.addMaybeU8(fbb, 6);
|
||||
ScalarStuff.addDefaultU8(fbb, 6);
|
||||
ScalarStuff.addJustI16(fbb, (short)7);
|
||||
ScalarStuff.addMaybeI16(fbb, (short)7);
|
||||
ScalarStuff.addDefaultI16(fbb, (short)7);
|
||||
ScalarStuff.addJustU16(fbb, 8);
|
||||
ScalarStuff.addMaybeU16(fbb, 8);
|
||||
ScalarStuff.addDefaultU16(fbb, 8);
|
||||
ScalarStuff.addJustI32(fbb, 9);
|
||||
ScalarStuff.addMaybeI32(fbb, 9);
|
||||
ScalarStuff.addDefaultI32(fbb, 9);
|
||||
ScalarStuff.addJustU32(fbb, (long)10);
|
||||
ScalarStuff.addMaybeU32(fbb, (long)10);
|
||||
ScalarStuff.addDefaultU32(fbb, (long)10);
|
||||
ScalarStuff.addJustI64(fbb, 11L);
|
||||
ScalarStuff.addMaybeI64(fbb, 11L);
|
||||
ScalarStuff.addDefaultI64(fbb, 11L);
|
||||
ScalarStuff.addJustU64(fbb, 12L);
|
||||
ScalarStuff.addMaybeU64(fbb, 12L);
|
||||
ScalarStuff.addDefaultU64(fbb, 12L);
|
||||
ScalarStuff.addJustF32(fbb, 13.0f);
|
||||
ScalarStuff.addMaybeF32(fbb, 13.0f);
|
||||
ScalarStuff.addDefaultF32(fbb, 13.0f);
|
||||
ScalarStuff.addJustF64(fbb, 14.0);
|
||||
ScalarStuff.addMaybeF64(fbb, 14.0);
|
||||
ScalarStuff.addDefaultF64(fbb, 14.0);
|
||||
ScalarStuff.addJustBool(fbb, true);
|
||||
ScalarStuff.addMaybeBool(fbb, true);
|
||||
ScalarStuff.addDefaultBool(fbb, true);
|
||||
ScalarStuff.addJustEnum(fbb, OptionalByte.Two);
|
||||
ScalarStuff.addMaybeEnum(fbb, OptionalByte.Two);
|
||||
ScalarStuff.addDefaultEnum(fbb, OptionalByte.Two);
|
||||
|
||||
pos = ScalarStuff.endScalarStuff(fbb);
|
||||
|
||||
fbb.finish(pos);
|
||||
|
||||
scalarStuff = ScalarStuff.getRootAsScalarStuff(fbb.dataBuffer());
|
||||
|
||||
TestEq(scalarStuff.justI8(), (byte)5);
|
||||
TestEq(scalarStuff.maybeI8(), (byte)5);
|
||||
TestEq(scalarStuff.defaultI8(), (byte)5);
|
||||
TestEq(scalarStuff.justU8(), 6);
|
||||
TestEq(scalarStuff.maybeU8(), 6);
|
||||
TestEq(scalarStuff.defaultU8(), 6);
|
||||
TestEq(scalarStuff.justI16(), (short)7);
|
||||
TestEq(scalarStuff.maybeI16(), (short)7);
|
||||
TestEq(scalarStuff.defaultI16(), (short)7);
|
||||
TestEq(scalarStuff.justU16(), 8);
|
||||
TestEq(scalarStuff.maybeU16(), 8);
|
||||
TestEq(scalarStuff.defaultU16(), 8);
|
||||
TestEq(scalarStuff.justI32(), 9);
|
||||
TestEq(scalarStuff.maybeI32(), 9);
|
||||
TestEq(scalarStuff.defaultI32(), 9);
|
||||
TestEq(scalarStuff.justU32(), 10L);
|
||||
TestEq(scalarStuff.maybeU32(), 10L);
|
||||
TestEq(scalarStuff.defaultU32(), 10L);
|
||||
TestEq(scalarStuff.justI64(), 11L);
|
||||
TestEq(scalarStuff.maybeI64(), 11L);
|
||||
TestEq(scalarStuff.defaultI64(), 11L);
|
||||
TestEq(scalarStuff.justU64(), 12L);
|
||||
TestEq(scalarStuff.maybeU64(), 12L);
|
||||
TestEq(scalarStuff.defaultU64(), 12L);
|
||||
TestEq(scalarStuff.justF32(), 13.0f);
|
||||
TestEq(scalarStuff.maybeF32(), 13.0f);
|
||||
TestEq(scalarStuff.defaultF32(), 13.0f);
|
||||
TestEq(scalarStuff.justF64(), 14.0);
|
||||
TestEq(scalarStuff.maybeF64(), 14.0);
|
||||
TestEq(scalarStuff.defaultF64(), 14.0);
|
||||
TestEq(scalarStuff.justBool(), true);
|
||||
TestEq(scalarStuff.maybeBool(), true);
|
||||
TestEq(scalarStuff.defaultBool(), true);
|
||||
TestEq(scalarStuff.justEnum(), OptionalByte.Two);
|
||||
TestEq(scalarStuff.maybeEnum(), OptionalByte.Two);
|
||||
TestEq(scalarStuff.defaultEnum(), OptionalByte.Two);
|
||||
|
||||
TestEq(scalarStuff.hasMaybeI8(), true);
|
||||
TestEq(scalarStuff.hasMaybeI16(), true);
|
||||
TestEq(scalarStuff.hasMaybeI32(), true);
|
||||
TestEq(scalarStuff.hasMaybeI64(), true);
|
||||
TestEq(scalarStuff.hasMaybeU8(), true);
|
||||
TestEq(scalarStuff.hasMaybeU16(), true);
|
||||
TestEq(scalarStuff.hasMaybeU32(), true);
|
||||
TestEq(scalarStuff.hasMaybeU64(), true);
|
||||
TestEq(scalarStuff.hasMaybeF32(), true);
|
||||
TestEq(scalarStuff.hasMaybeF64(), true);
|
||||
TestEq(scalarStuff.hasMaybeBool(), true);
|
||||
TestEq(scalarStuff.hasMaybeEnum(), true);
|
||||
}
|
||||
|
||||
static <T> void TestEq(T a, T b) {
|
||||
if (!a.equals(b)) {
|
||||
if ((a == null && a != b) || (a != null && !a.equals(b))) {
|
||||
System.out.println("" + a.getClass().getName() + " " + b.getClass().getName());
|
||||
System.out.println("FlatBuffers test FAILED: \'" + a + "\' != \'" + b + "\'");
|
||||
new Throwable().printStackTrace();
|
||||
|
||||
Reference in New Issue
Block a user