1 // Copyright 2019 Google LLC
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // https://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 use flexbuffers::*;
16
17 #[test]
read_golden_flexbuffer()18 fn read_golden_flexbuffer() {
19 let s =
20 std::fs::read("../gold_flexbuffer_example.bin").expect("Unable to read golden flexbuffer.");
21 let r = Reader::get_root(s.as_ref()).unwrap();
22 let m = r.as_map();
23
24 let vec = m.idx("vec").as_vector();
25 assert_eq!(vec.idx(0).as_i8(), -100);
26 assert_eq!(vec.idx(1).as_str(), "Fred");
27 assert_eq!(vec.idx(2).as_f32(), 4.0);
28 assert_eq!(vec.idx(3).as_blob(), Blob([77].as_ref()));
29 assert_eq!(vec.idx(4).flexbuffer_type(), FlexBufferType::Bool);
30 assert_eq!(vec.idx(4).as_bool(), false);
31 assert_eq!(vec.idx(5).as_f64(), 4.0);
32
33 let bar = m.idx("bar").as_vector();
34 for (i, &x) in [1, 2, 3].iter().enumerate() {
35 assert_eq!(bar.idx(i).as_i8(), x);
36 }
37 let bar3 = m.idx("bar3").as_vector();
38 for (i, &x) in [1, 2, 3].iter().enumerate() {
39 assert_eq!(bar3.idx(i).as_i8(), x);
40 }
41 let bools = m.idx("bools").as_vector();
42 for (i, &b) in [true, false, true, false].iter().enumerate() {
43 assert_eq!(bools.idx(i).as_bool(), b)
44 }
45
46 assert_eq!(m.idx("bool").as_bool(), true);
47 assert_eq!(m.idx("foo").as_f64(), 100.0);
48 let mymap = m.idx("mymap").as_map();
49 assert_eq!(mymap.idx("foo").as_str(), "Fred");
50 }
51