Flutter Engine
fl_binary_codec_test.cc File Reference
#include "flutter/shell/platform/linux/public/flutter_linux/fl_binary_codec.h"
#include "flutter/shell/platform/linux/testing/fl_test.h"
#include "gtest/gtest.h"

Go to the source code of this file.

Functions

static gchar * encode_message (FlValue *value)
 
static void encode_message_error (FlValue *value, GQuark domain, int code)
 
static FlValuedecode_message (const char *hex_string)
 
 TEST (FlBinaryCodecTest, EncodeData)
 
 TEST (FlBinaryCodecTest, EncodeEmpty)
 
 TEST (FlBinaryCodecTest, EncodeNullptr)
 
 TEST (FlBinaryCodecTest, EncodeUnknownType)
 
 TEST (FlBinaryCodecTest, DecodeData)
 
 TEST (FlBinaryCodecTest, DecodeEmpty)
 
 TEST (FlBinaryCodecTest, EncodeDecode)
 

Function Documentation

◆ decode_message()

static FlValue* decode_message ( const char *  hex_string)
static

Definition at line 34 of file fl_binary_codec_test.cc.

References error, fl_binary_codec_new(), fl_message_codec_decode_message(), fl_value_ref(), hex_string_to_bytes(), and value.

Referenced by TEST().

34  {
35  g_autoptr(FlBinaryCodec) codec = fl_binary_codec_new();
36  g_autoptr(GBytes) data = hex_string_to_bytes(hex_string);
37  g_autoptr(GError) error = nullptr;
38  g_autoptr(FlValue) value =
39  fl_message_codec_decode_message(FL_MESSAGE_CODEC(codec), data, &error);
40  EXPECT_EQ(error, nullptr);
41  EXPECT_NE(value, nullptr);
42  return fl_value_ref(value);
43 }
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:39
FlMethodResponse GError ** error
G_MODULE_EXPORT FlBinaryCodec * fl_binary_codec_new()
uint8_t value
GBytes * hex_string_to_bytes(const gchar *hex_string)
Definition: fl_test.cc:24
G_MODULE_EXPORT FlValue * fl_value_ref(FlValue *self)
Definition: fl_value.cc:335
G_MODULE_EXPORT FlValue * fl_message_codec_decode_message(FlMessageCodec *self, GBytes *message, GError **error)

◆ encode_message()

static gchar* encode_message ( FlValue value)
static

Definition at line 11 of file fl_binary_codec_test.cc.

References bytes_to_hex_string(), error, fl_binary_codec_new(), and fl_message_codec_encode_message().

Referenced by TEST().

11  {
12  g_autoptr(FlBinaryCodec) codec = fl_binary_codec_new();
13  g_autoptr(GError) error = nullptr;
14  g_autoptr(GBytes) message =
15  fl_message_codec_encode_message(FL_MESSAGE_CODEC(codec), value, &error);
16  EXPECT_NE(message, nullptr);
17  EXPECT_EQ(error, nullptr);
18 
19  return bytes_to_hex_string(message);
20 }
FlMethodResponse GError ** error
gchar * bytes_to_hex_string(GBytes *bytes)
Definition: fl_test.cc:33
G_MODULE_EXPORT FlBinaryCodec * fl_binary_codec_new()
uint8_t value
G_MODULE_EXPORT GBytes * fl_message_codec_encode_message(FlMessageCodec *self, FlValue *message, GError **error)

◆ encode_message_error()

static void encode_message_error ( FlValue value,
GQuark  domain,
int  code 
)
static

Definition at line 23 of file fl_binary_codec_test.cc.

References error, fl_binary_codec_new(), and fl_message_codec_encode_message().

Referenced by TEST().

23  {
24  g_autoptr(FlBinaryCodec) codec = fl_binary_codec_new();
25  g_autoptr(GError) error = nullptr;
26  g_autoptr(GBytes) message =
27  fl_message_codec_encode_message(FL_MESSAGE_CODEC(codec), value, &error);
28  EXPECT_EQ(message, nullptr);
29  EXPECT_TRUE(g_error_matches(error, domain, code));
30 }
FlMethodResponse GError ** error
G_MODULE_EXPORT FlBinaryCodec * fl_binary_codec_new()
uint8_t value
G_MODULE_EXPORT GBytes * fl_message_codec_encode_message(FlMessageCodec *self, FlValue *message, GError **error)

◆ TEST() [1/7]

TEST ( FlBinaryCodecTest  ,
EncodeData   
)

Definition at line 45 of file fl_binary_codec_test.cc.

References encode_message(), fl_value_new_uint8_list(), and value.

45  {
46  uint8_t data[] = {0x00, 0x01, 0x02, 0xFD, 0xFE, 0xFF};
47  g_autoptr(FlValue) value = fl_value_new_uint8_list(data, 6);
48  g_autofree gchar* hex_string = encode_message(value);
49  EXPECT_STREQ(hex_string, "000102fdfeff");
50 }
G_MODULE_EXPORT FlValue * fl_value_new_uint8_list(const uint8_t *data, size_t data_length)
Definition: fl_value.cc:263
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:39
uint8_t value
static gchar * encode_message(FlValue *value)

◆ TEST() [2/7]

TEST ( FlBinaryCodecTest  ,
EncodeEmpty   
)

Definition at line 52 of file fl_binary_codec_test.cc.

References encode_message(), fl_value_new_uint8_list(), and value.

