| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #import "flutter/shell/platform/darwin/common/framework/Headers/FlutterCodecs.h" |
| |
| #include "gtest/gtest.h" |
| |
| FLUTTER_ASSERT_ARC |
| |
| TEST(FlutterStringCodec, CanEncodeAndDecodeNil) { |
| FlutterStringCodec* codec = [FlutterStringCodec sharedInstance]; |
| ASSERT_TRUE([codec encode:nil] == nil); |
| ASSERT_TRUE([codec decode:nil] == nil); |
| } |
| |
| TEST(FlutterStringCodec, CanEncodeAndDecodeEmptyString) { |
| FlutterStringCodec* codec = [FlutterStringCodec sharedInstance]; |
| ASSERT_TRUE([[codec encode:@""] isEqualTo:[NSData data]]); |
| ASSERT_TRUE([[codec decode:[NSData data]] isEqualTo:@""]); |
| } |
| |
| TEST(FlutterStringCodec, CanEncodeAndDecodeAsciiString) { |
| NSString* value = @"hello world"; |
| FlutterStringCodec* codec = [FlutterStringCodec sharedInstance]; |
| NSData* encoded = [codec encode:value]; |
| NSString* decoded = [codec decode:encoded]; |
| ASSERT_TRUE([value isEqualTo:decoded]); |
| } |
| |
| TEST(FlutterStringCodec, CanEncodeAndDecodeNonAsciiString) { |
| NSString* value = @"hello \u263A world"; |
| FlutterStringCodec* codec = [FlutterStringCodec sharedInstance]; |
| NSData* encoded = [codec encode:value]; |
| NSString* decoded = [codec decode:encoded]; |
| ASSERT_TRUE([value isEqualTo:decoded]); |
| } |
| |
| TEST(FlutterStringCodec, CanEncodeAndDecodeNonBMPString) { |
| NSString* value = @"hello \U0001F602 world"; |
| FlutterStringCodec* codec = [FlutterStringCodec sharedInstance]; |
| NSData* encoded = [codec encode:value]; |
| NSString* decoded = [codec decode:encoded]; |
| ASSERT_TRUE([value isEqualTo:decoded]); |
| } |
| |
| TEST(FlutterJSONCodec, CanDecodeZeroLength) { |
| FlutterJSONMessageCodec* codec = [FlutterJSONMessageCodec sharedInstance]; |
| ASSERT_TRUE([codec decode:[NSData data]] == nil); |
| } |
| |
| TEST(FlutterJSONCodec, CanEncodeAndDecodeNil) { |
| FlutterJSONMessageCodec* codec = [FlutterJSONMessageCodec sharedInstance]; |
| ASSERT_TRUE([codec encode:nil] == nil); |
| ASSERT_TRUE([codec decode:nil] == nil); |
| } |
| |
| TEST(FlutterJSONCodec, CanEncodeAndDecodeArray) { |
| NSArray* value = @[ [NSNull null], @"hello", @3.14, @47, @{@"a" : @"nested"} ]; |
| FlutterJSONMessageCodec* codec = [FlutterJSONMessageCodec sharedInstance]; |
| NSData* encoded = [codec encode:value]; |
| NSArray* decoded = [codec decode:encoded]; |
| ASSERT_TRUE([value isEqualTo:decoded]); |
| } |
| |
| TEST(FlutterJSONCodec, CanEncodeAndDecodeDictionary) { |
| NSDictionary* value = @{@"a" : @3.14, @"b" : @47, @"c" : [NSNull null], @"d" : @[ @"nested" ]}; |
| FlutterJSONMessageCodec* codec = [FlutterJSONMessageCodec sharedInstance]; |
| NSData* encoded = [codec encode:value]; |
| NSDictionary* decoded = [codec decode:encoded]; |
| ASSERT_TRUE([value isEqualTo:decoded]); |
| } |