diff --git a/pubspec.lock b/pubspec.lock index 1b2cbcf..0f86396 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -85,6 +85,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "6.6.0" + canonical_json: + dependency: "direct main" + description: + name: canonical_json + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" charcode: dependency: transitive description: @@ -449,6 +456,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.6" + unorm_dart: + dependency: transitive + description: + name: unorm_dart + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.2" vm_service: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 280104f..f271ec7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -10,6 +10,7 @@ environment: dependencies: http: ^0.12.0+2 mime_type: ^0.2.4 + canonical_json: ^1.0.0 dev_dependencies: test: ^1.0.0 diff --git a/test/canonical_json_test.dart b/test/canonical_json_test.dart new file mode 100644 index 0000000..9f9829f --- /dev/null +++ b/test/canonical_json_test.dart @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2019 Zender & Kurtz GbR. + * + * Authors: + * Christian Pauly + * Marcel Radzio + * + * This file is part of famedlysdk. + * + * famedlysdk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * famedlysdk 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with famedlysdk. If not, see . + */ + +import 'package:canonical_json/canonical_json.dart'; +import 'package:test/test.dart'; + +void main() { + /// All Tests related to the ChatTime + group("Canonical Json", () { + Map> textMap = { + '{}': {}, + '{"one":1,"two":"Two"}': {"one": 1, "two": "Two"}, + '{"a":"1","b":"2"}': {"b": "2", "a": "1"}, + '{"auth":{"mxid":"@john.doe:example.com","profile":{"display_name":"John Doe","three_pids":[{"address":"john.doe@example.org","medium":"email"},{"address":"123456789","medium":"msisdn"}]},"success":true}}': + { + "auth": { + "success": true, + "mxid": "@john.doe:example.com", + "profile": { + "display_name": "John Doe", + "three_pids": [ + {"medium": "email", "address": "john.doe@example.org"}, + {"medium": "msisdn", "address": "123456789"} + ] + } + } + }, + '{"a":null}': {"a": null}, + }; + for (final entry in textMap.entries) { + test(entry.key, () async { + expect( + entry.key, String.fromCharCodes(canonicalJson.encode(entry.value))); + }); + } + }); +}