forked from BigfootDev/flatbuffers
[Dart] Implement putBool to fix errors when serializing structs with bools (#7359)
* [Dart] Implement putBool to fix errors when serializing structs with bools * Add tests
This commit is contained in:
@@ -401,6 +401,15 @@ class Builder {
|
|||||||
_setFloat32AtTail(_tail, value);
|
_setFloat32AtTail(_tail, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Writes a bool to the tail of the buffer after preparing space for it.
|
||||||
|
/// Bools are represented as a Uint8, with the value set to '1' for true, and '0' for false
|
||||||
|
///
|
||||||
|
/// Updates the [offset] pointer. This method is intended for use when writing structs to the buffer.
|
||||||
|
void putBool(bool value) {
|
||||||
|
_prepare(_sizeofUint8, 1);
|
||||||
|
_buf.setInt8(_buf.lengthInBytes - _tail, value ? 1 : 0);
|
||||||
|
}
|
||||||
|
|
||||||
/// Writes a Int64 to the tail of the buffer after preparing space for it.
|
/// Writes a Int64 to the tail of the buffer after preparing space for it.
|
||||||
///
|
///
|
||||||
/// Updates the [offset] pointer. This method is intended for use when writing structs to the buffer.
|
/// Updates the [offset] pointer. This method is intended for use when writing structs to the buffer.
|
||||||
|
|||||||
10
dart/test/bool_structs.fbs
Normal file
10
dart/test/bool_structs.fbs
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
// Test for #7355
|
||||||
|
table Foo {
|
||||||
|
my_foo : foo_properties;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct foo_properties
|
||||||
|
{
|
||||||
|
a : bool;
|
||||||
|
b : bool;
|
||||||
|
}
|
||||||
@@ -14,6 +14,7 @@ import 'package:test_reflective_loader/test_reflective_loader.dart';
|
|||||||
import './monster_test_my_game.example_generated.dart' as example;
|
import './monster_test_my_game.example_generated.dart' as example;
|
||||||
import './monster_test_my_game.example2_generated.dart' as example2;
|
import './monster_test_my_game.example2_generated.dart' as example2;
|
||||||
import './list_of_enums_generated.dart' as example3;
|
import './list_of_enums_generated.dart' as example3;
|
||||||
|
import './bool_structs_generated.dart' as example4;
|
||||||
import './keyword_test_keyword_test_generated.dart' as keyword_test;
|
import './keyword_test_keyword_test_generated.dart' as keyword_test;
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
@@ -910,8 +911,11 @@ class GeneratorTest {
|
|||||||
@reflectiveTest
|
@reflectiveTest
|
||||||
class ListOfEnumsTest {
|
class ListOfEnumsTest {
|
||||||
void test_listOfEnums() async {
|
void test_listOfEnums() async {
|
||||||
var mytable = example3.MyTableObjectBuilder(
|
var mytable = example3.MyTableObjectBuilder(options: [
|
||||||
options: [example3.OptionsEnum.A, example3.OptionsEnum.B, example3.OptionsEnum.C]);
|
example3.OptionsEnum.A,
|
||||||
|
example3.OptionsEnum.B,
|
||||||
|
example3.OptionsEnum.C
|
||||||
|
]);
|
||||||
var bytes = mytable.toBytes();
|
var bytes = mytable.toBytes();
|
||||||
var mytable_read = example3.MyTable(bytes);
|
var mytable_read = example3.MyTable(bytes);
|
||||||
expect(mytable_read.options![0].value, example3.OptionsEnum.A.value);
|
expect(mytable_read.options![0].value, example3.OptionsEnum.A.value);
|
||||||
@@ -919,3 +923,15 @@ class ListOfEnumsTest {
|
|||||||
expect(mytable_read.options![2].value, example3.OptionsEnum.C.value);
|
expect(mytable_read.options![2].value, example3.OptionsEnum.C.value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@reflectiveTest
|
||||||
|
class BoolInStructTest {
|
||||||
|
void test_boolInStruct() async {
|
||||||
|
var mystruct = example4.FooObjectBuilder(
|
||||||
|
myFoo: example4.FooPropertiesObjectBuilder(a: true, b: false));
|
||||||
|
var bytes = mystruct.toBytes();
|
||||||
|
var mystruct_read = example4.Foo(bytes);
|
||||||
|
expect(mystruct_read.myFoo!.a, true);
|
||||||
|
expect(mystruct_read.myFoo!.b, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ cp monster_test.fbs ../dart/test
|
|||||||
cd ../dart
|
cd ../dart
|
||||||
|
|
||||||
../flatc --dart --gen-object-api -o ./test ./test/list_of_enums.fbs
|
../flatc --dart --gen-object-api -o ./test ./test/list_of_enums.fbs
|
||||||
|
../flatc --dart --gen-object-api -o ./test ./test/bool_structs.fbs
|
||||||
|
|
||||||
# update packages
|
# update packages
|
||||||
dart pub get
|
dart pub get
|
||||||
|
|||||||
Reference in New Issue
Block a user