@@ -14,28 +14,32 @@ mod tests {
1414 use super :: flat:: fb_test;
1515
1616 fn serialize_map ( values : Vec < ( & str , & str ) > ) -> Vec < u8 > {
17- let mut builder = flatbuffers:: FlatBufferBuilder :: new ( ) ;
18- let mut map = HashMapBuilder :: default ( ) ;
17+ let mut builder = HashMapBuilder :: default ( ) ;
1918 for ( key, value) in values {
20- map . insert ( key. to_string ( ) , value. to_string ( ) ) ;
19+ builder . insert ( key. to_string ( ) , value. to_string ( ) ) ;
2120 }
22- let map = HashMapBuilder :: finish ( map, & mut builder) ;
21+ serialize_builder ( builder)
22+ }
23+
24+ fn serialize_builder ( builder : HashMapBuilder < String , String > ) -> Vec < u8 > {
25+ let mut flat_builder = flatbuffers:: FlatBufferBuilder :: new ( ) ;
26+ let map = HashMapBuilder :: finish ( builder, & mut flat_builder) ;
2327 let map_serialized = fb_test:: TestStringMap :: create (
24- & mut builder ,
28+ & mut flat_builder ,
2529 & fb_test:: TestStringMapArgs {
2630 keys : Some ( map. keys ) ,
2731 values : Some ( map. values ) ,
2832 } ,
2933 ) ;
3034 let root = fb_test:: TestRoot :: create (
31- & mut builder ,
35+ & mut flat_builder ,
3236 & fb_test:: TestRootArgs {
3337 test_string_map : Some ( map_serialized) ,
3438 ..Default :: default ( )
3539 } ,
3640 ) ;
37- builder . finish ( root, None ) ;
38- builder . finished_data ( ) . to_vec ( )
41+ flat_builder . finish ( root, None ) ;
42+ flat_builder . finished_data ( ) . to_vec ( )
3943 }
4044
4145 fn load_map < ' a > ( data : & ' a [ u8 ] ) -> HashMapStringView < ' a , & ' a str > {
@@ -65,7 +69,24 @@ mod tests {
6569 assert_eq ! ( map. get( "b" ) . unwrap( ) , "30" ) ;
6670 }
6771
68- // TODO: test get_or_insert
72+ #[ test]
73+ fn test_builder_getters ( ) {
74+ let mut builder = HashMapBuilder :: default ( ) ;
75+ builder. insert ( "a" . to_string ( ) , "10" . to_string ( ) ) ;
76+ assert_eq ! (
77+ builder. get_or_insert( "a" . to_string( ) , "20" . to_string( ) ) ,
78+ "10"
79+ ) ;
80+ assert_eq ! (
81+ builder. get_or_insert( "b" . to_string( ) , "20" . to_string( ) ) ,
82+ "20"
83+ ) ;
84+ let data = serialize_builder ( builder) ;
85+ let map = load_map ( & data) ;
86+ assert_eq ! ( map. get( "a" ) . unwrap( ) , "10" ) ;
87+ assert_eq ! ( map. get( "b" ) . unwrap( ) , "20" ) ;
88+ assert ! ( map. get( "c" ) . is_none( ) ) ;
89+ }
6990
7091 #[ test]
7192 fn test_string_builder ( ) {
0 commit comments