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