@@ -50,6 +50,25 @@ func TestSetPins(t *testing.T) {
5050 c .Assert (pins , qt .Equals , Pins (0b01010000_00011010 ))
5151}
5252
53+ func TestTogglePins (t * testing.T ) {
54+ c := qt .New (t )
55+ bus := newBus (c )
56+ fdev := bus .addDevice (0x20 )
57+ fdev .Registers [rGPIO ] = 0b00001111
58+ fdev .Registers [rGPIO | portB ] = 0b11110000
59+ dev , err := NewI2C (bus , 0x20 )
60+ c .Assert (err , qt .IsNil )
61+ pins , err := dev .GetPins ()
62+ c .Assert (err , qt .IsNil )
63+ c .Assert (pins , qt .Equals , Pins (0b11110000_00001111 ))
64+
65+ err = dev .TogglePins (0b10101010_01010101 )
66+ c .Assert (err , qt .IsNil )
67+ pins , err = dev .GetPins ()
68+ c .Assert (err , qt .IsNil )
69+ c .Assert (pins , qt .Equals , Pins (0b01011010_01011010 ))
70+ }
71+
5372func TestSetGetModes (t * testing.T ) {
5473 c := qt .New (t )
5574 bus := newBus (c )
@@ -108,6 +127,24 @@ func TestPinSetGet(t *testing.T) {
108127 c .Assert (fdev .Registers [rGPIO ], qt .Equals , uint8 (0 ))
109128}
110129
130+ func TestPinToggle (t * testing.T ) {
131+ c := qt .New (t )
132+ bus := newBus (c )
133+ fdev := bus .addDevice (0x20 )
134+ dev , err := NewI2C (bus , 0x20 )
135+ c .Assert (err , qt .IsNil )
136+ pin := dev .Pin (1 )
137+ v , err := pin .Get ()
138+ c .Assert (err , qt .Equals , nil )
139+ c .Assert (v , qt .Equals , false )
140+ err = pin .Toggle ()
141+ c .Assert (err , qt .Equals , nil )
142+ c .Assert (fdev .Registers [rGPIO ], qt .Equals , uint8 (0b10 ))
143+ err = pin .Toggle ()
144+ c .Assert (err , qt .Equals , nil )
145+ c .Assert (fdev .Registers [rGPIO ], qt .Equals , uint8 (0 ))
146+ }
147+
111148func TestPinMode (t * testing.T ) {
112149 c := qt .New (t )
113150 bus := newBus (c )
0 commit comments