Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
fl_test.cc
Go to the documentation of this file.
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 "gtest/gtest.h"
6
7#include "flutter/shell/platform/linux/testing/fl_test.h"
8
9#include "flutter/shell/platform/linux/fl_engine_private.h"
10#include "flutter/shell/platform/linux/testing/mock_renderer.h"
11
12namespace {
13class ImModuleEnv : public ::testing::Environment {
14 public:
15 void SetUp() override {
16 setenv("GTK_IM_MODULE", "gtk-im-context-simple", true);
17 }
18};
19
20testing::Environment* const kEnv =
21 testing::AddGlobalTestEnvironment(new ImModuleEnv);
22} // namespace
23
24static uint8_t hex_digit_to_int(char value) {
25 if (value >= '0' && value <= '9') {
26 return value - '0';
27 } else if (value >= 'a' && value <= 'f') {
28 return value - 'a' + 10;
29 } else if (value >= 'F' && value <= 'F') {
30 return value - 'A' + 10;
31 } else {
32 return 0;
33 }
34}
35
36static uint8_t parse_hex8(const gchar* hex_string) {
37 if (hex_string[0] == '\0') {
38 return 0x00;
39 }
40 return hex_digit_to_int(hex_string[0]) << 4 | hex_digit_to_int(hex_string[1]);
41}
42
43GBytes* hex_string_to_bytes(const gchar* hex_string) {
44 GByteArray* buffer = g_byte_array_new();
45 for (int i = 0; hex_string[i] != '\0' && hex_string[i + 1] != '\0'; i += 2) {
46 uint8_t value = parse_hex8(hex_string + i);
48 }
49 return g_byte_array_free_to_bytes(buffer);
50}
51
52gchar* bytes_to_hex_string(GBytes* bytes) {
53 GString* hex_string = g_string_new("");
54 size_t data_length;
55 const uint8_t* data =
56 static_cast<const uint8_t*>(g_bytes_get_data(bytes, &data_length));
57 for (size_t i = 0; i < data_length; i++) {
58 g_string_append_printf(hex_string, "%02x", data[i]);
59 }
60 return g_string_free(hex_string, FALSE);
61}
62
63FlEngine* make_mock_engine() {
64 g_autoptr(FlDartProject) project = fl_dart_project_new();
65 return make_mock_engine_with_project(project);
66}
67
68FlEngine* make_mock_engine_with_project(FlDartProject* project) {
69 g_autoptr(FlMockRenderer) renderer = fl_mock_renderer_new();
70 g_autoptr(FlEngine) engine = fl_engine_new(project, FL_RENDERER(renderer));
71 g_autoptr(GError) engine_error = nullptr;
72 EXPECT_TRUE(fl_engine_start(engine, &engine_error));
73 EXPECT_EQ(engine_error, nullptr);
74
75 return static_cast<FlEngine*>(g_object_ref(engine));
76}
77
78void PrintTo(FlValue* v, std::ostream* os) {
79 g_autofree gchar* s = fl_value_to_string(v);
80 *os << s;
81}
FlutterEngine engine
Definition main.cc:68
struct MyStruct s
G_MODULE_EXPORT FlDartProject * fl_dart_project_new()
FlEngine * fl_engine_new(FlDartProject *project, FlRenderer *renderer)
Definition fl_engine.cc:455
gboolean fl_engine_start(FlEngine *self, GError **error)
Definition fl_engine.cc:471
static const uint8_t buffer[]
uint8_t value
g_byte_array_append(buffer, &type, sizeof(uint8_t))
static uint8_t hex_digit_to_int(char value)
Definition fl_test.cc:24
FlEngine * make_mock_engine_with_project(FlDartProject *project)
Definition fl_test.cc:68
void PrintTo(FlValue *v, std::ostream *os)
Definition fl_test.cc:78
static uint8_t parse_hex8(const gchar *hex_string)
Definition fl_test.cc:36
FlEngine * make_mock_engine()
Definition fl_test.cc:63
GBytes * hex_string_to_bytes(const gchar *hex_string)
Definition fl_test.cc:43
gchar * bytes_to_hex_string(GBytes *bytes)
Definition fl_test.cc:52
G_MODULE_EXPORT gchar * fl_value_to_string(FlValue *value)
Definition fl_value.cc:846
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition fl_value.h:42
FlMockRenderer * fl_mock_renderer_new()
return FALSE
#define EXPECT_TRUE(handle)
Definition unit_test.h:685