mirror of https://github.com/periph/devices
parent
9bd83d1b9b
commit
077c5a6558
@ -0,0 +1,128 @@
|
|||||||
|
// Copyright 2018 The Periph Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed under the Apache License, Version 2.0
|
||||||
|
// that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package hx711
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"periph.io/x/periph/conn/gpio"
|
||||||
|
"periph.io/x/periph/conn/gpio/gpiotest"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestNew(t *testing.T) {
|
||||||
|
clk := gpiotest.Pin{N: "clk"}
|
||||||
|
data := gpiotest.Pin{N: "data", EdgesChan: make(chan gpio.Level)}
|
||||||
|
d, err := New(&clk, &data)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if s := d.String(); s != "hx711{clk, data}" {
|
||||||
|
t.Fatal(s)
|
||||||
|
}
|
||||||
|
if s := d.Name(); s != "hx711{clk, data}" {
|
||||||
|
t.Fatal(s)
|
||||||
|
}
|
||||||
|
if n := d.Number(); n != -1 {
|
||||||
|
t.Fatal(n)
|
||||||
|
}
|
||||||
|
if f := d.Function(); f != "ADC" {
|
||||||
|
t.Fatal(f)
|
||||||
|
}
|
||||||
|
min, max := d.Range()
|
||||||
|
// TODO(davidsansome): Is that the right values?
|
||||||
|
if min.Raw != -8388608 {
|
||||||
|
t.Fatal(min.Raw)
|
||||||
|
}
|
||||||
|
if max.Raw != 8388608 {
|
||||||
|
t.Fatal(max.Raw)
|
||||||
|
}
|
||||||
|
if !d.IsReady() {
|
||||||
|
t.Fatal("data is low")
|
||||||
|
}
|
||||||
|
if err := d.SetInputMode(CHANNEL_A_GAIN_128); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if err := d.Halt(); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestNew_Fail(t *testing.T) {
|
||||||
|
ok := gpiotest.Pin{N: "ok", EdgesChan: make(chan gpio.Level)}
|
||||||
|
fail := failPin{gpiotest.Pin{N: "fail"}}
|
||||||
|
if _, err := New(&fail, &ok); err == nil {
|
||||||
|
t.Fatal("expected failure")
|
||||||
|
}
|
||||||
|
if _, err := New(&ok, &fail); err == nil {
|
||||||
|
t.Fatal("expected failure")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestRead(t *testing.T) {
|
||||||
|
clk := gpiotest.Pin{N: "clk"}
|
||||||
|
data := gpiotest.Pin{N: "data", EdgesChan: make(chan gpio.Level)}
|
||||||
|
d, err := New(&clk, &data)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
// TODO(davidsansome): Real testing.
|
||||||
|
r, err := d.Read()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if r.Raw != 0 {
|
||||||
|
t.Fatal("we should implement something")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestReadTimeout(t *testing.T) {
|
||||||
|
clk := gpiotest.Pin{N: "clk"}
|
||||||
|
data := gpiotest.Pin{N: "data", EdgesChan: make(chan gpio.Level)}
|
||||||
|
d, err := New(&clk, &data)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
// TODO(davidsansome): Real testing.
|
||||||
|
r, err := d.ReadTimeout(time.Second)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if r != 0 {
|
||||||
|
t.Fatal("we should implement something")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestReadContinuous(t *testing.T) {
|
||||||
|
clk := gpiotest.Pin{N: "clk"}
|
||||||
|
data := gpiotest.Pin{N: "data", EdgesChan: make(chan gpio.Level)}
|
||||||
|
d, err := New(&clk, &data)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
// TODO(davidsansome): Real testing.
|
||||||
|
c := d.ReadContinuous()
|
||||||
|
if c == nil {
|
||||||
|
t.Fatal("expected chan")
|
||||||
|
}
|
||||||
|
if err := d.Halt(); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
type failPin struct {
|
||||||
|
gpiotest.Pin
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *failPin) In(pull gpio.Pull, edge gpio.Edge) error {
|
||||||
|
return errors.New("fail")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *failPin) Out(l gpio.Level) error {
|
||||||
|
return errors.New("fail")
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue