| // 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. |
| |
| #include "flutter/fml/message.h" |
| #include "gtest/gtest.h" |
| |
| namespace fml { |
| |
| struct TestStruct { |
| int a = 12; |
| char b = 'x'; |
| float c = 99.0f; |
| }; |
| |
| TEST(MessageTest, CanEncodeTriviallyCopyableTypes) { |
| Message message; |
| ASSERT_TRUE(message.Encode(12)); |
| ASSERT_TRUE(message.Encode(11.0f)); |
| ASSERT_TRUE(message.Encode('a')); |
| |
| TestStruct s; |
| ASSERT_TRUE(message.Encode(s)); |
| ASSERT_GE(message.GetDataLength(), 0u); |
| ASSERT_GE(message.GetBufferSize(), 0u); |
| ASSERT_EQ(message.GetSizeRead(), 0u); |
| } |
| |
| TEST(MessageTest, CanDecodeTriviallyCopyableTypes) { |
| Message message; |
| ASSERT_TRUE(message.Encode(12)); |
| ASSERT_TRUE(message.Encode(11.0f)); |
| ASSERT_TRUE(message.Encode('a')); |
| TestStruct s; |
| s.a = 10; |
| s.b = 'y'; |
| s.c = 11.1f; |
| |
| ASSERT_TRUE(message.Encode(s)); |
| |
| ASSERT_GE(message.GetDataLength(), 0u); |
| ASSERT_GE(message.GetBufferSize(), 0u); |
| ASSERT_EQ(message.GetSizeRead(), 0u); |
| |
| int int1 = 0; |
| ASSERT_TRUE(message.Decode(int1)); |
| ASSERT_EQ(12, int1); |
| |
| float float1 = 0.0f; |
| ASSERT_TRUE(message.Decode(float1)); |
| ASSERT_EQ(float1, 11.0f); |
| |
| char char1 = 'x'; |
| ASSERT_TRUE(message.Decode(char1)); |
| ASSERT_EQ(char1, 'a'); |
| |
| TestStruct s1; |
| ASSERT_TRUE(message.Decode(s1)); |
| ASSERT_EQ(s1.a, 10); |
| ASSERT_EQ(s1.b, 'y'); |
| ASSERT_EQ(s1.c, 11.1f); |
| |
| ASSERT_NE(message.GetSizeRead(), 0u); |
| ASSERT_EQ(message.GetDataLength(), message.GetSizeRead()); |
| } |
| |
| } // namespace fml |