1 use base::{NewValueSlotForTesting, ValueSlotRef};
2 use rust_gtest_interop::prelude::*;
4 #[gtest(RustValuesTest, AllocDealloc)]
5 fn test_alloc_dealloc() {
6 NewValueSlotForTesting();
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)");
16 #[gtest(RustValuesTest, SetDict)]
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.
35 \"antlers\": null,\n \
36 \"bouyancy\": 1.0,\n \
38 \"fish\": \"skate\",\n \
39 \"has_lungs\": false,\n \
40 \"scales\": [ \"sea major\" ],\n \
42 \"kingdom\": \"animalia\",\n \
43 \"phylum\": \"chordata\"\n \
49 #[gtest(RustValuesTest, SetList)]
51 let mut v = NewValueSlotForTesting();
52 let mut v = ValueSlotRef::from(&mut v);
53 let mut l = v.construct_list();
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");
66 "[ false, null, 2.0, 4, [ null ], {\n \
72 fn expect_simple_value_matches<F>(f: F, expected: &str)
74 F: FnOnce(&mut ValueSlotRef),
76 let mut v = NewValueSlotForTesting();
77 let mut v = ValueSlotRef::from(&mut v);
79 expect_eq!(format!("{:?}", v).trim_end(), expected);
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\"");
91 #[gtest(RustValuesTest, ReuseSlot)]
92 fn test_reuse_slot() {
93 let mut v = NewValueSlotForTesting();
94 let mut v = ValueSlotRef::from(&mut v);
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");