diff --git a/devices/cap1xxx/cap1xxx_go1_7_test.go b/devices/cap1xxx/cap1xxx_go1_7_test.go deleted file mode 100644 index 3ff6b08..0000000 --- a/devices/cap1xxx/cap1xxx_go1_7_test.go +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright 2017 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. - -// +build go1.7 - -package cap1xxx - -import ( - "reflect" - "testing" - - "periph.io/x/periph/conn/i2c" - "periph.io/x/periph/conn/i2c/i2ctest" -) - -func TestDev_InputStatus(t *testing.T) { - tests := []struct { - name string - bus i2c.Bus - want [8]TouchStatus - }{ - {name: "all off", - bus: &i2ctest.Playback{ - Ops: append(setupPlaybackIO(), []i2ctest.IO{ - // status - {Addr: 40, W: []byte{0x3}, R: []byte{0x0}}, - // deltas - //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - // thresholds - //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - }...), - }, - want: [8]TouchStatus{OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus}, - }, - {name: "all pressed", - bus: &i2ctest.Playback{ - Ops: append(setupPlaybackIO(), []i2ctest.IO{ - {Addr: 40, W: []byte{0x3}, R: []byte{0xff}}, - //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - }...), - }, - want: [8]TouchStatus{PressedStatus, PressedStatus, PressedStatus, PressedStatus, PressedStatus, PressedStatus, PressedStatus, PressedStatus}, - }, - {name: "first pressed", - bus: &i2ctest.Playback{ - Ops: append(setupPlaybackIO(), []i2ctest.IO{ - {Addr: 40, W: []byte{0x3}, R: []byte{0x80}}, - //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - }...), - }, - want: [8]TouchStatus{PressedStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus}, - }, - {name: "second pressed", - bus: &i2ctest.Playback{ - Ops: append(setupPlaybackIO(), []i2ctest.IO{ - {Addr: 40, W: []byte{0x3}, R: []byte{0x40}}, - //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - }...), - }, - want: [8]TouchStatus{OffStatus, PressedStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus}, - }, - {name: "third pressed", - bus: &i2ctest.Playback{ - Ops: append(setupPlaybackIO(), []i2ctest.IO{ - {Addr: 40, W: []byte{0x3}, R: []byte{0x20}}, - //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - }...), - }, - want: [8]TouchStatus{OffStatus, OffStatus, PressedStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus}, - }, - {name: "eighth pressed", - bus: &i2ctest.Playback{ - Ops: append(setupPlaybackIO(), []i2ctest.IO{ - {Addr: 40, W: []byte{0x3}, R: []byte{0x1}}, - //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - }...), - }, - want: [8]TouchStatus{OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, PressedStatus}, - }, - {name: "3 pressed", - bus: &i2ctest.Playback{ - Ops: append(setupPlaybackIO(), []i2ctest.IO{ - {Addr: 40, W: []byte{0x3}, R: []byte{0x91}}, - //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - }...), - }, - want: [8]TouchStatus{PressedStatus, OffStatus, OffStatus, PressedStatus, OffStatus, OffStatus, OffStatus, PressedStatus}, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - d, err := NewI2C(tt.bus, &DefaultOpts) - if err != nil { - t.Fatal(err) - } - var got [8]TouchStatus - if err := d.InputStatus(got[:]); err != nil { - t.Fatalf("Dev.InputStatus() error = %v", err) - } - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("Dev.InputStatus() = %v, want %v", got, tt.want) - } - }) - } - // test hold - t.Run("held touch sensors", func(t *testing.T) { - bus := &i2ctest.Playback{ - Ops: append(setupPlaybackIO(), []i2ctest.IO{ - {Addr: 40, W: []byte{0x3}, R: []byte{0x80}}, - //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - // repeat call to get status (still pressed) - {Addr: 40, W: []byte{0x3}, R: []byte{0x80}}, - //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - // finall call - {Addr: 40, W: []byte{0x3}, R: []byte{0x0}}, - //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, - }...), - } - // Set the recorded response to have the retrigger option on. - bus.Ops[10] = i2ctest.IO{Addr: 40, W: []byte{0x28, 0xff}, R: nil} - opts := DefaultOpts - // Following option needs to be true so we can get the held status. - opts.RetriggerOnHold = true - d, err := NewI2C(bus, &opts) - if err != nil { - t.Fatal(err) - } - // first check - var got [8]TouchStatus - if err := d.InputStatus(got[:]); err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(got, [8]TouchStatus{PressedStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus}) { - t.Fatalf("expected to have the first sensor touched but instead got %v", got) - } - // 2nd check - if err = d.InputStatus(got[:]); err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(got, [8]TouchStatus{HeldStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus}) { - t.Fatalf("expected to have the first sensor touched but instead got %v", got) - } - }) -} diff --git a/devices/cap1xxx/cap1xxx_test.go b/devices/cap1xxx/cap1xxx_test.go index aacbe5a..0745db9 100644 --- a/devices/cap1xxx/cap1xxx_test.go +++ b/devices/cap1xxx/cap1xxx_test.go @@ -8,9 +8,11 @@ import ( "flag" "io/ioutil" "log" + "reflect" "testing" "time" + "periph.io/x/periph/conn/i2c" "periph.io/x/periph/conn/i2c/i2ctest" ) @@ -57,6 +59,145 @@ func TestNewI2C(t *testing.T) { } } +func TestDev_InputStatus(t *testing.T) { + tests := []struct { + name string + bus i2c.Bus + want [8]TouchStatus + }{ + {name: "all off", + bus: &i2ctest.Playback{ + Ops: append(setupPlaybackIO(), []i2ctest.IO{ + // status + {Addr: 40, W: []byte{0x3}, R: []byte{0x0}}, + // deltas + //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + // thresholds + //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + }...), + }, + want: [8]TouchStatus{OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus}, + }, + {name: "all pressed", + bus: &i2ctest.Playback{ + Ops: append(setupPlaybackIO(), []i2ctest.IO{ + {Addr: 40, W: []byte{0x3}, R: []byte{0xff}}, + //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + }...), + }, + want: [8]TouchStatus{PressedStatus, PressedStatus, PressedStatus, PressedStatus, PressedStatus, PressedStatus, PressedStatus, PressedStatus}, + }, + {name: "first pressed", + bus: &i2ctest.Playback{ + Ops: append(setupPlaybackIO(), []i2ctest.IO{ + {Addr: 40, W: []byte{0x3}, R: []byte{0x80}}, + //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + }...), + }, + want: [8]TouchStatus{PressedStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus}, + }, + {name: "second pressed", + bus: &i2ctest.Playback{ + Ops: append(setupPlaybackIO(), []i2ctest.IO{ + {Addr: 40, W: []byte{0x3}, R: []byte{0x40}}, + //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + }...), + }, + want: [8]TouchStatus{OffStatus, PressedStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus}, + }, + {name: "third pressed", + bus: &i2ctest.Playback{ + Ops: append(setupPlaybackIO(), []i2ctest.IO{ + {Addr: 40, W: []byte{0x3}, R: []byte{0x20}}, + //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + }...), + }, + want: [8]TouchStatus{OffStatus, OffStatus, PressedStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus}, + }, + {name: "eighth pressed", + bus: &i2ctest.Playback{ + Ops: append(setupPlaybackIO(), []i2ctest.IO{ + {Addr: 40, W: []byte{0x3}, R: []byte{0x1}}, + //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + }...), + }, + want: [8]TouchStatus{OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, PressedStatus}, + }, + {name: "3 pressed", + bus: &i2ctest.Playback{ + Ops: append(setupPlaybackIO(), []i2ctest.IO{ + {Addr: 40, W: []byte{0x3}, R: []byte{0x91}}, + //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + }...), + }, + want: [8]TouchStatus{PressedStatus, OffStatus, OffStatus, PressedStatus, OffStatus, OffStatus, OffStatus, PressedStatus}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + d, err := NewI2C(tt.bus, &DefaultOpts) + if err != nil { + t.Fatal(err) + } + var got [8]TouchStatus + if err := d.InputStatus(got[:]); err != nil { + t.Fatalf("Dev.InputStatus() error = %v", err) + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("Dev.InputStatus() = %v, want %v", got, tt.want) + } + }) + } + // test hold + t.Run("held touch sensors", func(t *testing.T) { + bus := &i2ctest.Playback{ + Ops: append(setupPlaybackIO(), []i2ctest.IO{ + {Addr: 40, W: []byte{0x3}, R: []byte{0x80}}, + //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + // repeat call to get status (still pressed) + {Addr: 40, W: []byte{0x3}, R: []byte{0x80}}, + //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + // finall call + {Addr: 40, W: []byte{0x3}, R: []byte{0x0}}, + //{Addr: 40, W: []byte{0x10}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + //{Addr: 40, W: []byte{0x30}, R: []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, + }...), + } + // Set the recorded response to have the retrigger option on. + bus.Ops[10] = i2ctest.IO{Addr: 40, W: []byte{0x28, 0xff}, R: nil} + opts := DefaultOpts + // Following option needs to be true so we can get the held status. + opts.RetriggerOnHold = true + d, err := NewI2C(bus, &opts) + if err != nil { + t.Fatal(err) + } + // first check + var got [8]TouchStatus + if err := d.InputStatus(got[:]); err != nil { + t.Fatal(err) + } + if !reflect.DeepEqual(got, [8]TouchStatus{PressedStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus}) { + t.Fatalf("expected to have the first sensor touched but instead got %v", got) + } + // 2nd check + if err = d.InputStatus(got[:]); err != nil { + t.Fatal(err) + } + if !reflect.DeepEqual(got, [8]TouchStatus{HeldStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus, OffStatus}) { + t.Fatalf("expected to have the first sensor touched but instead got %v", got) + } + }) +} + func setupPlaybackIO() []i2ctest.IO { return []i2ctest.IO{ // chip ID diff --git a/experimental/devices/ina219/ina219_go1_7_test.go b/experimental/devices/ina219/ina219_test.go similarity index 99% rename from experimental/devices/ina219/ina219_go1_7_test.go rename to experimental/devices/ina219/ina219_test.go index 076074a..bfa9c71 100644 --- a/experimental/devices/ina219/ina219_go1_7_test.go +++ b/experimental/devices/ina219/ina219_test.go @@ -2,8 +2,6 @@ // Use of this source code is governed under the Apache License, Version 2.0 // that can be found in the LICENSE file. -// +build go1.7 - package ina219 import (