mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-07-26 10:38:41 +00:00
47 lines
945 B
Go
47 lines
945 B
Go
package dht
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestDeviceType_extractData(t *testing.T) {
|
|
bitStr := "0000001010001100000000010101111111101110"
|
|
buf := bitStringToBytes(bitStr)
|
|
|
|
tt := []struct {
|
|
name string
|
|
d DeviceType
|
|
buf []byte
|
|
wantTemp int16
|
|
wantHum uint16
|
|
}{
|
|
{
|
|
// temp = 35.1C hum = 65.2%
|
|
name: "DHT22", d: DHT22, buf: buf, wantTemp: 351, wantHum: 652,
|
|
},
|
|
}
|
|
|
|
for _, tc := range tt {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
gotTemp, gotHum := tc.d.extractData(tc.buf)
|
|
if gotTemp != tc.wantTemp {
|
|
t.Errorf("extractData() gotTemp = %v, want %v", gotTemp, tc.wantTemp)
|
|
}
|
|
if gotHum != tc.wantHum {
|
|
t.Errorf("extractData() gotHum = %v, want %v", gotHum, tc.wantHum)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func bitStringToBytes(s string) []byte {
|
|
b := make([]byte, (len(s)+(8-1))/8)
|
|
for i, r := range s {
|
|
if r < '0' || r > '1' {
|
|
panic("not in range")
|
|
}
|
|
b[i>>3] |= byte(r-'0') << uint(7-i&7)
|
|
}
|
|
return b
|
|
}
|