gobot.io/x/gobot/v2@v2.1.0/platforms/jetson/pwm_pin_test.go (about) 1 package jetson 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 a := system.NewAccesser() 16 mockPaths := []string{ 17 "/sys/class/pwm/pwmchip0/export", 18 "/sys/class/pwm/pwmchip0/unexport", 19 "/sys/class/pwm/pwmchip0/pwm0/enable", 20 "/sys/class/pwm/pwmchip0/pwm0/period", 21 "/sys/class/pwm/pwmchip0/pwm0/duty_cycle", 22 } 23 a.UseMockFilesystem(mockPaths) 24 25 pin := NewPWMPin(a, "/sys/class/pwm/pwmchip0", "0") 26 gobottest.Assert(t, pin.Export(), nil) 27 gobottest.Assert(t, pin.SetEnabled(true), nil) 28 val, _ := pin.Polarity() 29 gobottest.Assert(t, val, true) 30 gobottest.Assert(t, pin.SetPolarity(false), nil) 31 val, _ = pin.Polarity() 32 gobottest.Assert(t, val, true) 33 34 _, err := pin.Period() 35 gobottest.Assert(t, err, errors.New("Jetson PWM pin period not set")) 36 gobottest.Assert(t, pin.SetDutyCycle(10000), errors.New("Jetson PWM pin period not set")) 37 38 gobottest.Assert(t, pin.SetPeriod(20000000), nil) 39 period, _ := pin.Period() 40 gobottest.Assert(t, period, uint32(20000000)) 41 gobottest.Assert(t, pin.SetPeriod(10000000), errors.New("Cannot set the period of individual PWM pins on Jetson")) 42 43 dc, _ := pin.DutyCycle() 44 gobottest.Assert(t, dc, uint32(0)) 45 46 gobottest.Assert(t, pin.SetDutyCycle(10000), nil) 47 dc, _ = pin.DutyCycle() 48 gobottest.Assert(t, dc, uint32(10000)) 49 50 gobottest.Assert(t, pin.SetDutyCycle(999999999), errors.New("Duty cycle exceeds period")) 51 dc, _ = pin.DutyCycle() 52 gobottest.Assert(t, dc, uint32(10000)) 53 54 gobottest.Assert(t, pin.Unexport(), nil) 55 }