Flutter Engine
 
Loading...
Searching...
No Matches
fl_value_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
6
7#include <gmodule.h>
8
9#include <cmath>
10#include "gtest/gtest.h"
11
12TEST(FlDartProjectTest, Null) {
15}
16
17TEST(FlValueTest, NullEqual) {
20 EXPECT_TRUE(fl_value_equal(value1, value2));
21}
22
23TEST(FlValueTest, NullToString) {
25 g_autofree gchar* text = fl_value_to_string(value);
26 EXPECT_STREQ(text, "null");
27}
28
29TEST(FlValueTest, BoolTrue) {
32 EXPECT_TRUE(fl_value_get_bool(value));
33}
34
35TEST(FlValueTest, BoolFalse) {
38 EXPECT_FALSE(fl_value_get_bool(value));
39}
40
41TEST(FlValueTest, BoolEqual) {
44 EXPECT_TRUE(fl_value_equal(value1, value2));
45}
46
47TEST(FlValueTest, BoolNotEqual) {
49 g_autoptr(FlValue) value2 = fl_value_new_bool(FALSE);
50 EXPECT_FALSE(fl_value_equal(value1, value2));
51}
52
53TEST(FlValueTest, BoolTrueToString) {
55 g_autofree gchar* text = fl_value_to_string(value);
56 EXPECT_STREQ(text, "true");
57}
58
59TEST(FlValueTest, BoolFalseToString) {
61 g_autofree gchar* text = fl_value_to_string(value);
62 EXPECT_STREQ(text, "false");
63}
64
65TEST(FlValueTest, IntZero) {
68 EXPECT_EQ(fl_value_get_int(value), 0);
69}
70
71TEST(FlValueTest, IntOne) {
74 EXPECT_EQ(fl_value_get_int(value), 1);
75}
76
77TEST(FlValueTest, IntMinusOne) {
80 EXPECT_EQ(fl_value_get_int(value), -1);
81}
82
83TEST(FlValueTest, IntMin) {
86 EXPECT_EQ(fl_value_get_int(value), G_MININT64);
87}
88
89TEST(FlValueTest, IntMax) {
92 EXPECT_EQ(fl_value_get_int(value), G_MAXINT64);
93}
94
95TEST(FlValueTest, IntEqual) {
98 EXPECT_TRUE(fl_value_equal(value1, value2));
99}
100
101TEST(FlValueTest, IntNotEqual) {
102 g_autoptr(FlValue) value1 = fl_value_new_int(42);
103 g_autoptr(FlValue) value2 = fl_value_new_int(99);
104 EXPECT_FALSE(fl_value_equal(value1, value2));
105}
106
107TEST(FlValueTest, IntToString) {
109 g_autofree gchar* text = fl_value_to_string(value);
110 EXPECT_STREQ(text, "42");
111}
112
113TEST(FlValueTest, FloatZero) {
116 EXPECT_EQ(fl_value_get_float(value), 0.0);
117}
118
119TEST(FlValueTest, FloatOne) {
122 EXPECT_EQ(fl_value_get_float(value), 1.0);
123}
124
125TEST(FlValueTest, FloatMinusOne) {
128 EXPECT_EQ(fl_value_get_float(value), -1.0);
129}
130
131TEST(FlValueTest, FloatPi) {
134 EXPECT_EQ(fl_value_get_float(value), M_PI);
135}
136
137TEST(FlValueTest, FloatEqual) {
138 g_autoptr(FlValue) value1 = fl_value_new_float(M_PI);
139 g_autoptr(FlValue) value2 = fl_value_new_float(M_PI);
140 EXPECT_TRUE(fl_value_equal(value1, value2));
141}
142
143TEST(FlValueTest, FloatNotEqual) {
144 g_autoptr(FlValue) value1 = fl_value_new_float(M_PI);
145 g_autoptr(FlValue) value2 = fl_value_new_float(M_E);
146 EXPECT_FALSE(fl_value_equal(value1, value2));
147}
148
149TEST(FlValueTest, FloatToString) {
151 g_autofree gchar* text = fl_value_to_string(value);
152 EXPECT_STREQ(text, "3.1415926535897931");
153}
154
155TEST(FlValueTest, String) {
158 EXPECT_STREQ(fl_value_get_string(value), "hello");
159}
160
161TEST(FlValueTest, StringEmpty) {
164 EXPECT_STREQ(fl_value_get_string(value), "");
165}
166
167TEST(FlValueTest, StringSized) {
170 EXPECT_STREQ(fl_value_get_string(value), "he");
171}
172
173TEST(FlValueTest, StringSizedNullptr) {
176 EXPECT_STREQ(fl_value_get_string(value), "");
177}
178
179TEST(FlValueTest, StringSizedZeroLength) {
182 EXPECT_STREQ(fl_value_get_string(value), "");
183}
184
185TEST(FlValueTest, StringEqual) {
186 g_autoptr(FlValue) value1 = fl_value_new_string("hello");
187 g_autoptr(FlValue) value2 = fl_value_new_string("hello");
188 EXPECT_TRUE(fl_value_equal(value1, value2));
189}
190
191TEST(FlValueTest, StringNotEqual) {
192 g_autoptr(FlValue) value1 = fl_value_new_string("hello");
193 g_autoptr(FlValue) value2 = fl_value_new_string("world");
194 EXPECT_FALSE(fl_value_equal(value1, value2));
195}
196
197TEST(FlValueTest, StringToString) {
199 g_autofree gchar* text = fl_value_to_string(value);
200 EXPECT_STREQ(text, "hello");
201}
202
203TEST(FlValueTest, Uint8List) {
204 uint8_t data[] = {0x00, 0x01, 0xFE, 0xFF};
207 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(4));
208 EXPECT_EQ(fl_value_get_uint8_list(value)[0], 0x00);
209 EXPECT_EQ(fl_value_get_uint8_list(value)[1], 0x01);
210 EXPECT_EQ(fl_value_get_uint8_list(value)[2], 0xFE);
211 EXPECT_EQ(fl_value_get_uint8_list(value)[3], 0xFF);
212}
213
214TEST(FlValueTest, Uint8ListNullptr) {
217 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(0));
218}
219
220TEST(FlValueTest, Uint8ListEqual) {
221 uint8_t data1[] = {1, 2, 3};
222 g_autoptr(FlValue) value1 = fl_value_new_uint8_list(data1, 3);
223 uint8_t data2[] = {1, 2, 3};
224 g_autoptr(FlValue) value2 = fl_value_new_uint8_list(data2, 3);
225 EXPECT_TRUE(fl_value_equal(value1, value2));
226}
227
228TEST(FlValueTest, Uint8ListEmptyEqual) {
229 g_autoptr(FlValue) value1 = fl_value_new_uint8_list(nullptr, 0);
230 g_autoptr(FlValue) value2 = fl_value_new_uint8_list(nullptr, 0);
231 EXPECT_TRUE(fl_value_equal(value1, value2));
232}
233
234TEST(FlValueTest, Uint8ListNotEqualSameSize) {
235 uint8_t data1[] = {1, 2, 3};
236 g_autoptr(FlValue) value1 = fl_value_new_uint8_list(data1, 3);
237 uint8_t data2[] = {1, 2, 4};
238 g_autoptr(FlValue) value2 = fl_value_new_uint8_list(data2, 3);
239 EXPECT_FALSE(fl_value_equal(value1, value2));
240}
241
242TEST(FlValueTest, Uint8ListNotEqualDifferentSize) {
243 uint8_t data1[] = {1, 2, 3};
244 g_autoptr(FlValue) value1 = fl_value_new_uint8_list(data1, 3);
245 uint8_t data2[] = {1, 2, 3, 4};
246 g_autoptr(FlValue) value2 = fl_value_new_uint8_list(data2, 4);
247 EXPECT_FALSE(fl_value_equal(value1, value2));
248}
249
250TEST(FlValueTest, Uint8ListEmptyNotEqual) {
251 g_autoptr(FlValue) value1 = fl_value_new_uint8_list(nullptr, 0);
252 uint8_t data[] = {1, 2, 3};
254 EXPECT_FALSE(fl_value_equal(value1, value2));
255}
256
257TEST(FlValueTest, Uint8ListToString) {
258 uint8_t data[] = {0x00, 0x01, 0xFE, 0xFF};
260 g_autofree gchar* text = fl_value_to_string(value);
261 EXPECT_STREQ(text, "[0, 1, 254, 255]");
262}
263
264TEST(FlValueTest, Int32List) {
265 int32_t data[] = {0, -1, G_MAXINT32, G_MININT32};
268 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(4));
269 EXPECT_EQ(fl_value_get_int32_list(value)[0], 0);
270 EXPECT_EQ(fl_value_get_int32_list(value)[1], -1);
271 EXPECT_EQ(fl_value_get_int32_list(value)[2], G_MAXINT32);
272 EXPECT_EQ(fl_value_get_int32_list(value)[3], G_MININT32);
273}
274
275TEST(FlValueTest, Int32ListNullptr) {
278 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(0));
279}
280
281TEST(FlValueTest, Int32ListEqual) {
282 int32_t data1[] = {0, G_MAXINT32, G_MININT32};
283 g_autoptr(FlValue) value1 = fl_value_new_int32_list(data1, 3);
284 int32_t data2[] = {0, G_MAXINT32, G_MININT32};
285 g_autoptr(FlValue) value2 = fl_value_new_int32_list(data2, 3);
286 EXPECT_TRUE(fl_value_equal(value1, value2));
287}
288
289TEST(FlValueTest, Int32ListEmptyEqual) {
290 g_autoptr(FlValue) value1 = fl_value_new_int32_list(nullptr, 0);
291 g_autoptr(FlValue) value2 = fl_value_new_int32_list(nullptr, 0);
292 EXPECT_TRUE(fl_value_equal(value1, value2));
293}
294
295TEST(FlValueTest, Int32ListNotEqualSameSize) {
296 int32_t data1[] = {0, G_MAXINT32, G_MININT32};
297 g_autoptr(FlValue) value1 = fl_value_new_int32_list(data1, 3);
298 int32_t data2[] = {0, G_MININT32, G_MAXINT32};
299 g_autoptr(FlValue) value2 = fl_value_new_int32_list(data2, 3);
300 EXPECT_FALSE(fl_value_equal(value1, value2));
301}
302
303TEST(FlValueTest, Int32ListNotEqualDifferentSize) {
304 int32_t data1[] = {0, G_MAXINT32, G_MININT32};
305 g_autoptr(FlValue) value1 = fl_value_new_int32_list(data1, 3);
306 int32_t data2[] = {0, G_MAXINT32, G_MININT32, -1};
307 g_autoptr(FlValue) value2 = fl_value_new_int32_list(data2, 4);
308 EXPECT_FALSE(fl_value_equal(value1, value2));
309}
310
311TEST(FlValueTest, Int32ListEmptyNotEqual) {
312 g_autoptr(FlValue) value1 = fl_value_new_int32_list(nullptr, 0);
313 int32_t data[] = {0, G_MAXINT32, G_MININT32};
315 EXPECT_FALSE(fl_value_equal(value1, value2));
316}
317
318TEST(FlValueTest, Int32ListToString) {
319 int32_t data[] = {0, G_MAXINT32, G_MININT32};
321 g_autofree gchar* text = fl_value_to_string(value);
322 EXPECT_STREQ(text, "[0, 2147483647, -2147483648]");
323}
324
325TEST(FlValueTest, Int64List) {
326 int64_t data[] = {0, -1, G_MAXINT64, G_MININT64};
329 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(4));
330 EXPECT_EQ(fl_value_get_int64_list(value)[0], 0);
331 EXPECT_EQ(fl_value_get_int64_list(value)[1], -1);
332 EXPECT_EQ(fl_value_get_int64_list(value)[2], G_MAXINT64);
333 EXPECT_EQ(fl_value_get_int64_list(value)[3], G_MININT64);
334}
335
336TEST(FlValueTest, Int64ListNullptr) {
339 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(0));
340}
341
342TEST(FlValueTest, Int64ListEqual) {
343 int64_t data1[] = {0, G_MAXINT64, G_MININT64};
344 g_autoptr(FlValue) value1 = fl_value_new_int64_list(data1, 3);
345 int64_t data2[] = {0, G_MAXINT64, G_MININT64};
346 g_autoptr(FlValue) value2 = fl_value_new_int64_list(data2, 3);
347 EXPECT_TRUE(fl_value_equal(value1, value2));
348}
349
350TEST(FlValueTest, Int64ListEmptyEqual) {
351 g_autoptr(FlValue) value1 = fl_value_new_int64_list(nullptr, 0);
352 g_autoptr(FlValue) value2 = fl_value_new_int64_list(nullptr, 0);
353 EXPECT_TRUE(fl_value_equal(value1, value2));
354}
355
356TEST(FlValueTest, Int64ListNotEqualSameSize) {
357 int64_t data1[] = {0, G_MAXINT64, G_MININT64};
358 g_autoptr(FlValue) value1 = fl_value_new_int64_list(data1, 3);
359 int64_t data2[] = {0, G_MININT64, G_MAXINT64};
360 g_autoptr(FlValue) value2 = fl_value_new_int64_list(data2, 3);
361 EXPECT_FALSE(fl_value_equal(value1, value2));
362}
363
364TEST(FlValueTest, Int64ListNotEqualDifferentSize) {
365 int64_t data1[] = {0, G_MAXINT64, G_MININT64};
366 g_autoptr(FlValue) value1 = fl_value_new_int64_list(data1, 3);
367 int64_t data2[] = {0, G_MAXINT64, G_MININT64, -1};
368 g_autoptr(FlValue) value2 = fl_value_new_int64_list(data2, 4);
369 EXPECT_FALSE(fl_value_equal(value1, value2));
370}
371
372TEST(FlValueTest, Int64ListEmptyNotEqual) {
373 g_autoptr(FlValue) value1 = fl_value_new_int64_list(nullptr, 0);
374 int64_t data[] = {0, G_MAXINT64, G_MININT64};
376 EXPECT_FALSE(fl_value_equal(value1, value2));
377}
378
379TEST(FlValueTest, Int64ListToString) {
380 int64_t data[] = {0, G_MAXINT64, G_MININT64};
382 g_autofree gchar* text = fl_value_to_string(value);
383 EXPECT_STREQ(text, "[0, 9223372036854775807, -9223372036854775808]");
384}
385
386TEST(FlValueTest, FloatList) {
387 double data[] = {0.0, -1.0, M_PI};
390 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(3));
391 EXPECT_EQ(fl_value_get_float_list(value)[0], 0);
392 EXPECT_EQ(fl_value_get_float_list(value)[1], -1.0);
393 EXPECT_EQ(fl_value_get_float_list(value)[2], M_PI);
394}
395
396TEST(FlValueTest, FloatListNullptr) {
399 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(0));
400}
401
402TEST(FlValueTest, FloatListEqual) {
403 double data1[] = {0, -0.5, M_PI};
404 g_autoptr(FlValue) value1 = fl_value_new_float_list(data1, 3);
405 double data2[] = {0, -0.5, M_PI};
406 g_autoptr(FlValue) value2 = fl_value_new_float_list(data2, 3);
407 EXPECT_TRUE(fl_value_equal(value1, value2));
408}
409
410TEST(FlValueTest, FloatListEmptyEqual) {
411 g_autoptr(FlValue) value1 = fl_value_new_float_list(nullptr, 0);
412 g_autoptr(FlValue) value2 = fl_value_new_float_list(nullptr, 0);
413 EXPECT_TRUE(fl_value_equal(value1, value2));
414}
415
416TEST(FlValueTest, FloatListNotEqualSameSize) {
417 double data1[] = {0, -0.5, M_PI};
418 g_autoptr(FlValue) value1 = fl_value_new_float_list(data1, 3);
419 double data2[] = {0, -0.5, M_E};
420 g_autoptr(FlValue) value2 = fl_value_new_float_list(data2, 3);
421 EXPECT_FALSE(fl_value_equal(value1, value2));
422}
423
424TEST(FlValueTest, FloatListNotEqualDifferentSize) {
425 double data1[] = {0, -0.5, M_PI};
426 g_autoptr(FlValue) value1 = fl_value_new_float_list(data1, 3);
427 double data2[] = {0, -0.5, M_PI, 42};
428 g_autoptr(FlValue) value2 = fl_value_new_float_list(data2, 4);
429 EXPECT_FALSE(fl_value_equal(value1, value2));
430}
431
432TEST(FlValueTest, FloatListEmptyNotEqual) {
433 g_autoptr(FlValue) value1 = fl_value_new_float_list(nullptr, 0);
434 double data[] = {0, -0.5, M_PI};
436 EXPECT_FALSE(fl_value_equal(value1, value2));
437}
438
439TEST(FlValueTest, FloatListToString) {
440 double data[] = {0, -0.5, M_PI};
442 g_autofree gchar* text = fl_value_to_string(value);
443 EXPECT_STREQ(text, "[0.0, -0.5, 3.1415926535897931]");
444}
445
446TEST(FlValueTest, ListEmpty) {
449 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(0));
450}
451
452TEST(FlValueTest, ListAdd) {
455 fl_value_append(value, child);
457 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(1));
460}
461
462TEST(FlValueTest, ListAddTake) {
466 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(1));
469}
470
471TEST(FlValueTest, ListChildTypes) {
484 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(10));
505}
506
507TEST(FlValueTest, ListStrv) {
508 g_auto(GStrv) words = g_strsplit("hello:world", ":", -1);
511 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(2));
514 EXPECT_STREQ(fl_value_get_string(fl_value_get_list_value(value, 0)), "hello");
517 EXPECT_STREQ(fl_value_get_string(fl_value_get_list_value(value, 1)), "world");
518}
519
520TEST(FlValueTest, ListStrvEmpty) {
521 g_auto(GStrv) words = g_strsplit("", ":", -1);
524 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(0));
525}
526
527TEST(FlValueTest, ListEqual) {
536 EXPECT_TRUE(fl_value_equal(value1, value2));
537}
538
539TEST(FlValueTest, ListEmptyEqual) {
542 EXPECT_TRUE(fl_value_equal(value1, value2));
543}
544
545TEST(FlValueTest, ListNotEqualSameSize) {
554 EXPECT_FALSE(fl_value_equal(value1, value2));
555}
556
557TEST(FlValueTest, ListNotEqualDifferentSize) {
567 EXPECT_FALSE(fl_value_equal(value1, value2));
568}
569
570TEST(FlValueTest, ListEmptyNotEqual) {
576 EXPECT_FALSE(fl_value_equal(value1, value2));
577}
578
595
596TEST(FlValueTest, MapEmpty) {
599 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(0));
600}
601
602TEST(FlValueTest, MapSet) {
606 fl_value_set(value, k, v);
608 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(1));
611 EXPECT_STREQ(fl_value_get_string(fl_value_get_map_key(value, 0)), "count");
615}
616
617TEST(FlValueTest, MapSetTake) {
621 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(1));
624 EXPECT_STREQ(fl_value_get_string(fl_value_get_map_key(value, 0)), "count");
628}
629
630TEST(FlValueTest, MapSetString) {
633 fl_value_set_string(value, "count", v);
635 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(1));
638 EXPECT_STREQ(fl_value_get_string(fl_value_get_map_key(value, 0)), "count");
642}
643
644TEST(FlValueTest, MapSetStringTake) {
648 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(1));
651 EXPECT_STREQ(fl_value_get_string(fl_value_get_map_key(value, 0)), "count");
655}
656
657TEST(FlValueTest, MapLookup) {
663 g_autoptr(FlValue) two_key = fl_value_new_string("two");
664 FlValue* v = fl_value_lookup(value, two_key);
665 ASSERT_NE(v, nullptr);
667 EXPECT_EQ(fl_value_get_int(v), 2);
668 g_autoptr(FlValue) four_key = fl_value_new_string("four");
669 v = fl_value_lookup(value, four_key);
670 ASSERT_EQ(v, nullptr);
671}
672
673TEST(FlValueTest, MapLookupString) {
679 ASSERT_NE(v, nullptr);
681 EXPECT_EQ(fl_value_get_int(v), 2);
682 v = fl_value_lookup_string(value, "four");
683 ASSERT_EQ(v, nullptr);
684}
685
686TEST(FlValueTest, MapValueypes) {
693 fl_value_new_float(M_PI));
695 fl_value_new_uint8_list(nullptr, 0));
697 fl_value_new_int32_list(nullptr, 0));
699 fl_value_new_int64_list(nullptr, 0));
701 fl_value_new_float_list(nullptr, 0));
705 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(10));
726}
727
728TEST(FlValueTest, MapKeyTypes) {
732 fl_value_new_string("bool"));
735 fl_value_new_string("float"));
737 fl_value_new_string("uint8_list"));
739 fl_value_new_string("int32_list"));
741 fl_value_new_string("int64_list"));
743 fl_value_new_string("float_list"));
747 ASSERT_EQ(fl_value_get_length(value), static_cast<size_t>(10));
768}
769
770TEST(FlValueTest, MapEqual) {
774 fl_value_set_string_take(value1, "three", fl_value_new_int(3));
778 fl_value_set_string_take(value2, "three", fl_value_new_int(3));
779 EXPECT_TRUE(fl_value_equal(value1, value2));
780}
781
782TEST(FlValueTest, MapEqualDifferentOrder) {
786 fl_value_set_string_take(value1, "three", fl_value_new_int(3));
789 fl_value_set_string_take(value2, "three", fl_value_new_int(3));
791 EXPECT_TRUE(fl_value_equal(value1, value2));
792}
793
794TEST(FlValueTest, MapEmptyEqual) {
797 EXPECT_TRUE(fl_value_equal(value1, value2));
798}
799
800TEST(FlValueTest, MapNotEqualSameSizeDifferentKeys) {
804 fl_value_set_string_take(value1, "three", fl_value_new_int(3));
808 fl_value_set_string_take(value2, "four", fl_value_new_int(3));
809 EXPECT_FALSE(fl_value_equal(value1, value2));
810}
811
812TEST(FlValueTest, MapNotEqualSameSizeDifferentValues) {
816 fl_value_set_string_take(value1, "three", fl_value_new_int(3));
820 fl_value_set_string_take(value2, "three", fl_value_new_int(4));
821 EXPECT_FALSE(fl_value_equal(value1, value2));
822}
823
824TEST(FlValueTest, MapNotEqualDifferentSize) {
828 fl_value_set_string_take(value1, "three", fl_value_new_int(3));
832 fl_value_set_string_take(value2, "three", fl_value_new_int(3));
833 fl_value_set_string_take(value2, "four", fl_value_new_int(4));
834 EXPECT_FALSE(fl_value_equal(value1, value2));
835}
836
837TEST(FlValueTest, MapEmptyNotEqual) {
842 fl_value_set_string_take(value2, "three", fl_value_new_int(3));
843 EXPECT_FALSE(fl_value_equal(value1, value2));
844}
845
846TEST(FlValueTest, MapToString) {
853 fl_value_new_float(M_PI));
855 fl_value_new_uint8_list(nullptr, 0));
857 fl_value_new_int32_list(nullptr, 0));
859 fl_value_new_int64_list(nullptr, 0));
861 fl_value_new_float_list(nullptr, 0));
866 fl_value_new_string("bool"));
869 fl_value_new_string("float"));
871 fl_value_new_string("uint8_list"));
873 fl_value_new_string("int32_list"));
875 fl_value_new_string("int64_list"));
877 fl_value_new_string("float_list"));
880 g_autofree gchar* text = fl_value_to_string(value);
881 EXPECT_STREQ(text,
882 "{null: null, bool: true, int: 42, float: 3.1415926535897931, "
883 "uint8_list: [], int32_list: [], int64_list: [], float_list: "
884 "[], list: [], map: {}, null: null, true: bool, 42: int, "
885 "3.1415926535897931: float, []: uint8_list, []: int32_list, []: "
886 "int64_list, []: float_list, []: list, {}: map}");
887}
888
889TEST(FlDartProjectTest, Custom) {
891 fl_value_new_custom(128, g_strdup("Hello World"), g_free);
893 ASSERT_EQ(fl_value_get_custom_type(value), 128);
894 ASSERT_STREQ(reinterpret_cast<const gchar*>(fl_value_get_custom_value(value)),
895 "Hello World");
896}
897
898TEST(FlDartProjectTest, CustomNoDestroyNotify) {
899 g_autoptr(FlValue) value = fl_value_new_custom(128, "Hello World", nullptr);
901 ASSERT_EQ(fl_value_get_custom_type(value), 128);
902 ASSERT_STREQ(reinterpret_cast<const gchar*>(fl_value_get_custom_value(value)),
903 "Hello World");
904}
905
906TEST(FlDartProjectTest, CustomObject) {
907 g_autoptr(GObject) v = G_OBJECT(g_object_new(G_TYPE_OBJECT, nullptr));
910 ASSERT_EQ(fl_value_get_custom_type(value), 128);
911 ASSERT_TRUE(G_IS_OBJECT(fl_value_get_custom_value_object(value)));
912}
913
914TEST(FlDartProjectTest, CustomObjectTake) {
916 128, G_OBJECT(g_object_new(G_TYPE_OBJECT, nullptr)));
918 ASSERT_EQ(fl_value_get_custom_type(value), 128);
919 ASSERT_TRUE(G_IS_OBJECT(fl_value_get_custom_value_object(value)));
920}
921
922TEST(FlValueTest, CustomEqual) {
923 g_autoptr(FlValue) value1 = fl_value_new_custom(128, "Hello World", nullptr);
924 g_autoptr(FlValue) value2 = fl_value_new_custom(128, "Hello World", nullptr);
925 EXPECT_FALSE(fl_value_equal(value1, value2));
926}
927
928TEST(FlValueTest, CustomToString) {
929 g_autoptr(FlValue) value = fl_value_new_custom(128, nullptr, nullptr);
930 g_autofree gchar* text = fl_value_to_string(value);
931 EXPECT_STREQ(text, "(custom 128)");
932}
933
934TEST(FlValueTest, EqualSameObject) {
936 EXPECT_TRUE(fl_value_equal(value, value));
937}
938
939TEST(FlValueTest, NullIntNotEqual) {
942 EXPECT_FALSE(fl_value_equal(value1, value2));
943}
944
945TEST(FlValueTest, NullBoolNotEqual) {
946 g_autoptr(FlValue) value1 = fl_value_new_bool(FALSE);
948 EXPECT_FALSE(fl_value_equal(value1, value2));
949}
950
951TEST(FlValueTest, StringUint8ListNotEqual) {
952 uint8_t data[] = {'h', 'e', 'l', 'l', 'o'};
954 g_autoptr(FlValue) value2 = fl_value_new_string("hello");
955 EXPECT_FALSE(fl_value_equal(value1, value2));
956}
957
958TEST(FlValueTest, Uint8ListInt32ListNotEqual) {
959 uint8_t data8[] = {0, 1, 2, 3, 4};
960 int32_t data32[] = {0, 1, 2, 3, 4};
961 g_autoptr(FlValue) value1 = fl_value_new_uint8_list(data8, 5);
962 g_autoptr(FlValue) value2 = fl_value_new_int32_list(data32, 5);
963 EXPECT_FALSE(fl_value_equal(value1, value2));
964}
965
966TEST(FlValueTest, Int32ListInt64ListNotEqual) {
967 int32_t data32[] = {0, 1, 2, 3, 4};
968 int64_t data64[] = {0, 1, 2, 3, 4};
969 g_autoptr(FlValue) value1 = fl_value_new_int32_list(data32, 5);
970 g_autoptr(FlValue) value2 = fl_value_new_int64_list(data64, 5);
971 EXPECT_FALSE(fl_value_equal(value1, value2));
972}
973
974TEST(FlValueTest, Int64ListFloatListNotEqual) {
975 int64_t data64[] = {0, 1, 2, 3, 4};
976 double dataf[] = {0.0, 1.0, 2.0, 3.0, 4.0};
977 g_autoptr(FlValue) value1 = fl_value_new_int64_list(data64, 5);
978 g_autoptr(FlValue) value2 = fl_value_new_float_list(dataf, 5);
979 EXPECT_FALSE(fl_value_equal(value1, value2));
980}
981
982TEST(FlValueTest, ListMapNotEqual) {
985 EXPECT_FALSE(fl_value_equal(value1, value2));
986}
int32_t value
g_autoptr(GMutexLocker) locker
return TRUE
G_MODULE_EXPORT void fl_value_set_string(FlValue *self, const gchar *key, FlValue *value)
Definition fl_value.cc:639
G_MODULE_EXPORT FlValue * fl_value_new_map()
Definition fl_value.cc:366
G_MODULE_EXPORT FlValue * fl_value_new_custom_object_take(int type, GObject *object)
Definition fl_value.cc:389
G_MODULE_EXPORT const double * fl_value_get_float_list(FlValue *self)
Definition fl_value.cc:717
G_MODULE_EXPORT void fl_value_set_string_take(FlValue *self, const gchar *key, FlValue *value)
Definition fl_value.cc:650
G_MODULE_EXPORT FlValue * fl_value_lookup_string(FlValue *self, const gchar *key)
Definition fl_value.cc:811
G_MODULE_EXPORT gchar * fl_value_to_string(FlValue *value)
Definition fl_value.cc:846
G_MODULE_EXPORT int64_t fl_value_get_int(FlValue *self)
Definition fl_value.cc:668
G_MODULE_EXPORT FlValue * fl_value_new_custom(int type, gconstpointer value, GDestroyNotify destroy_notify)
Definition fl_value.cc:374
G_MODULE_EXPORT FlValueType fl_value_get_type(FlValue *self)
Definition fl_value.cc:466
G_MODULE_EXPORT FlValue * fl_value_new_null()
Definition fl_value.cc:251
G_MODULE_EXPORT FlValue * fl_value_new_string(const gchar *value)
Definition fl_value.cc:276
G_MODULE_EXPORT FlValue * fl_value_new_int32_list(const int32_t *data, size_t data_length)
Definition fl_value.cc:309
G_MODULE_EXPORT void fl_value_append(FlValue *self, FlValue *value)
Definition fl_value.cc:592
G_MODULE_EXPORT FlValue * fl_value_new_custom_object(int type, GObject *object)
Definition fl_value.cc:385
G_MODULE_EXPORT FlValue * fl_value_get_map_key(FlValue *self, size_t index)
Definition fl_value.cc:784
G_MODULE_EXPORT FlValue * fl_value_new_bool(bool value)
Definition fl_value.cc:255
G_MODULE_EXPORT void fl_value_set_take(FlValue *self, FlValue *key, FlValue *value)
Definition fl_value.cc:618
G_MODULE_EXPORT const gchar * fl_value_get_string(FlValue *self)
Definition fl_value.cc:682
G_MODULE_EXPORT int fl_value_get_custom_type(FlValue *self)
Definition fl_value.cc:822
G_MODULE_EXPORT FlValue * fl_value_new_int(int64_t value)
Definition fl_value.cc:262
G_MODULE_EXPORT FlValue * fl_value_new_float(double value)
Definition fl_value.cc:269
G_MODULE_EXPORT FlValue * fl_value_new_list_from_strv(const gchar *const *str_array)
Definition fl_value.cc:356
G_MODULE_EXPORT const uint8_t * fl_value_get_uint8_list(FlValue *self)
Definition fl_value.cc:689
G_MODULE_EXPORT FlValue * fl_value_lookup(FlValue *self, FlValue *key)
Definition fl_value.cc:800
G_MODULE_EXPORT void fl_value_append_take(FlValue *self, FlValue *value)
Definition fl_value.cc:600
G_MODULE_EXPORT gconstpointer fl_value_get_custom_value(FlValue *self)
Definition fl_value.cc:830
G_MODULE_EXPORT FlValue * fl_value_get_list_value(FlValue *self, size_t index)
Definition fl_value.cc:776
G_MODULE_EXPORT bool fl_value_get_bool(FlValue *self)
Definition fl_value.cc:661
G_MODULE_EXPORT FlValue * fl_value_new_list()
Definition fl_value.cc:349
G_MODULE_EXPORT FlValue * fl_value_new_uint8_list(const uint8_t *data, size_t data_length)
Definition fl_value.cc:292
G_MODULE_EXPORT bool fl_value_equal(FlValue *a, FlValue *b)
Definition fl_value.cc:471
G_MODULE_EXPORT FlValue * fl_value_new_float_list(const double *data, size_t data_length)
Definition fl_value.cc:339
G_MODULE_EXPORT FlValue * fl_value_new_string_sized(const gchar *value, size_t value_length)
Definition fl_value.cc:283
G_MODULE_EXPORT FlValue * fl_value_new_int64_list(const int64_t *data, size_t data_length)
Definition fl_value.cc:319
G_MODULE_EXPORT FlValue * fl_value_get_map_value(FlValue *self, size_t index)
Definition fl_value.cc:792
G_MODULE_EXPORT double fl_value_get_float(FlValue *self)
Definition fl_value.cc:675
G_MODULE_EXPORT GObject * fl_value_get_custom_value_object(FlValue *self)
Definition fl_value.cc:838
G_MODULE_EXPORT size_t fl_value_get_length(FlValue *self)
Definition fl_value.cc:724
G_MODULE_EXPORT const int32_t * fl_value_get_int32_list(FlValue *self)
Definition fl_value.cc:696
G_MODULE_EXPORT const int64_t * fl_value_get_int64_list(FlValue *self)
Definition fl_value.cc:703
G_MODULE_EXPORT void fl_value_set(FlValue *self, FlValue *key, FlValue *value)
Definition fl_value.cc:609
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition fl_value.h:42
@ FL_VALUE_TYPE_STRING
Definition fl_value.h:68
@ FL_VALUE_TYPE_NULL
Definition fl_value.h:64
@ FL_VALUE_TYPE_INT
Definition fl_value.h:66
@ FL_VALUE_TYPE_BOOL
Definition fl_value.h:65
@ FL_VALUE_TYPE_INT32_LIST
Definition fl_value.h:70
@ FL_VALUE_TYPE_UINT8_LIST
Definition fl_value.h:69
@ FL_VALUE_TYPE_LIST
Definition fl_value.h:73
@ FL_VALUE_TYPE_MAP
Definition fl_value.h:74
@ FL_VALUE_TYPE_INT64_LIST
Definition fl_value.h:71
@ FL_VALUE_TYPE_FLOAT_LIST
Definition fl_value.h:72
@ FL_VALUE_TYPE_CUSTOM
Definition fl_value.h:76
@ FL_VALUE_TYPE_FLOAT
Definition fl_value.h:67
TEST(FlDartProjectTest, Null)
std::u16string text
std::shared_ptr< const fml::Mapping > data