1+ use  :: issue_895:: * ; 
2+ 
3+ fn  create_encoder ( buffer :  & mut  Vec < u8 > )  -> Issue895Encoder  { 
4+  let  issue_895 = Issue895Encoder :: default ( ) . wrap ( 
5+  WriteBuf :: new ( buffer. as_mut_slice ( ) ) , 
6+  ENCODED_LENGTH , 
7+  ) ; 
8+  let  mut  header = issue_895. header ( 0 ) ; 
9+  header. parent ( ) . unwrap ( ) 
10+ } 
11+ 
12+ #[ test]  
13+ fn  issue_895_both_some ( )  -> SbeResult < ( ) >  { 
14+  assert_eq ! ( 8 ,  ENCODED_LENGTH ) ; 
15+  assert_eq ! ( 12 ,  SBE_BLOCK_LENGTH ) ; 
16+  assert_eq ! ( 0 ,  SBE_SCHEMA_VERSION ) ; 
17+ 
18+  // encode... 
19+  let  mut  buf = vec ! [ 0u8 ;  256 ] ; 
20+  let  mut  encoder = create_encoder ( & mut  buf) ; 
21+  encoder. optional_float ( 2.07 ) ; 
22+  encoder. optional_double ( 4.12 ) ; 
23+ 
24+  // decode... 
25+  let  buf = ReadBuf :: new ( buf. as_slice ( ) ) ; 
26+  let  header = MessageHeaderDecoder :: default ( ) . wrap ( buf,  0 ) ; 
27+  assert_eq ! ( SBE_BLOCK_LENGTH ,  header. block_length( ) ) ; 
28+  assert_eq ! ( SBE_SCHEMA_VERSION ,  header. version( ) ) ; 
29+  assert_eq ! ( SBE_TEMPLATE_ID ,  header. template_id( ) ) ; 
30+  assert_eq ! ( SBE_SCHEMA_ID ,  header. schema_id( ) ) ; 
31+ 
32+  let  decoder = Issue895Decoder :: default ( ) . header ( header) ; 
33+  assert_eq ! ( Some ( 2.07 ) ,  decoder. optional_float( ) ) ; 
34+  assert_eq ! ( Some ( 4.12 ) ,  decoder. optional_double( ) ) ; 
35+ 
36+  Ok ( ( ) ) 
37+ } 
38+ 
39+ #[ test]  
40+ fn  issue_895_float_none ( )  -> SbeResult < ( ) >  { 
41+  // encode... 
42+  let  mut  buf = vec ! [ 0u8 ;  256 ] ; 
43+  let  mut  encoder = create_encoder ( & mut  buf) ; 
44+  encoder. optional_float ( f32:: NAN ) ; 
45+  encoder. optional_double ( 4.12 ) ; 
46+ 
47+  // decode... 
48+  let  buf = ReadBuf :: new ( buf. as_slice ( ) ) ; 
49+  let  header = MessageHeaderDecoder :: default ( ) . wrap ( buf,  0 ) ; 
50+ 
51+  let  decoder = Issue895Decoder :: default ( ) . header ( header) ; 
52+  assert_eq ! ( None ,  decoder. optional_float( ) ) ; 
53+  assert_eq ! ( Some ( 4.12 ) ,  decoder. optional_double( ) ) ; 
54+ 
55+  Ok ( ( ) ) 
56+ } 
57+ 
58+ #[ test]  
59+ fn  issue_895_double_none ( )  -> SbeResult < ( ) >  { 
60+  // encode... 
61+  let  mut  buffer = vec ! [ 0u8 ;  256 ] ; 
62+  let  mut  encoder = create_encoder ( & mut  buffer) ; 
63+  encoder. optional_float ( 2.07 ) ; 
64+  encoder. optional_double ( f64:: NAN ) ; 
65+ 
66+  // decode... 
67+  let  buf = ReadBuf :: new ( buffer. as_slice ( ) ) ; 
68+  let  header = MessageHeaderDecoder :: default ( ) . wrap ( buf,  0 ) ; 
69+ 
70+  let  decoder = Issue895Decoder :: default ( ) . header ( header) ; 
71+  assert_eq ! ( Some ( 2.07 ) ,  decoder. optional_float( ) ) ; 
72+  assert_eq ! ( None ,  decoder. optional_double( ) ) ; 
73+ 
74+  Ok ( ( ) ) 
75+ } 
0 commit comments