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  }