mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-12-03 02:36:09 +03:00
101 lines
3.1 KiB
Rust
101 lines
3.1 KiB
Rust
use base::{NewValueSlotForTesting, ValueSlotRef};
|
|
use rust_gtest_interop::prelude::*;
|
|
|
|
#[gtest(RustValuesTest, AllocDealloc)]
|
|
fn test_alloc_dealloc() {
|
|
NewValueSlotForTesting();
|
|
}
|
|
|
|
#[gtest(RustValuesTest, StartsNone)]
|
|
fn test_starts_none() {
|
|
let mut v = NewValueSlotForTesting();
|
|
let v = ValueSlotRef::from(v.pin_mut());
|
|
expect_eq!(format!("{:?}", v), "(empty)");
|
|
}
|
|
|
|
#[gtest(RustValuesTest, SetDict)]
|
|
fn test_set_dict() {
|
|
let mut v = NewValueSlotForTesting();
|
|
let mut v = ValueSlotRef::from(&mut v);
|
|
let mut d = v.construct_dict();
|
|
d.set_string_key("fish", "skate");
|
|
d.set_none_key("antlers");
|
|
d.set_bool_key("has_lungs", false);
|
|
d.set_integer_key("fins", 2);
|
|
d.set_double_key("bouyancy", 1.0);
|
|
let mut nested_list = d.set_list_key("scales");
|
|
nested_list.append_string("sea major");
|
|
let mut nested_dict = d.set_dict_key("taxonomy");
|
|
nested_dict.set_string_key("kingdom", "animalia");
|
|
nested_dict.set_string_key("phylum", "chordata");
|
|
// TODO(crbug.com/1282310): Use indoc to make this neater.
|
|
expect_eq!(
|
|
format!("{:?}", v),
|
|
"{\n \
|
|
\"antlers\": null,\n \
|
|
\"bouyancy\": 1.0,\n \
|
|
\"fins\": 2,\n \
|
|
\"fish\": \"skate\",\n \
|
|
\"has_lungs\": false,\n \
|
|
\"scales\": [ \"sea major\" ],\n \
|
|
\"taxonomy\": {\n \
|
|
\"kingdom\": \"animalia\",\n \
|
|
\"phylum\": \"chordata\"\n \
|
|
}\n\
|
|
}\n"
|
|
);
|
|
}
|
|
|
|
#[gtest(RustValuesTest, SetList)]
|
|
fn test_set_list() {
|
|
let mut v = NewValueSlotForTesting();
|
|
let mut v = ValueSlotRef::from(&mut v);
|
|
let mut l = v.construct_list();
|
|
l.reserve_size(5);
|
|
l.append_bool(false);
|
|
l.append_none();
|
|
l.append_double(2.0);
|
|
l.append_integer(4);
|
|
let mut nested_list = l.append_list();
|
|
nested_list.append_none();
|
|
let mut nested_dict = l.append_dict();
|
|
nested_dict.set_string_key("a", "b");
|
|
l.append_string("hello");
|
|
expect_eq!(
|
|
format!("{:?}", v),
|
|
"[ false, null, 2.0, 4, [ null ], {\n \
|
|
\"a\": \"b\"\n\
|
|
}, \"hello\" ]\n"
|
|
);
|
|
}
|
|
|
|
fn expect_simple_value_matches<F>(f: F, expected: &str)
|
|
where
|
|
F: FnOnce(&mut ValueSlotRef),
|
|
{
|
|
let mut v = NewValueSlotForTesting();
|
|
let mut v = ValueSlotRef::from(&mut v);
|
|
f(&mut v);
|
|
expect_eq!(format!("{:?}", v).trim_end(), expected);
|
|
}
|
|
|
|
#[gtest(RustValuesTest, SetSimpleOptionalValues)]
|
|
fn test_set_simple_optional_values() {
|
|
expect_simple_value_matches(|v| v.construct_none(), "null");
|
|
expect_simple_value_matches(|v| v.construct_bool(true), "true");
|
|
expect_simple_value_matches(|v| v.construct_integer(3), "3");
|
|
expect_simple_value_matches(|v| v.construct_double(3.1), "3.1");
|
|
expect_simple_value_matches(|v| v.construct_string("a"), "\"a\"");
|
|
}
|
|
|
|
#[gtest(RustValuesTest, ReuseSlot)]
|
|
fn test_reuse_slot() {
|
|
let mut v = NewValueSlotForTesting();
|
|
let mut v = ValueSlotRef::from(&mut v);
|
|
v.construct_none();
|
|
let mut d = v.construct_dict();
|
|
d.set_integer_key("a", 3);
|
|
v.construct_integer(7);
|
|
expect_eq!(format!("{:?}", v).trim_end(), "7");
|
|
}
|