diff --git a/test/map_copy_extension_test.dart b/test/map_copy_extension_test.dart new file mode 100644 index 00000000..958f01eb --- /dev/null +++ b/test/map_copy_extension_test.dart @@ -0,0 +1,39 @@ +/* + * Famedly Matrix SDK + * Copyright (C) 2020 Famedly GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import 'package:matrix_api_lite/matrix_api_lite.dart'; +import 'package:test/test.dart'; + +void main() { + group('Map-copy-extension', () { + test('it should work', () { + final original = { + 'attr': 'fox', + 'child': { + 'attr': 'bunny', + 'list': [1, 2], + }, + }; + final copy = original.copy(); + original['child']['attr'] = 'raccoon'; + expect(copy['child']['attr'], 'bunny'); + original['child']['list'].add(3); + expect(copy['child']['list'], [1, 2]); + }); + }); +} diff --git a/test/try_get_map_extension_test.dart b/test/try_get_map_extension_test.dart new file mode 100644 index 00000000..886700e3 --- /dev/null +++ b/test/try_get_map_extension_test.dart @@ -0,0 +1,45 @@ +/* + * Famedly Matrix SDK + * Copyright (C) 2020 Famedly GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import 'package:matrix_api_lite/matrix_api_lite.dart'; +import 'package:test/test.dart'; + +void main() { + group('Try-get-map-extension', () { + test('it should work', () { + final data = { + 'str': 'foxies', + 'int': 42, + 'list': [2, 3, 4], + 'map': { + 'beep': 'boop', + }, + }; + expect(data.tryGet('str'), 'foxies'); + expect(data.tryGet('str'), null); + expect(data.tryGet('int'), 42); + expect(data.tryGet('list'), [2, 3, 4]); + expect(data.tryGet>('map')?.tryGet('beep'), + 'boop'); + expect(data.tryGet>('map')?.tryGet('meep'), + null); + expect(data.tryGet>('pam')?.tryGet('beep'), + null); + }); + }); +}