• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "flutter/shell/platform/darwin/common/framework/Headers/FlutterCodecs.h"
6#include "gtest/gtest.h"
7
8TEST(FlutterStringCodec, CanEncodeAndDecodeNil) {
9  FlutterStringCodec* codec = [FlutterStringCodec sharedInstance];
10  ASSERT_TRUE([codec encode:nil] == nil);
11  ASSERT_TRUE([codec decode:nil] == nil);
12}
13
14TEST(FlutterStringCodec, CanEncodeAndDecodeEmptyString) {
15  FlutterStringCodec* codec = [FlutterStringCodec sharedInstance];
16  ASSERT_TRUE([[codec encode:@""] isEqualTo:[NSData data]]);
17  ASSERT_TRUE([[codec decode:[NSData data]] isEqualTo:@""]);
18}
19
20TEST(FlutterStringCodec, CanEncodeAndDecodeAsciiString) {
21  NSString* value = @"hello world";
22  FlutterStringCodec* codec = [FlutterStringCodec sharedInstance];
23  NSData* encoded = [codec encode:value];
24  NSString* decoded = [codec decode:encoded];
25  ASSERT_TRUE([value isEqualTo:decoded]);
26}
27
28TEST(FlutterStringCodec, CanEncodeAndDecodeNonAsciiString) {
29  NSString* value = @"hello \u263A world";
30  FlutterStringCodec* codec = [FlutterStringCodec sharedInstance];
31  NSData* encoded = [codec encode:value];
32  NSString* decoded = [codec decode:encoded];
33  ASSERT_TRUE([value isEqualTo:decoded]);
34}
35
36TEST(FlutterStringCodec, CanEncodeAndDecodeNonBMPString) {
37  NSString* value = @"hello \U0001F602 world";
38  FlutterStringCodec* codec = [FlutterStringCodec sharedInstance];
39  NSData* encoded = [codec encode:value];
40  NSString* decoded = [codec decode:encoded];
41  ASSERT_TRUE([value isEqualTo:decoded]);
42}
43
44TEST(FlutterJSONCodec, CanEncodeAndDecodeNil) {
45  FlutterJSONMessageCodec* codec = [FlutterJSONMessageCodec sharedInstance];
46  ASSERT_TRUE([codec encode:nil] == nil);
47  ASSERT_TRUE([codec decode:nil] == nil);
48}
49
50TEST(FlutterJSONCodec, CanEncodeAndDecodeArray) {
51  NSArray* value = @[ [NSNull null], @"hello", @3.14, @47, @{@"a" : @"nested"} ];
52  FlutterJSONMessageCodec* codec = [FlutterJSONMessageCodec sharedInstance];
53  NSData* encoded = [codec encode:value];
54  NSArray* decoded = [codec decode:encoded];
55  ASSERT_TRUE([value isEqualTo:decoded]);
56}
57
58TEST(FlutterJSONCodec, CanEncodeAndDecodeDictionary) {
59  NSDictionary* value = @{@"a" : @3.14, @"b" : @47, @"c" : [NSNull null], @"d" : @[ @"nested" ]};
60  FlutterJSONMessageCodec* codec = [FlutterJSONMessageCodec sharedInstance];
61  NSData* encoded = [codec encode:value];
62  NSDictionary* decoded = [codec decode:encoded];
63  ASSERT_TRUE([value isEqualTo:decoded]);
64}
65