52  {
53  g_autoptr(FlValue) value = fl_value_new_uint8_list(nullptr, 0);
54  g_autofree gchar* hex_string = encode_message(value);
55  EXPECT_STREQ(hex_string, "");
56 }
G_MODULE_EXPORT FlValue * fl_value_new_uint8_list(const uint8_t *data, size_t data_length)
Definition: fl_value.cc:263
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:39
uint8_t value
static gchar * encode_message(FlValue *value)

◆ TEST() [3/7]

TEST ( FlBinaryCodecTest  ,
EncodeNullptr   
)

Definition at line 58 of file fl_binary_codec_test.cc.

References encode_message_error(), FL_MESSAGE_CODEC_ERROR, and FL_MESSAGE_CODEC_ERROR_UNSUPPORTED_TYPE.

58  {
61 }
#define FL_MESSAGE_CODEC_ERROR
static void encode_message_error(FlValue *value, GQuark domain, int code)

◆ TEST() [4/7]

TEST ( FlBinaryCodecTest  ,
EncodeUnknownType   
)

Definition at line 63 of file fl_binary_codec_test.cc.

References encode_message_error(), FL_MESSAGE_CODEC_ERROR, FL_MESSAGE_CODEC_ERROR_UNSUPPORTED_TYPE, fl_value_new_null(), and value.

63  {
64  g_autoptr(FlValue) value = fl_value_new_null();
67 }
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:39
#define FL_MESSAGE_CODEC_ERROR
static void encode_message_error(FlValue *value, GQuark domain, int code)
uint8_t value
G_MODULE_EXPORT FlValue * fl_value_new_null()
Definition: fl_value.cc:222

◆ TEST() [5/7]

TEST ( FlBinaryCodecTest  ,
DecodeData   
)

Definition at line 69 of file fl_binary_codec_test.cc.

References decode_message(), fl_value_get_length(), fl_value_get_type(), fl_value_get_uint8_list(), FL_VALUE_TYPE_UINT8_LIST, and value.

69  {
70  g_autoptr(FlValue) value = decode_message("000102fdfeff");
72  ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(6));
73  EXPECT_EQ(fl_value_get_uint8_list(value)[0], 0x00);
74  EXPECT_EQ(fl_value_get_uint8_list(value)[1], 0x01);
75  EXPECT_EQ(fl_value_get_uint8_list(value)[2], 0x02);
76  EXPECT_EQ(fl_value_get_uint8_list(value)[3], 0xFD);
77  EXPECT_EQ(fl_value_get_uint8_list(value)[4], 0xFE);
78  EXPECT_EQ(fl_value_get_uint8_list(value)[5], 0xFF);
79 }
G_MODULE_EXPORT FlValueType fl_value_get_type(FlValue *self)
Definition: fl_value.cc:395
static FlValue * decode_message(const char *hex_string)
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:39
G_MODULE_EXPORT const uint8_t * fl_value_get_uint8_list(FlValue *self)
Definition: fl_value.cc:603
uint8_t value
G_MODULE_EXPORT size_t fl_value_get_length(FlValue *self)
Definition: fl_value.cc:631

◆ TEST() [6/7]

TEST ( FlBinaryCodecTest  ,
DecodeEmpty   
)

Definition at line 81 of file fl_binary_codec_test.cc.

References decode_message(), fl_value_get_length(), fl_value_get_type(), FL_VALUE_TYPE_UINT8_LIST, and value.

81  {
82  g_autoptr(FlValue) value = decode_message("");
84  ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(0));
85 }
G_MODULE_EXPORT FlValueType fl_value_get_type(FlValue *self)
Definition: fl_value.cc:395
static FlValue * decode_message(const char *hex_string)
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:39
uint8_t value
G_MODULE_EXPORT size_t fl_value_get_length(FlValue *self)
Definition: fl_value.cc:631

◆ TEST() [7/7]

TEST ( FlBinaryCodecTest  ,
EncodeDecode   
)

Definition at line 87 of file fl_binary_codec_test.cc.

References error, fl_binary_codec_new(), fl_message_codec_decode_message(), fl_message_codec_encode_message(), fl_value_equal(), and fl_value_new_uint8_list().

87  {
88  g_autoptr(FlBinaryCodec) codec = fl_binary_codec_new();
89 
90  uint8_t data[] = {0x00, 0x01, 0x02, 0xFD, 0xFE, 0xFF};
91  g_autoptr(FlValue) input = fl_value_new_uint8_list(data, 6);
92 
93  g_autoptr(GError) error = nullptr;
94  g_autoptr(GBytes) message =
95  fl_message_codec_encode_message(FL_MESSAGE_CODEC(codec), input, &error);
96  EXPECT_NE(message, nullptr);
97  EXPECT_EQ(error, nullptr);
98 
99  g_autoptr(FlValue) output =
100  fl_message_codec_decode_message(FL_MESSAGE_CODEC(codec), message, &error);
101  EXPECT_EQ(error, nullptr);
102  EXPECT_NE(output, nullptr);
103 
104  ASSERT_TRUE(fl_value_equal(input, output));
105 }
G_MODULE_EXPORT FlValue * fl_value_new_uint8_list(const uint8_t *data, size_t data_length)
Definition: fl_value.cc:263
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:39
FlMethodResponse GError ** error
G_MODULE_EXPORT bool fl_value_equal(FlValue *a, FlValue *b)
Definition: fl_value.cc:400
G_MODULE_EXPORT FlBinaryCodec * fl_binary_codec_new()
G_MODULE_EXPORT GBytes * fl_message_codec_encode_message(FlMessageCodec *self, FlValue *message, GError **error)
G_MODULE_EXPORT FlValue * fl_message_codec_decode_message(FlMessageCodec *self, GBytes *message, GError **error)