diff --git a/packages/realm_dart/test/backlinks_test.realm.dart b/packages/realm_dart/test/backlinks_test.realm.dart index 523961454..67866f2a2 100644 --- a/packages/realm_dart/test/backlinks_test.realm.dart +++ b/packages/realm_dart/test/backlinks_test.realm.dart @@ -13,8 +13,8 @@ class Source extends _Source with RealmEntity, RealmObjectBase, RealmObject { Source({ String name = 'source', Target? oneTarget, - Target? dynamicTarget, Iterable manyTargets = const [], + Target? dynamicTarget, Iterable dynamicManyTargets = const [], }) { if (!_defaultsSet) { @@ -24,9 +24,9 @@ class Source extends _Source with RealmEntity, RealmObjectBase, RealmObject { } RealmObjectBase.set(this, 'name', name); RealmObjectBase.set(this, 'et mål', oneTarget); - RealmObjectBase.set(this, 'dynamisk mål', dynamicTarget); RealmObjectBase.set>( this, 'manyTargets', RealmList(manyTargets)); + RealmObjectBase.set(this, 'dynamisk mål', dynamicTarget); RealmObjectBase.set>( this, 'dynamicManyTargets', RealmList(dynamicManyTargets)); } @@ -97,7 +97,9 @@ class Source extends _Source with RealmEntity, RealmObjectBase, RealmObject { Source( name: fromEJson(name), oneTarget: fromEJson(oneTarget), + manyTargets: fromEJson(manyTargets), dynamicTarget: fromEJson(dynamicTarget), + dynamicManyTargets: fromEJson(dynamicManyTargets), ), _ => raiseInvalidEJson(ejson), }; diff --git a/packages/realm_dart/test/dynamic_realm_test.dart b/packages/realm_dart/test/dynamic_realm_test.dart index 9086fcbd6..b9f4fc769 100644 --- a/packages/realm_dart/test/dynamic_realm_test.dart +++ b/packages/realm_dart/test/dynamic_realm_test.dart @@ -3,6 +3,9 @@ // ignore_for_file: avoid_relative_lib_imports +import 'dart:ffi'; +import 'dart:typed_data'; + import 'package:test/test.dart' hide test, throws; import 'package:realm_dart/realm.dart'; @@ -72,7 +75,7 @@ void main() { final objectId = ObjectId(); final uuid = Uuid.v4(); - AllTypes _getPopulatedAllTypes() => AllTypes('abc', true, date, -123.456, objectId, uuid, -987, Decimal128.fromDouble(42), + AllTypes _getPopulatedAllTypes() => AllTypes('abc', true, date, -123.456, objectId, uuid, -987, Decimal128.fromDouble(42), Uint8List.fromList([1, 2, 3]), nullableStringProp: 'def', nullableBoolProp: true, nullableDateProp: date, @@ -82,7 +85,7 @@ void main() { nullableIntProp: 123, nullableDecimalProp: Decimal128.fromDouble(4242)); - AllTypes _getEmptyAllTypes() => AllTypes('', false, DateTime(0).toUtc(), 0, objectId, uuid, 0, Decimal128.zero); + AllTypes _getEmptyAllTypes() => AllTypes('', false, DateTime(0).toUtc(), 0, objectId, uuid, 0, Decimal128.zero, Uint8List(16)); AllCollections _getPopulatedAllCollections() => AllCollections( stringList: ['abc', 'def'], diff --git a/packages/realm_dart/test/geospatial_test.realm.dart b/packages/realm_dart/test/geospatial_test.realm.dart index d893ca96a..d5427ceb9 100644 --- a/packages/realm_dart/test/geospatial_test.realm.dart +++ b/packages/realm_dart/test/geospatial_test.realm.dart @@ -60,6 +60,7 @@ class Location extends _Location } => Location( type: fromEJson(type), + coordinates: fromEJson(coordinates), ), _ => raiseInvalidEJson(ejson), }; @@ -178,7 +179,9 @@ class LocationList extends _LocationList { 'locations': EJsonValue locations, } => - LocationList(), + LocationList( + locations: fromEJson(locations), + ), _ => raiseInvalidEJson(ejson), }; } diff --git a/packages/realm_dart/test/realm_map_test.realm.dart b/packages/realm_dart/test/realm_map_test.realm.dart index de72a8226..1467abc05 100644 --- a/packages/realm_dart/test/realm_map_test.realm.dart +++ b/packages/realm_dart/test/realm_map_test.realm.dart @@ -412,6 +412,27 @@ class TestRealmMaps extends _TestRealmMaps } => TestRealmMaps( fromEJson(key), + boolMap: fromEJson(boolMap), + intMap: fromEJson(intMap), + stringMap: fromEJson(stringMap), + doubleMap: fromEJson(doubleMap), + dateTimeMap: fromEJson(dateTimeMap), + objectIdMap: fromEJson(objectIdMap), + uuidMap: fromEJson(uuidMap), + binaryMap: fromEJson(binaryMap), + decimalMap: fromEJson(decimalMap), + nullableBoolMap: fromEJson(nullableBoolMap), + nullableIntMap: fromEJson(nullableIntMap), + nullableStringMap: fromEJson(nullableStringMap), + nullableDoubleMap: fromEJson(nullableDoubleMap), + nullableDateTimeMap: fromEJson(nullableDateTimeMap), + nullableObjectIdMap: fromEJson(nullableObjectIdMap), + nullableUuidMap: fromEJson(nullableUuidMap), + nullableBinaryMap: fromEJson(nullableBinaryMap), + nullableDecimalMap: fromEJson(nullableDecimalMap), + objectsMap: fromEJson(objectsMap), + embeddedMap: fromEJson(embeddedMap), + mixedMap: fromEJson(mixedMap), ), _ => raiseInvalidEJson(ejson), }; diff --git a/packages/realm_dart/test/realm_object_test.dart b/packages/realm_dart/test/realm_object_test.dart index 14e624327..b0ee63789 100644 --- a/packages/realm_dart/test/realm_object_test.dart +++ b/packages/realm_dart/test/realm_object_test.dart @@ -423,7 +423,7 @@ void main() { final config = Configuration.local([AllTypes.schema]); final realm = getRealm(config); final obj = realm.write(() { - return realm.add(AllTypes('', false, date, 0, ObjectId(), Uuid.v4(), 0, Decimal128.one)); + return realm.add(AllTypes('', false, date, 0, ObjectId(), Uuid.v4(), 0, Decimal128.one, Uint8List(16))); }); final json = obj.toJson(); @@ -462,7 +462,7 @@ void main() { expect(date.isUtc, isFalse); final obj = realm.write(() { - return realm.add(AllTypes('', false, date, 0, ObjectId(), Uuid.v4(), 0, Decimal128.one)); + return realm.add(AllTypes('', false, date, 0, ObjectId(), Uuid.v4(), 0, Decimal128.one, Uint8List(16))); }); final json = obj.toJson(); @@ -479,8 +479,8 @@ void main() { final date = DateTime.now(); realm.write(() { - realm.add(AllTypes('abc', false, date, 0, ObjectId(), Uuid.v4(), 0, Decimal128.one)); - realm.add(AllTypes('cde', false, DateTime.now().add(Duration(seconds: 1)), 0, ObjectId(), Uuid.v4(), 0, Decimal128.one)); + realm.add(AllTypes('abc', false, date, 0, ObjectId(), Uuid.v4(), 0, Decimal128.one, Uint8List(16))); + realm.add(AllTypes('cde', false, DateTime.now().add(Duration(seconds: 1)), 0, ObjectId(), Uuid.v4(), 0, Decimal128.one, Uint8List(16))); }); var results = realm.all().query('dateProp = \$0', [date]); @@ -497,9 +497,9 @@ void main() { final date3 = date1.subtract(Duration(microseconds: 1)); realm.write(() { - realm.add(AllTypes('1', false, date1, 0, ObjectId(), Uuid.v4(), 0, Decimal128.one)); - realm.add(AllTypes('2', false, date2, 0, ObjectId(), Uuid.v4(), 0, Decimal128.one)); - realm.add(AllTypes('3', false, date3, 0, ObjectId(), Uuid.v4(), 0, Decimal128.one)); + realm.add(AllTypes('1', false, date1, 0, ObjectId(), Uuid.v4(), 0, Decimal128.one, Uint8List(16))); + realm.add(AllTypes('2', false, date2, 0, ObjectId(), Uuid.v4(), 0, Decimal128.one, Uint8List(16))); + realm.add(AllTypes('3', false, date3, 0, ObjectId(), Uuid.v4(), 0, Decimal128.one, Uint8List(16))); }); final lessThan1 = realm.all().query('dateProp < \$0', [date1]); @@ -524,7 +524,7 @@ void main() { var uuid = Uuid.v4(); final object = realm.write(() { - return realm.add(AllTypes('cde', false, date, 0.1, objectId, uuid, 4, Decimal128.ten, binaryProp: Uint8List.fromList([1, 2]), nullableBinaryProp: null)); + return realm.add(AllTypes('cde', false, date, 0.1, objectId, uuid, 4, Decimal128.ten, Uint8List.fromList([1, 2]), nullableBinaryProp: null)); }); expect(object.stringProp, 'cde'); diff --git a/packages/realm_dart/test/realm_set_test.realm.dart b/packages/realm_dart/test/realm_set_test.realm.dart index 09bb778e6..6f9c2f276 100644 --- a/packages/realm_dart/test/realm_set_test.realm.dart +++ b/packages/realm_dart/test/realm_set_test.realm.dart @@ -322,6 +322,24 @@ class TestRealmSets extends _TestRealmSets } => TestRealmSets( fromEJson(key), + boolSet: fromEJson(boolSet), + intSet: fromEJson(intSet), + stringSet: fromEJson(stringSet), + doubleSet: fromEJson(doubleSet), + dateTimeSet: fromEJson(dateTimeSet), + objectIdSet: fromEJson(objectIdSet), + uuidSet: fromEJson(uuidSet), + mixedSet: fromEJson(mixedSet), + objectsSet: fromEJson(objectsSet), + binarySet: fromEJson(binarySet), + nullableBoolSet: fromEJson(nullableBoolSet), + nullableIntSet: fromEJson(nullableIntSet), + nullableStringSet: fromEJson(nullableStringSet), + nullableDoubleSet: fromEJson(nullableDoubleSet), + nullableDateTimeSet: fromEJson(nullableDateTimeSet), + nullableObjectIdSet: fromEJson(nullableObjectIdSet), + nullableUuidSet: fromEJson(nullableUuidSet), + nullableBinarySet: fromEJson(nullableBinarySet), ), _ => raiseInvalidEJson(ejson), }; diff --git a/packages/realm_dart/test/realm_value_test.realm.dart b/packages/realm_dart/test/realm_value_test.realm.dart index 0a011da86..251d68277 100644 --- a/packages/realm_dart/test/realm_value_test.realm.dart +++ b/packages/realm_dart/test/realm_value_test.realm.dart @@ -69,16 +69,16 @@ class AnythingGoes extends _AnythingGoes AnythingGoes({ RealmValue oneAny = const RealmValue.nullValue(), Iterable manyAny = const [], - Set setOfAny = const {}, Map dictOfAny = const {}, + Set setOfAny = const {}, }) { RealmObjectBase.set(this, 'oneAny', oneAny); RealmObjectBase.set>( this, 'manyAny', RealmList(manyAny)); - RealmObjectBase.set>( - this, 'setOfAny', RealmSet(setOfAny)); RealmObjectBase.set>( this, 'dictOfAny', RealmMap(dictOfAny)); + RealmObjectBase.set>( + this, 'setOfAny', RealmSet(setOfAny)); } AnythingGoes._(); @@ -138,6 +138,9 @@ class AnythingGoes extends _AnythingGoes } => AnythingGoes( oneAny: fromEJson(oneAny), + manyAny: fromEJson(manyAny), + dictOfAny: fromEJson(dictOfAny), + setOfAny: fromEJson(setOfAny), ), _ => raiseInvalidEJson(ejson), }; diff --git a/packages/realm_dart/test/results_test.dart b/packages/realm_dart/test/results_test.dart index ab69c67c5..a22f883e1 100644 --- a/packages/realm_dart/test/results_test.dart +++ b/packages/realm_dart/test/results_test.dart @@ -791,9 +791,9 @@ void main() { final config = Configuration.local([AllTypes.schema]); Realm realm = getRealm(config); realm.write(() => realm.addAll([ - AllTypes(text_1, false, DateTime.now(), 1.1, id_1, uid_1, 1, Decimal128.one, binaryProp: Uint8List.fromList([1, 2])), - AllTypes('text2', true, date_1, 2.2, id_2, uid_2, 2, Decimal128.ten), - AllTypes('text3', true, date_2, 3.3, ObjectId(), Uuid.v4(), 3, Decimal128.infinity, binaryProp: Uint8List.fromList([3, 4])), + AllTypes(text_1, false, DateTime.now(), 1.1, id_1, uid_1, 1, Decimal128.one, Uint8List.fromList([1, 2])), + AllTypes('text2', true, date_1, 2.2, id_2, uid_2, 2, Decimal128.ten, Uint8List(16)), + AllTypes('text3', true, date_2, 3.3, ObjectId(), Uuid.v4(), 3, Decimal128.infinity, Uint8List.fromList([3, 4])), ])); void queryWithListArg(String propName, Object? argument, {int expected = 0}) { diff --git a/packages/realm_dart/test/test.dart b/packages/realm_dart/test/test.dart index 3c3e71641..11877de1d 100644 --- a/packages/realm_dart/test/test.dart +++ b/packages/realm_dart/test/test.dart @@ -109,7 +109,6 @@ class _Schedule { @RealmModel() class _Foo { late Uint8List requiredBinaryProp; - var defaultValueBinaryProp = Uint8List(8); late Uint8List? nullableBinaryProp; } @@ -123,7 +122,7 @@ class _AllTypes { late Uuid uuidProp; late int intProp; late Decimal128 decimalProp; - var binaryProp = Uint8List(16); + late Uint8List binaryProp; late String? nullableStringProp; late bool? nullableBoolProp; diff --git a/packages/realm_dart/test/test.realm.dart b/packages/realm_dart/test/test.realm.dart index 1a9c2cfa6..628dd54d6 100644 --- a/packages/realm_dart/test/test.realm.dart +++ b/packages/realm_dart/test/test.realm.dart @@ -236,6 +236,8 @@ class Team extends _Team with RealmEntity, RealmObjectBase, RealmObject { } => Team( fromEJson(name), + players: fromEJson(players), + scores: fromEJson(scores), ), _ => raiseInvalidEJson(ejson), }; @@ -343,15 +345,15 @@ class School extends _School with RealmEntity, RealmObjectBase, RealmObject { School( String name, { String? city, - School? branchOfSchool, Iterable students = const [], + School? branchOfSchool, Iterable branches = const [], }) { RealmObjectBase.set(this, 'name', name); RealmObjectBase.set(this, 'city', city); - RealmObjectBase.set(this, 'branchOfSchool', branchOfSchool); RealmObjectBase.set>( this, 'students', RealmList(students)); + RealmObjectBase.set(this, 'branchOfSchool', branchOfSchool); RealmObjectBase.set>( this, 'branches', RealmList(branches)); } @@ -419,7 +421,9 @@ class School extends _School with RealmEntity, RealmObjectBase, RealmObject { School( fromEJson(name), city: fromEJson(city), + students: fromEJson(students), branchOfSchool: fromEJson(branchOfSchool), + branches: fromEJson(branches), ), _ => raiseInvalidEJson(ejson), }; @@ -492,6 +496,7 @@ class RemappedClass extends $RemappedClass } => RemappedClass( fromEJson(remappedProperty), + listProperty: fromEJson(listProperty), ), _ => raiseInvalidEJson(ejson), }; @@ -673,6 +678,7 @@ class Schedule extends _Schedule } => Schedule( fromEJson(id), + tasks: fromEJson(tasks), ), _ => raiseInvalidEJson(ejson), }; @@ -693,12 +699,9 @@ class Schedule extends _Schedule class Foo extends _Foo with RealmEntity, RealmObjectBase, RealmObject { Foo( Uint8List requiredBinaryProp, { - Uint8List? defaultValueBinaryProp, Uint8List? nullableBinaryProp, }) { RealmObjectBase.set(this, 'requiredBinaryProp', requiredBinaryProp); - RealmObjectBase.set( - this, 'defaultValueBinaryProp', defaultValueBinaryProp ?? Uint8List(8)); RealmObjectBase.set(this, 'nullableBinaryProp', nullableBinaryProp); } @@ -711,14 +714,6 @@ class Foo extends _Foo with RealmEntity, RealmObjectBase, RealmObject { set requiredBinaryProp(Uint8List value) => RealmObjectBase.set(this, 'requiredBinaryProp', value); - @override - Uint8List get defaultValueBinaryProp => - RealmObjectBase.get(this, 'defaultValueBinaryProp') - as Uint8List; - @override - set defaultValueBinaryProp(Uint8List value) => - RealmObjectBase.set(this, 'defaultValueBinaryProp', value); - @override Uint8List? get nullableBinaryProp => RealmObjectBase.get(this, 'nullableBinaryProp') as Uint8List?; @@ -736,7 +731,6 @@ class Foo extends _Foo with RealmEntity, RealmObjectBase, RealmObject { EJsonValue toEJson() { return { 'requiredBinaryProp': requiredBinaryProp.toEJson(), - 'defaultValueBinaryProp': defaultValueBinaryProp.toEJson(), 'nullableBinaryProp': nullableBinaryProp.toEJson(), }; } @@ -746,12 +740,10 @@ class Foo extends _Foo with RealmEntity, RealmObjectBase, RealmObject { return switch (ejson) { { 'requiredBinaryProp': EJsonValue requiredBinaryProp, - 'defaultValueBinaryProp': EJsonValue defaultValueBinaryProp, 'nullableBinaryProp': EJsonValue nullableBinaryProp, } => Foo( fromEJson(requiredBinaryProp), - defaultValueBinaryProp: fromEJson(defaultValueBinaryProp), nullableBinaryProp: fromEJson(nullableBinaryProp), ), _ => raiseInvalidEJson(ejson), @@ -763,7 +755,6 @@ class Foo extends _Foo with RealmEntity, RealmObjectBase, RealmObject { register(_toEJson, _fromEJson); return const SchemaObject(ObjectType.realmObject, Foo, 'Foo', [ SchemaProperty('requiredBinaryProp', RealmPropertyType.binary), - SchemaProperty('defaultValueBinaryProp', RealmPropertyType.binary), SchemaProperty('nullableBinaryProp', RealmPropertyType.binary, optional: true), ]); @@ -780,8 +771,8 @@ class AllTypes extends _AllTypes ObjectId objectIdProp, Uuid uuidProp, int intProp, - Decimal128 decimalProp, { - Uint8List? binaryProp, + Decimal128 decimalProp, + Uint8List binaryProp, { String? nullableStringProp, bool? nullableBoolProp, DateTime? nullableDateProp, @@ -800,7 +791,7 @@ class AllTypes extends _AllTypes RealmObjectBase.set(this, 'uuidProp', uuidProp); RealmObjectBase.set(this, 'intProp', intProp); RealmObjectBase.set(this, 'decimalProp', decimalProp); - RealmObjectBase.set(this, 'binaryProp', binaryProp ?? Uint8List(16)); + RealmObjectBase.set(this, 'binaryProp', binaryProp); RealmObjectBase.set(this, 'nullableStringProp', nullableStringProp); RealmObjectBase.set(this, 'nullableBoolProp', nullableBoolProp); RealmObjectBase.set(this, 'nullableDateProp', nullableDateProp); @@ -996,7 +987,7 @@ class AllTypes extends _AllTypes fromEJson(uuidProp), fromEJson(intProp), fromEJson(decimalProp), - binaryProp: fromEJson(binaryProp), + fromEJson(binaryProp), nullableStringProp: fromEJson(nullableStringProp), nullableBoolProp: fromEJson(nullableBoolProp), nullableDateProp: fromEJson(nullableDateProp), @@ -1129,6 +1120,9 @@ class LinksClass extends _LinksClass LinksClass( fromEJson(id), link: fromEJson(link), + list: fromEJson(list), + linksSet: fromEJson(linksSet), + map: fromEJson(map), ), _ => raiseInvalidEJson(ejson), }; @@ -1770,7 +1764,56 @@ class AllCollections extends _AllCollections 'nullableIntMap': EJsonValue nullableIntMap, 'nullableDecimalMap': EJsonValue nullableDecimalMap, } => - AllCollections(), + AllCollections( + stringList: fromEJson(stringList), + boolList: fromEJson(boolList), + dateList: fromEJson(dateList), + doubleList: fromEJson(doubleList), + objectIdList: fromEJson(objectIdList), + uuidList: fromEJson(uuidList), + intList: fromEJson(intList), + decimalList: fromEJson(decimalList), + nullableStringList: fromEJson(nullableStringList), + nullableBoolList: fromEJson(nullableBoolList), + nullableDateList: fromEJson(nullableDateList), + nullableDoubleList: fromEJson(nullableDoubleList), + nullableObjectIdList: fromEJson(nullableObjectIdList), + nullableUuidList: fromEJson(nullableUuidList), + nullableIntList: fromEJson(nullableIntList), + nullableDecimalList: fromEJson(nullableDecimalList), + stringSet: fromEJson(stringSet), + boolSet: fromEJson(boolSet), + dateSet: fromEJson(dateSet), + doubleSet: fromEJson(doubleSet), + objectIdSet: fromEJson(objectIdSet), + uuidSet: fromEJson(uuidSet), + intSet: fromEJson(intSet), + decimalSet: fromEJson(decimalSet), + nullableStringSet: fromEJson(nullableStringSet), + nullableBoolSet: fromEJson(nullableBoolSet), + nullableDateSet: fromEJson(nullableDateSet), + nullableDoubleSet: fromEJson(nullableDoubleSet), + nullableObjectIdSet: fromEJson(nullableObjectIdSet), + nullableUuidSet: fromEJson(nullableUuidSet), + nullableIntSet: fromEJson(nullableIntSet), + nullableDecimalSet: fromEJson(nullableDecimalSet), + stringMap: fromEJson(stringMap), + boolMap: fromEJson(boolMap), + dateMap: fromEJson(dateMap), + doubleMap: fromEJson(doubleMap), + objectIdMap: fromEJson(objectIdMap), + uuidMap: fromEJson(uuidMap), + intMap: fromEJson(intMap), + decimalMap: fromEJson(decimalMap), + nullableStringMap: fromEJson(nullableStringMap), + nullableBoolMap: fromEJson(nullableBoolMap), + nullableDateMap: fromEJson(nullableDateMap), + nullableDoubleMap: fromEJson(nullableDoubleMap), + nullableObjectIdMap: fromEJson(nullableObjectIdMap), + nullableUuidMap: fromEJson(nullableUuidMap), + nullableIntMap: fromEJson(nullableIntMap), + nullableDecimalMap: fromEJson(nullableDecimalMap), + ), _ => raiseInvalidEJson(ejson), }; } @@ -2153,14 +2196,14 @@ class Party extends _Party with RealmEntity, RealmObjectBase, RealmObject { Party( int year, { Friend? host, - Party? previous, Iterable guests = const [], + Party? previous, }) { RealmObjectBase.set(this, 'host', host); RealmObjectBase.set(this, 'year', year); - RealmObjectBase.set(this, 'previous', previous); RealmObjectBase.set>( this, 'guests', RealmList(guests)); + RealmObjectBase.set(this, 'previous', previous); } Party._(); @@ -2216,6 +2259,7 @@ class Party extends _Party with RealmEntity, RealmObjectBase, RealmObject { Party( fromEJson(year), host: fromEJson(host), + guests: fromEJson(guests), previous: fromEJson(previous), ), _ => raiseInvalidEJson(ejson), @@ -2313,6 +2357,7 @@ class Friend extends _Friend with RealmEntity, RealmObjectBase, RealmObject { fromEJson(name), age: fromEJson(age), bestFriend: fromEJson(bestFriend), + friends: fromEJson(friends), ), _ => raiseInvalidEJson(ejson), }; @@ -2453,6 +2498,7 @@ class Player extends _Player with RealmEntity, RealmObjectBase, RealmObject { Player( fromEJson(name), game: fromEJson(game), + scoresByRound: fromEJson(scoresByRound), ), _ => raiseInvalidEJson(ejson), }; @@ -2507,7 +2553,9 @@ class Game extends _Game with RealmEntity, RealmObjectBase, RealmObject { { 'winnerByRound': EJsonValue winnerByRound, } => - Game(), + Game( + winnerByRound: fromEJson(winnerByRound), + ), _ => raiseInvalidEJson(ejson), }; } @@ -2828,6 +2876,14 @@ class AllTypesEmbedded extends _AllTypesEmbedded nullableUuidProp: fromEJson(nullableUuidProp), nullableIntProp: fromEJson(nullableIntProp), nullableDecimalProp: fromEJson(nullableDecimalProp), + strings: fromEJson(strings), + bools: fromEJson(bools), + dates: fromEJson(dates), + doubles: fromEJson(doubles), + objectIds: fromEJson(objectIds), + uuids: fromEJson(uuids), + ints: fromEJson(ints), + decimals: fromEJson(decimals), ), _ => raiseInvalidEJson(ejson), }; @@ -2887,16 +2943,16 @@ class ObjectWithEmbedded extends _ObjectWithEmbedded String id, { Uuid? differentiator, AllTypesEmbedded? singleObject, - RecursiveEmbedded1? recursiveObject, Iterable list = const [], + RecursiveEmbedded1? recursiveObject, Iterable recursiveList = const [], }) { RealmObjectBase.set(this, '_id', id); RealmObjectBase.set(this, 'differentiator', differentiator); RealmObjectBase.set(this, 'singleObject', singleObject); - RealmObjectBase.set(this, 'recursiveObject', recursiveObject); RealmObjectBase.set>( this, 'list', RealmList(list)); + RealmObjectBase.set(this, 'recursiveObject', recursiveObject); RealmObjectBase.set>( this, 'recursiveList', RealmList(recursiveList)); } @@ -2981,7 +3037,9 @@ class ObjectWithEmbedded extends _ObjectWithEmbedded fromEJson(id), differentiator: fromEJson(differentiator), singleObject: fromEJson(singleObject), + list: fromEJson(list), recursiveObject: fromEJson(recursiveObject), + recursiveList: fromEJson(recursiveList), ), _ => raiseInvalidEJson(ejson), }; @@ -3014,14 +3072,14 @@ class RecursiveEmbedded1 extends _RecursiveEmbedded1 RecursiveEmbedded1( String value, { RecursiveEmbedded2? child, - ObjectWithEmbedded? realmObject, Iterable children = const [], + ObjectWithEmbedded? realmObject, }) { RealmObjectBase.set(this, 'value', value); RealmObjectBase.set(this, 'child', child); - RealmObjectBase.set(this, 'realmObject', realmObject); RealmObjectBase.set>( this, 'children', RealmList(children)); + RealmObjectBase.set(this, 'realmObject', realmObject); } RecursiveEmbedded1._(); @@ -3084,6 +3142,7 @@ class RecursiveEmbedded1 extends _RecursiveEmbedded1 RecursiveEmbedded1( fromEJson(value), child: fromEJson(child), + children: fromEJson(children), realmObject: fromEJson(realmObject), ), _ => raiseInvalidEJson(ejson), @@ -3112,14 +3171,14 @@ class RecursiveEmbedded2 extends _RecursiveEmbedded2 RecursiveEmbedded2( String value, { RecursiveEmbedded3? child, - ObjectWithEmbedded? realmObject, Iterable children = const [], + ObjectWithEmbedded? realmObject, }) { RealmObjectBase.set(this, 'value', value); RealmObjectBase.set(this, 'child', child); - RealmObjectBase.set(this, 'realmObject', realmObject); RealmObjectBase.set>( this, 'children', RealmList(children)); + RealmObjectBase.set(this, 'realmObject', realmObject); } RecursiveEmbedded2._(); @@ -3182,6 +3241,7 @@ class RecursiveEmbedded2 extends _RecursiveEmbedded2 RecursiveEmbedded2( fromEJson(value), child: fromEJson(child), + children: fromEJson(children), realmObject: fromEJson(realmObject), ), _ => raiseInvalidEJson(ejson), @@ -3385,6 +3445,7 @@ class Asymmetric extends _Asymmetric Asymmetric( fromEJson(id), symmetric: fromEJson(symmetric), + embeddedObjects: fromEJson(embeddedObjects), ), _ => raiseInvalidEJson(ejson), }; diff --git a/packages/realm_dart/tool/build.dart b/packages/realm_dart/tool/build.dart index 85b890c1d..bb10c7175 100644 --- a/packages/realm_dart/tool/build.dart +++ b/packages/realm_dart/tool/build.dart @@ -159,10 +159,11 @@ class _BuildNativeCommand extends _BaseCommand { Future runProc(List args, {required Logger logger, String? message}) async { final p = await io.Process.start(args.first, args.skip(1).toList()); Progress? progress; + message ??= args.join(' '); if (verbose) { + logger.info(message); await Future.wait([io.stdout.addStream(p.stdout), io.stderr.addStream(p.stderr)]); } else { - message ??= args.join(' '); final width = io.stdout.hasTerminal ? io.stdout.terminalColumns - 12 : 80; message = message.padRight(width).substring(0, width); progress = logger.progress(message); @@ -207,12 +208,16 @@ class _BuildNativeCommand extends _BaseCommand { exitCode ??= await runProc(['cmake', '--preset=ios'], logger: logger); exitCode ??= await runProc(['cmake', '--build', '--preset=ios-${sdk.cmakeName}', '--config=${buildMode.cmakeName}'], logger: logger); } + final output = io.Directory('./binary/ios/realm_dart.xcframework'); + if (await output.exists()) { + await output.delete(recursive: true); + } exitCode ??= await runProc( [ 'xcodebuild', '-create-xcframework', - for (final s in iosSdks) '-framework ./binary/ios/${buildMode.cmakeName}-${s.name.toLowerCase()}/realm_dart.framework', - '-output ./binary/ios/realm_dart.xcframework', + for (final s in iosSdks) ...['-framework', './binary/ios/${buildMode.cmakeName}-${s.name.toLowerCase()}/realm_dart.framework'], + ...['-output', output.path], ], logger: logger, ); @@ -230,7 +235,6 @@ class _BuildNativeCommand extends _BaseCommand { '--build', '--preset=$preset', '--config=${buildMode.cmakeName}', - if (target.os == OS.macOS) '-- -destination "generic/platform=macOS', if (target.os == OS.android) '--target=strip', ], logger: logger, diff --git a/packages/realm_generator/lib/src/field_element_ex.dart b/packages/realm_generator/lib/src/field_element_ex.dart index f44947e96..d7f001262 100644 --- a/packages/realm_generator/lib/src/field_element_ex.dart +++ b/packages/realm_generator/lib/src/field_element_ex.dart @@ -322,11 +322,11 @@ extension FieldElementEx on FieldElement { ); } - final intiExpression = initializerExpression; - if (intiExpression != null) { + final initExpression = initializerExpression; + if (initExpression != null) { throw RealmInvalidGenerationSourceError( 'Realm object references should not have default values', - primarySpan: initializerExpressionSpan(file, intiExpression), + primarySpan: initializerExpressionSpan(file, initExpression), primaryLabel: ' Remove the default value', todo: 'Remove the default value for field "$displayName"', element: this, @@ -346,6 +346,17 @@ extension FieldElementEx on FieldElement { } } + final initExpression = initializerExpression; + if (initExpression != null && initExpression is! Literal) { + throw RealmInvalidGenerationSourceError( + 'Field initializers must be constant', + primarySpan: initializerExpressionSpan(file, initExpression), + primaryLabel: 'Must be const', + todo: 'Ensure the default value for field "$displayName" is const', + element: this, + ); + } + return RealmFieldInfo( fieldElement: this, indexType: indexType, diff --git a/packages/realm_generator/lib/src/realm_field_info.dart b/packages/realm_generator/lib/src/realm_field_info.dart index 68c7202a6..2ad0ae4e6 100644 --- a/packages/realm_generator/lib/src/realm_field_info.dart +++ b/packages/realm_generator/lib/src/realm_field_info.dart @@ -32,7 +32,7 @@ class RealmFieldInfo { bool get isLate => fieldElement.isLate; bool get hasDefaultValue => fieldElement.hasInitializer; bool get optional => type.basicType.isNullable || realmType == RealmPropertyType.mixed; - bool get isRequired => !(hasDefaultValue || optional); + bool get isRequired => !(hasDefaultValue || optional || isRealmCollection); bool get isRealmBacklink => realmType == RealmPropertyType.linkingObjects; bool get isMixed => realmType == RealmPropertyType.mixed; bool get isComputed => isRealmBacklink; // only computed, so far diff --git a/packages/realm_generator/lib/src/realm_model_info.dart b/packages/realm_generator/lib/src/realm_model_info.dart index 0866c2d5f..2c49d9269 100644 --- a/packages/realm_generator/lib/src/realm_model_info.dart +++ b/packages/realm_generator/lib/src/realm_model_info.dart @@ -7,6 +7,10 @@ import 'dart_type_ex.dart'; import 'field_element_ex.dart'; import 'realm_field_info.dart'; +extension on Iterable { + Iterable except(bool Function(T) test) => where((e) => !test(e)); +} + class RealmModelInfo { final String name; final String modelName; @@ -19,36 +23,32 @@ class RealmModelInfo { Iterable toCode() sync* { yield 'class $name extends $modelName with RealmEntity, RealmObjectBase, ${baseType.className} {'; { - final allSettable = fields.where((f) => !f.type.isRealmCollection && !f.isRealmBacklink).toList(); + final allSettable = fields.where((f) => !f.isComputed).toList(); - final fieldsWithDefaultValue = allSettable.where((f) => f.hasDefaultValue && !f.type.isUint8List).toList(); - final shouldEmitDefaultsSet = fieldsWithDefaultValue.isNotEmpty; + final fieldsWithRealmDefaults = allSettable.where((f) => f.hasDefaultValue && !f.isRealmCollection).toList(); + final shouldEmitDefaultsSet = fieldsWithRealmDefaults.isNotEmpty; if (shouldEmitDefaultsSet) { yield 'static var _defaultsSet = false;'; yield ''; } - final required = allSettable.where((f) => f.isRequired || f.isPrimaryKey); - final notRequired = allSettable.where((f) => !f.isRequired && !f.isPrimaryKey); - final lists = fields.where((f) => f.isDartCoreList).toList(); - final sets = fields.where((f) => f.isDartCoreSet).toList(); - final maps = fields.where((f) => f.isDartCoreMap).toList(); + bool requiredCondition(RealmFieldInfo f) => f.isRequired || f.isPrimaryKey; + final required = allSettable.where(requiredCondition); + final notRequired = allSettable.except(requiredCondition); // Constructor yield '$name('; { yield* required.map((f) => '${f.mappedTypeName} ${f.name},'); - if (notRequired.isNotEmpty || lists.isNotEmpty || sets.isNotEmpty || maps.isNotEmpty) { + if (notRequired.isNotEmpty) { yield '{'; yield* notRequired.map((f) { - if (f.type.isUint8List && f.hasDefaultValue) { - return '${f.mappedTypeName}? ${f.name},'; + if (f.isRealmCollection) { + final collectionPrefix = f.type.isDartCoreList ? 'Iterable<' : f.type.isDartCoreSet ? 'Set<' : 'Map ${f.name}${f.initializer},'; } return '${f.mappedTypeName} ${f.name}${f.initializer},'; }); - yield* lists.map((c) => 'Iterable<${c.type.basicMappedName}> ${c.name}${c.initializer},'); - yield* sets.map((c) => 'Set<${c.type.basicMappedName}> ${c.name}${c.initializer},'); - yield* maps.map((c) => 'Map ${c.name}${c.initializer},'); yield '}'; } @@ -57,7 +57,7 @@ class RealmModelInfo { if (shouldEmitDefaultsSet) { yield 'if (!_defaultsSet) {'; yield ' _defaultsSet = RealmObjectBase.setDefaults<$name>({'; - yield* fieldsWithDefaultValue.map((f) => "'${f.realmName}': ${f.fieldElement.initializerExpression},"); + yield* fieldsWithRealmDefaults.map((f) => "'${f.realmName}': ${f.fieldElement.initializerExpression},"); yield ' });'; yield '}'; } @@ -66,21 +66,11 @@ class RealmModelInfo { if (f.type.isUint8List && f.hasDefaultValue) { return "RealmObjectBase.set(this, '${f.realmName}', ${f.name} ?? ${f.fieldElement.initializerExpression});"; } - + if (f.isRealmCollection) { + return "RealmObjectBase.set<${f.mappedTypeName}>(this, '${f.realmName}', ${f.mappedTypeName}(${f.name}));"; + } return "RealmObjectBase.set(this, '${f.realmName}', ${f.name});"; }); - - yield* lists.map((c) { - return "RealmObjectBase.set<${c.mappedTypeName}>(this, '${c.realmName}', ${c.mappedTypeName}(${c.name}));"; - }); - - yield* sets.map((c) { - return "RealmObjectBase.set<${c.mappedTypeName}>(this, '${c.realmName}', ${c.mappedTypeName}(${c.name}));"; - }); - - yield* maps.map((c) { - return "RealmObjectBase.set<${c.mappedTypeName}>(this, '${c.realmName}', ${c.mappedTypeName}(${c.name}));"; - }); } yield '}'; yield ''; diff --git a/packages/realm_generator/test/error_test_data/const_initializer.dart b/packages/realm_generator/test/error_test_data/const_initializer.dart new file mode 100644 index 000000000..10417f43f --- /dev/null +++ b/packages/realm_generator/test/error_test_data/const_initializer.dart @@ -0,0 +1,10 @@ +import 'dart:math'; + +import 'package:realm_common/realm_common.dart'; + +part 'const_initializer.realm.dart'; + +@RealmModel() +class _Bad { + var id = Random().nextInt(1000); +} diff --git a/packages/realm_generator/test/error_test_data/const_initializer.expected b/packages/realm_generator/test/error_test_data/const_initializer.expected new file mode 100644 index 000000000..8d5ed869a --- /dev/null +++ b/packages/realm_generator/test/error_test_data/const_initializer.expected @@ -0,0 +1,11 @@ +Field initializers must be constant + +in: asset:pkg/test/error_test_data/const_initializer.dart:9:12 + ╷ +7 │ @RealmModel() +8 │ class _Bad { + │ ━━━━ in realm model for 'Bad' +9 │ var id = Random().nextInt(1000); + │ ^^^^^^^^^^^^^^^^^^^^^^ Must be const + ╵ +Ensure the default value for field "id" is const \ No newline at end of file diff --git a/packages/realm_generator/test/error_test_data/const_initializer.realm.dart b/packages/realm_generator/test/error_test_data/const_initializer.realm.dart new file mode 100644 index 000000000..f52e5e45a --- /dev/null +++ b/packages/realm_generator/test/error_test_data/const_initializer.realm.dart @@ -0,0 +1,4 @@ +// MOCK FILE! This file exists to ensure the parent file is valid Dart. +// The parent will be used as input to the realm_generator in a test, and the +// output compared to the .expected file. +part of 'const_initializer.dart'; diff --git a/packages/realm_generator/test/good_test_data/all_types.dart b/packages/realm_generator/test/good_test_data/all_types.dart index 2c65be60c..daac19992 100644 --- a/packages/realm_generator/test/good_test_data/all_types.dart +++ b/packages/realm_generator/test/good_test_data/all_types.dart @@ -18,10 +18,10 @@ class _Bar { late String name; @Indexed() late bool aBool, another; // both are indexed! - var data = Uint8List(16); + late Uint8List data; @MapTo('tidspunkt') @Indexed() - var timestamp = DateTime.now(); + late DateTime timestamp; var aDouble = 0.0; // late Decimal128 decimal; // not supported yet _Foo? foo; diff --git a/packages/realm_generator/test/good_test_data/all_types.expected b/packages/realm_generator/test/good_test_data/all_types.expected index bdd5e45c0..2007bc68f 100644 --- a/packages/realm_generator/test/good_test_data/all_types.expected +++ b/packages/realm_generator/test/good_test_data/all_types.expected @@ -83,43 +83,42 @@ class Bar extends _Bar with RealmEntity, RealmObjectBase, RealmObject { String name, bool aBool, bool another, + Uint8List data, + DateTime timestamp, ObjectId objectId, Uuid uuid, Decimal128 decimal, { - Uint8List? data, - DateTime timestamp = DateTime.now(), double aDouble = 0.0, Foo? foo, - String? anOptionalString, - RealmValue any = const RealmValue.nullValue(), Iterable list = const [], - Iterable manyAny = const [], Set set = const {}, Map map = const {}, + String? anOptionalString, + RealmValue any = const RealmValue.nullValue(), + Iterable manyAny = const [], }) { if (!_defaultsSet) { _defaultsSet = RealmObjectBase.setDefaults({ - 'tidspunkt': DateTime.now(), 'aDouble': 0.0, }); } RealmObjectBase.set(this, 'name', name); RealmObjectBase.set(this, 'aBool', aBool); RealmObjectBase.set(this, 'another', another); - RealmObjectBase.set(this, 'data', data ?? Uint8List(16)); + RealmObjectBase.set(this, 'data', data); RealmObjectBase.set(this, 'tidspunkt', timestamp); RealmObjectBase.set(this, 'aDouble', aDouble); RealmObjectBase.set(this, 'foo', foo); RealmObjectBase.set(this, 'objectId', objectId); RealmObjectBase.set(this, 'uuid', uuid); + RealmObjectBase.set>(this, 'list', RealmList(list)); + RealmObjectBase.set>(this, 'set', RealmSet(set)); + RealmObjectBase.set>(this, 'map', RealmMap(map)); RealmObjectBase.set(this, 'anOptionalString', anOptionalString); RealmObjectBase.set(this, 'any', any); - RealmObjectBase.set(this, 'decimal', decimal); - RealmObjectBase.set>(this, 'list', RealmList(list)); RealmObjectBase.set>( this, 'manyAny', RealmList(manyAny)); - RealmObjectBase.set>(this, 'set', RealmSet(set)); - RealmObjectBase.set>(this, 'map', RealmMap(map)); + RealmObjectBase.set(this, 'decimal', decimal); } Bar._(); @@ -284,15 +283,19 @@ class Bar extends _Bar with RealmEntity, RealmObjectBase, RealmObject { fromEJson(name), fromEJson(aBool), fromEJson(another), + fromEJson(data), + fromEJson(timestamp), fromEJson(objectId), fromEJson(uuid), fromEJson(decimal), - data: fromEJson(data), - timestamp: fromEJson(timestamp), aDouble: fromEJson(aDouble), foo: fromEJson(foo), + list: fromEJson(list), + set: fromEJson(set), + map: fromEJson(map), anOptionalString: fromEJson(anOptionalString), any: fromEJson(any), + manyAny: fromEJson(manyAny), ), _ => raiseInvalidEJson(ejson), }; diff --git a/packages/realm_generator/test/good_test_data/another_mapto.expected_multi b/packages/realm_generator/test/good_test_data/another_mapto.expected_multi index 0379a2c6a..56a02c4fe 100644 --- a/packages/realm_generator/test/good_test_data/another_mapto.expected_multi +++ b/packages/realm_generator/test/good_test_data/another_mapto.expected_multi @@ -57,6 +57,7 @@ class MappedToo extends _MappedToo } => MappedToo( singleLink: fromEJson(singleLink), + listLink: fromEJson(listLink), ), _ => raiseInvalidEJson(ejson), }; diff --git a/packages/realm_generator/test/good_test_data/asymmetric_object.expected b/packages/realm_generator/test/good_test_data/asymmetric_object.expected index e6830bb76..fb44a52f3 100644 --- a/packages/realm_generator/test/good_test_data/asymmetric_object.expected +++ b/packages/realm_generator/test/good_test_data/asymmetric_object.expected @@ -11,15 +11,15 @@ class Asymmetric extends _Asymmetric with RealmEntity, RealmObjectBase, RealmObject { Asymmetric( ObjectId id, { + Iterable children = const [], Embedded? father, Embedded? mother, - Iterable children = const [], }) { RealmObjectBase.set(this, '_id', id); - RealmObjectBase.set(this, 'father', father); - RealmObjectBase.set(this, 'mother', mother); RealmObjectBase.set>( this, 'children', RealmList(children)); + RealmObjectBase.set(this, 'father', father); + RealmObjectBase.set(this, 'mother', mother); } Asymmetric._(); @@ -77,6 +77,7 @@ class Asymmetric extends _Asymmetric } => Asymmetric( fromEJson(id), + children: fromEJson(children), father: fromEJson(father), mother: fromEJson(mother), ), diff --git a/packages/realm_generator/test/good_test_data/binary_type.dart b/packages/realm_generator/test/good_test_data/binary_type.dart index 0eb0aeb31..b3da88386 100644 --- a/packages/realm_generator/test/good_test_data/binary_type.dart +++ b/packages/realm_generator/test/good_test_data/binary_type.dart @@ -7,6 +7,5 @@ part 'binary_type.realm.dart'; @RealmModel() class _Foo { late Uint8List requiredBinaryProp; - var defaultValueBinaryProp = Uint8List(8); late Uint8List? nullableBinaryProp; } diff --git a/packages/realm_generator/test/good_test_data/binary_type.expected b/packages/realm_generator/test/good_test_data/binary_type.expected index 12818f4f7..bec9648ee 100644 --- a/packages/realm_generator/test/good_test_data/binary_type.expected +++ b/packages/realm_generator/test/good_test_data/binary_type.expected @@ -10,12 +10,9 @@ part of 'binary_type.dart'; class Foo extends _Foo with RealmEntity, RealmObjectBase, RealmObject { Foo( Uint8List requiredBinaryProp, { - Uint8List? defaultValueBinaryProp, Uint8List? nullableBinaryProp, }) { RealmObjectBase.set(this, 'requiredBinaryProp', requiredBinaryProp); - RealmObjectBase.set( - this, 'defaultValueBinaryProp', defaultValueBinaryProp ?? Uint8List(8)); RealmObjectBase.set(this, 'nullableBinaryProp', nullableBinaryProp); } @@ -28,14 +25,6 @@ class Foo extends _Foo with RealmEntity, RealmObjectBase, RealmObject { set requiredBinaryProp(Uint8List value) => RealmObjectBase.set(this, 'requiredBinaryProp', value); - @override - Uint8List get defaultValueBinaryProp => - RealmObjectBase.get(this, 'defaultValueBinaryProp') - as Uint8List; - @override - set defaultValueBinaryProp(Uint8List value) => - RealmObjectBase.set(this, 'defaultValueBinaryProp', value); - @override Uint8List? get nullableBinaryProp => RealmObjectBase.get(this, 'nullableBinaryProp') as Uint8List?; @@ -53,7 +42,6 @@ class Foo extends _Foo with RealmEntity, RealmObjectBase, RealmObject { EJsonValue toEJson() { return { 'requiredBinaryProp': requiredBinaryProp.toEJson(), - 'defaultValueBinaryProp': defaultValueBinaryProp.toEJson(), 'nullableBinaryProp': nullableBinaryProp.toEJson(), }; } @@ -63,12 +51,10 @@ class Foo extends _Foo with RealmEntity, RealmObjectBase, RealmObject { return switch (ejson) { { 'requiredBinaryProp': EJsonValue requiredBinaryProp, - 'defaultValueBinaryProp': EJsonValue defaultValueBinaryProp, 'nullableBinaryProp': EJsonValue nullableBinaryProp, } => Foo( fromEJson(requiredBinaryProp), - defaultValueBinaryProp: fromEJson(defaultValueBinaryProp), nullableBinaryProp: fromEJson(nullableBinaryProp), ), _ => raiseInvalidEJson(ejson), @@ -80,7 +66,6 @@ class Foo extends _Foo with RealmEntity, RealmObjectBase, RealmObject { register(_toEJson, _fromEJson); return const SchemaObject(ObjectType.realmObject, Foo, 'Foo', [ SchemaProperty('requiredBinaryProp', RealmPropertyType.binary), - SchemaProperty('defaultValueBinaryProp', RealmPropertyType.binary), SchemaProperty('nullableBinaryProp', RealmPropertyType.binary, optional: true), ]); diff --git a/packages/realm_generator/test/good_test_data/embedded_annotations.expected b/packages/realm_generator/test/good_test_data/embedded_annotations.expected index 0c2bf60ff..4a1efee3f 100644 --- a/packages/realm_generator/test/good_test_data/embedded_annotations.expected +++ b/packages/realm_generator/test/good_test_data/embedded_annotations.expected @@ -56,6 +56,7 @@ class Parent extends _Parent with RealmEntity, RealmObjectBase, RealmObject { } => Parent( child: fromEJson(child), + children: fromEJson(children), ), _ => raiseInvalidEJson(ejson), }; diff --git a/packages/realm_generator/test/good_test_data/embedded_objects.expected b/packages/realm_generator/test/good_test_data/embedded_objects.expected index fee06000e..a70ce0e1f 100644 --- a/packages/realm_generator/test/good_test_data/embedded_objects.expected +++ b/packages/realm_generator/test/good_test_data/embedded_objects.expected @@ -55,6 +55,7 @@ class Parent extends _Parent with RealmEntity, RealmObjectBase, RealmObject { } => Parent( child: fromEJson(child), + children: fromEJson(children), ), _ => raiseInvalidEJson(ejson), }; @@ -76,14 +77,14 @@ class Child1 extends _Child1 with RealmEntity, RealmObjectBase, EmbeddedObject { Child1( String value, { Child2? child, - Parent? linkToParent, Iterable children = const [], + Parent? linkToParent, }) { RealmObjectBase.set(this, 'value', value); RealmObjectBase.set(this, 'child', child); - RealmObjectBase.set(this, 'linkToParent', linkToParent); RealmObjectBase.set>( this, 'children', RealmList(children)); + RealmObjectBase.set(this, 'linkToParent', linkToParent); } Child1._(); @@ -141,6 +142,7 @@ class Child1 extends _Child1 with RealmEntity, RealmObjectBase, EmbeddedObject { Child1( fromEJson(value), child: fromEJson(child), + children: fromEJson(children), linkToParent: fromEJson(linkToParent), ), _ => raiseInvalidEJson(ejson), diff --git a/packages/realm_generator/test/good_test_data/list_initialization.expected b/packages/realm_generator/test/good_test_data/list_initialization.expected index 9edcfccee..5430a4e2b 100644 --- a/packages/realm_generator/test/good_test_data/list_initialization.expected +++ b/packages/realm_generator/test/good_test_data/list_initialization.expected @@ -149,7 +149,18 @@ class Person extends _Person with RealmEntity, RealmObjectBase, RealmObject { 'initMapWithType': EJsonValue initMapWithType, 'initMapConst': EJsonValue initMapConst, } => - Person(), + Person( + children: fromEJson(children), + initList: fromEJson(initList), + initListWithType: fromEJson(initListWithType), + initListConst: fromEJson(initListConst), + initSet: fromEJson(initSet), + initSetWithType: fromEJson(initSetWithType), + initSetConst: fromEJson(initSetConst), + initMap: fromEJson(initMap), + initMapWithType: fromEJson(initMapWithType), + initMapConst: fromEJson(initMapConst), + ), _ => raiseInvalidEJson(ejson), }; } diff --git a/packages/realm_generator/test/good_test_data/map.expected b/packages/realm_generator/test/good_test_data/map.expected index ee0bebbe1..90fcd3436 100644 --- a/packages/realm_generator/test/good_test_data/map.expected +++ b/packages/realm_generator/test/good_test_data/map.expected @@ -158,7 +158,19 @@ class LotsOfMaps extends _LotsOfMaps 'binary': EJsonValue binary, 'uuids': EJsonValue uuids, } => - LotsOfMaps(), + LotsOfMaps( + persons: fromEJson(persons), + bools: fromEJson(bools), + dateTimes: fromEJson(dateTimes), + decimals: fromEJson(decimals), + doubles: fromEJson(doubles), + ints: fromEJson(ints), + objectIds: fromEJson(objectIds), + any: fromEJson(any), + strings: fromEJson(strings), + binary: fromEJson(binary), + uuids: fromEJson(uuids), + ), _ => raiseInvalidEJson(ejson), }; } diff --git a/packages/realm_generator/test/good_test_data/mapto.expected b/packages/realm_generator/test/good_test_data/mapto.expected index fa9998f32..3007bb42a 100644 --- a/packages/realm_generator/test/good_test_data/mapto.expected +++ b/packages/realm_generator/test/good_test_data/mapto.expected @@ -77,6 +77,7 @@ class Original extends $Original Original( primitiveProperty: fromEJson(primitiveProperty), objectProperty: fromEJson(objectProperty), + listProperty: fromEJson(listProperty), ), _ => raiseInvalidEJson(ejson), }; diff --git a/packages/realm_generator/test/good_test_data/realm_set.expected b/packages/realm_generator/test/good_test_data/realm_set.expected index f387b3bb5..86406c542 100644 --- a/packages/realm_generator/test/good_test_data/realm_set.expected +++ b/packages/realm_generator/test/good_test_data/realm_set.expected @@ -287,6 +287,22 @@ class RealmSets extends _RealmSets } => RealmSets( fromEJson(key), + boolSet: fromEJson(boolSet), + nullableBoolSet: fromEJson(nullableBoolSet), + intSet: fromEJson(intSet), + nullableintSet: fromEJson(nullableintSet), + stringSet: fromEJson(stringSet), + nullablestringSet: fromEJson(nullablestringSet), + doubleSet: fromEJson(doubleSet), + nullabledoubleSet: fromEJson(nullabledoubleSet), + dateTimeSet: fromEJson(dateTimeSet), + nullabledateTimeSet: fromEJson(nullabledateTimeSet), + objectIdSet: fromEJson(objectIdSet), + nullableobjectIdSet: fromEJson(nullableobjectIdSet), + uuidSet: fromEJson(uuidSet), + nullableuuidSet: fromEJson(nullableuuidSet), + realmValueSet: fromEJson(realmValueSet), + realmObjectsSet: fromEJson(realmObjectsSet), ), _ => raiseInvalidEJson(ejson), };