gobot.io/x/gobot/v2@v2.1.0/platforms/raspi/pwm_pin_test.go (about) 1 package raspi 2 3 import ( 4 "errors" 5 "testing" 6 7 "gobot.io/x/gobot/v2" 8 "gobot.io/x/gobot/v2/gobottest" 9 "gobot.io/x/gobot/v2/system" 10 ) 11 12 var _ gobot.PWMPinner = (*PWMPin)(nil) 13 14 func TestPwmPin(t *testing.T) { 15 const path = "/dev/pi-blaster" 16 a := system.NewAccesser() 17 a.UseMockFilesystem([]string{path}) 18 19 pin := NewPWMPin(a, path, "1") 20 21 gobottest.Assert(t, pin.Export(), nil) 22 gobottest.Assert(t, pin.SetEnabled(true), nil) 23 24 val, _ := pin.Polarity() 25 gobottest.Assert(t, val, true) 26 27 gobottest.Assert(t, pin.SetPolarity(false), nil) 28 29 val, _ = pin.Polarity() 30 gobottest.Assert(t, val, true) 31 32 _, err := pin.Period() 33 gobottest.Assert(t, err, errors.New("Raspi PWM pin period not set")) 34 gobottest.Assert(t, pin.SetDutyCycle(10000), errors.New("Raspi PWM pin period not set")) 35 36 gobottest.Assert(t, pin.SetPeriod(20000000), nil) 37 period, _ := pin.Period() 38 gobottest.Assert(t, period, uint32(20000000)) 39 gobottest.Assert(t, pin.SetPeriod(10000000), errors.New("Cannot set the period of individual PWM pins on Raspi")) 40 41 dc, _ := pin.DutyCycle() 42 gobottest.Assert(t, dc, uint32(0)) 43 44 gobottest.Assert(t, pin.SetDutyCycle(10000), nil) 45 46 dc, _ = pin.DutyCycle() 47 gobottest.Assert(t, dc, uint32(10000)) 48 49 gobottest.Assert(t, pin.SetDutyCycle(999999999), errors.New("Duty cycle exceeds period")) 50 dc, _ = pin.DutyCycle() 51 gobottest.Assert(t, dc, uint32(10000)) 52 53 gobottest.Assert(t, pin.Unexport(), nil) 54 }