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