• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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