@@ -5,6 +5,9 @@ use trellis::core::Trellis;
55use trellis:: core:: Row ;
66use trellis:: core:: Col ;
77use trellis:: mock:: MockDevice ;
8+ use trellis:: mock:: WriteCb ;
9+
10+ const FIRST_NON_INIT_CALL_ID : i32 = 4 ;
811
912#[ test]
1013fn should_set_led ( ) {
@@ -30,18 +33,47 @@ fn should_clear_led() {
3033 assert_eq ! ( trellis. is_led_set( Col :: B , Row :: R2 ) , false ) ;
3134}
3235
36+ #[ test]
37+ fn should_write_inital_display_data_to_i2c ( ) {
38+ fn write_cb ( i : i32 , reg : u8 , values : & [ u8 ] ) {
39+ if i >= FIRST_NON_INIT_CALL_ID {
40+ let expected_vals: [ u8 ; 16 ] = [ 0 ; 16 ] ;
41+ assert_eq ! ( i, FIRST_NON_INIT_CALL_ID ) ;
42+ assert_eq ! ( reg, 0 ) ;
43+ assert_eq ! ( values, expected_vals) ;
44+ }
45+ }
46+ let mut trellis = new_trellis_with_cb ( write_cb) ;
47+ trellis. write_display ( ) ;
48+ }
49+
3350#[ test]
3451fn should_write_display_data_to_i2c ( ) {
35- // TODO
52+ fn write_cb ( i : i32 , reg : u8 , values : & [ u8 ] ) {
53+ if i >= FIRST_NON_INIT_CALL_ID {
54+ let expected_vals: [ u8 ; 16 ] = [ 4 , 0 , 2 , 0 , 0 , 2 , 0 , 4 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
55+ assert_eq ! ( i, FIRST_NON_INIT_CALL_ID ) ;
56+ assert_eq ! ( reg, 0 ) ;
57+ assert_eq ! ( values, expected_vals) ;
58+ }
59+ }
60+ let mut trellis = new_trellis_with_cb ( write_cb) ;
61+ trellis. set_led ( Col :: A , Row :: R0 ) ;
62+ trellis. set_led ( Col :: B , Row :: R1 ) ;
63+ trellis. set_led ( Col :: C , Row :: R2 ) ;
64+ trellis. set_led ( Col :: D , Row :: R3 ) ;
65+ trellis. write_display ( ) ;
3666}
3767
3868// helper
3969
40- /**
41- *
42- */
4370fn new_trellis ( ) -> Trellis {
44- let mock_dev = MockDevice :: new ( ) ;
71+ fn noop ( _i : i32 , _reg : u8 , _vals : & [ u8 ] ) { } ;
72+ return new_trellis_with_cb ( noop) ;
73+ }
74+
75+ fn new_trellis_with_cb ( cb : WriteCb ) -> Trellis {
76+ let mock_dev = MockDevice :: new ( cb) ;
4577 let mut trellis = Trellis :: new ( Box :: new ( mock_dev) ) ;
4678 trellis. init ( ) ;
4779 return trellis;
0 commit comments