Oregami
Repositories/oxedyne/fe2o3

oxedyne/fe2o3/fe2o3_jdat/tests/map.rs

3.4 KiB, 8 runs

created by r1870400018:503, which is this file's identity for as long as the history lasts, whatever it is later renamed to

download · who wrote it · its history

1use oxedyne_fe2o3_jdat::prelude::*;
2
3use oxedyne_fe2o3_core::{
4 prelude::*,
5 test::test_it,
6};
7
8
9pub fn test_map_func(filter: &'static str) -> Outcome<()> {
10
11 res!(test_it(filter, &["Map Find 000", "all", "map", "find"], || {
12 let d = mapdat!{
13 1u8 => mapdat!{
14 2u8 => mapdat!{
15 4321u16 => mapdat!{
16 "user" => 1234u128,
17 "time" => 5678u64,
18 "value" => 42u8,
19 },
20 },
21 }
22 };
23 let found_opt = res!(d.find(&listdat![1u8, 2u8, 4321u16, "value"]));
24 match found_opt {
25 Some(found) => {
26 test!("Found it! {:?}", found);
27 req!(&dat!(42u8), found);
28 }
29 None => return Err(err!("Expected value."; Test, Missing, Data)),
30 }
31 Ok(())
32 }));
33
34 res!(test_it(filter, &["Map Find 010", "all", "map", "find"], || {
35 let d = omapdat!{
36 1u8 => omapdat!{
37 2u8 => omapdat!{
38 4321u16 => omapdat!{
39 "user" => 1234u128,
40 "time" => 5678u64,
41 "value" => 42u8,
42 },
43 },
44 }
45 };
46 let found_opt = res!(d.find(&listdat![1u8, 2u8, 4321u16, "value"]));
47 match found_opt {
48 Some(found) => {
49 test!("Found it! {:?}", found);
50 req!(&dat!(42u8), found);
51 }
52 None => return Err(err!("Expected value."; Test, Missing, Data)),
53 }
54 Ok(())
55 }));
56
57 res!(test_it(filter, &["Map Find 100", "all", "map", "find"], || {
58 let d = mapdat!{
59 1u8 => mapdat!{
60 4321u16 => mapdat!{
61 "user" => 1234u128,
62 "time" => 5678u64,
63 "value" => 42u8,
64 },
65 5678u16 => mapdat!{
66 "user" => 1234u128,
67 "time" => 5678u64,
68 "value" => 84u8,
69 }
70 },
71 2u8 => mapdat!{
72 9012u16 => mapdat!{
73 "user" => 1234u128,
74 "time" => 5678u64,
75 "value" => 168u8,
76 }
77 }
78 };
79 let found = res!(d.find_all(&dat!("value")));
80 req!(3, found.len());
81 test!("Found it! {:?}", found);
82 req!(&dat!(42u8), found[0]);
83 req!(&dat!(84u8), found[1]);
84 req!(&dat!(168u8), found[2]);
85 Ok(())
86 }));
87
88 res!(test_it(filter, &["Map Get I64 000", "all", "map", "get"], || {
89 // A u64 written through mapdat! must be readable back as i64, as the
90 // doc comment promises; it was not before the U64 getter arm existed.
91 let d = mapdat!{
92 "size" => 1_048_576u64,
93 "count" => 42u32,
94 };
95 req!(1_048_576i64, res!(d.map_get_i64(&dat!("size"))));
96 req!(42i64, res!(d.map_get_i64(&dat!("count"))));
97
98 // Above i64::MAX the conversion must refuse, not wrap.
99 let big = mapdat!{ "size" => u64::MAX };
100 match big.map_get_i64(&dat!("size")) {
101 Err(_) => (),
102 Ok(n) => return Err(err!(
103 "u64::MAX coerced to i64 as {}, expected a refusal.", n;
104 Test, Mismatch)),
105 }
106 Ok(())
107 }));
108
109 Ok(())
110}