[M108 Migration][VD] Support set time and time zone offset
[platform/framework/web/chromium-efl.git] / base / values_unittest.rs
1 use base::{NewValueSlotForTesting, ValueSlotRef};
2 use rust_gtest_interop::prelude::*;
3
4 #[gtest(RustValuesTest, AllocDealloc)]
5 fn test_alloc_dealloc() {
6     NewValueSlotForTesting();
7 }
8
9 #[gtest(RustValuesTest, StartsNone)]
10 fn test_starts_none() {
11     let mut v = NewValueSlotForTesting();
12     let v = ValueSlotRef::from(v.pin_mut());
13     expect_eq!(format!("{:?}", v), "(empty)");
14 }
15
16 #[gtest(RustValuesTest, SetDict)]
17 fn test_set_dict() {
18     let mut v = NewValueSlotForTesting();
19     let mut v = ValueSlotRef::from(&mut v);
20     let mut d = v.construct_dict();
21     d.set_string_key("fish", "skate");
22     d.set_none_key("antlers");
23     d.set_bool_key("has_lungs", false);
24     d.set_integer_key("fins", 2);
25     d.set_double_key("bouyancy", 1.0);
26     let mut nested_list = d.set_list_key("scales");
27     nested_list.append_string("sea major");
28     let mut nested_dict = d.set_dict_key("taxonomy");
29     nested_dict.set_string_key("kingdom", "animalia");
30     nested_dict.set_string_key("phylum", "chordata");
31     // TODO(crbug.com/1282310): Use indoc to make this neater.
32     expect_eq!(
33         format!("{:?}", v),
34         "{\n   \
35             \"antlers\": null,\n   \
36             \"bouyancy\": 1.0,\n   \
37             \"fins\": 2,\n   \
38             \"fish\": \"skate\",\n   \
39             \"has_lungs\": false,\n   \
40             \"scales\": [ \"sea major\" ],\n   \
41             \"taxonomy\": {\n      \
42                 \"kingdom\": \"animalia\",\n      \
43                 \"phylum\": \"chordata\"\n   \
44             }\n\
45         }\n"
46     );
47 }
48
49 #[gtest(RustValuesTest, SetList)]
50 fn test_set_list() {
51     let mut v = NewValueSlotForTesting();
52     let mut v = ValueSlotRef::from(&mut v);
53     let mut l = v.construct_list();
54     l.reserve_size(5);
55     l.append_bool(false);
56     l.append_none();
57     l.append_double(2.0);
58     l.append_integer(4);
59     let mut nested_list = l.append_list();
60     nested_list.append_none();
61     let mut nested_dict = l.append_dict();
62     nested_dict.set_string_key("a", "b");
63     l.append_string("hello");
64     expect_eq!(
65         format!("{:?}", v),
66         "[ false, null, 2.0, 4, [ null ], {\n   \
67             \"a\": \"b\"\n\
68         }, \"hello\" ]\n"
69     );
70 }
71
72 fn expect_simple_value_matches<F>(f: F, expected: &str)
73 where
74     F: FnOnce(&mut ValueSlotRef),
75 {
76     let mut v = NewValueSlotForTesting();
77     let mut v = ValueSlotRef::from(&mut v);
78     f(&mut v);
79     expect_eq!(format!("{:?}", v).trim_end(), expected);
80 }
81
82 #[gtest(RustValuesTest, SetSimpleOptionalValues)]
83 fn test_set_simple_optional_values() {
84     expect_simple_value_matches(|v| v.construct_none(), "null");
85     expect_simple_value_matches(|v| v.construct_bool(true), "true");
86     expect_simple_value_matches(|v| v.construct_integer(3), "3");
87     expect_simple_value_matches(|v| v.construct_double(3.1), "3.1");
88     expect_simple_value_matches(|v| v.construct_string("a"), "\"a\"");
89 }
90
91 #[gtest(RustValuesTest, ReuseSlot)]
92 fn test_reuse_slot() {
93     let mut v = NewValueSlotForTesting();
94     let mut v = ValueSlotRef::from(&mut v);
95     v.construct_none();
96     let mut d = v.construct_dict();
97     d.set_integer_key("a", 3);
98     v.construct_integer(7);
99     expect_eq!(format!("{:?}", v).trim_end(), "7");
100 }