public void TemperatureImageTest() { I2cTestDevice i2cDevice = new I2cTestDevice(); Amg88xx sensor = new Amg88xx(i2cDevice); Temperature[,] referenceImage = new Temperature[Amg88xx.Width, Amg88xx.Height]; Random rnd = new Random(); for (int y = 0; y < Amg88xx.Height; y++) { for (int x = 0; x < Amg88xx.Width; x++) { referenceImage[x, y] = Temperature.FromDegreesCelsius(rnd.Next(-80, 321) * PixelTemperatureResolution); (byte tl, byte th) = Amg88xxUtils.ConvertFromTemperature(referenceImage[x, y]); i2cDevice.DataToRead.Enqueue(tl); i2cDevice.DataToRead.Enqueue(th); } } // read image from sensor sensor.ReadImage(); // expectation: one write access to register T01L (lower byte of first pixel) to trigger readout Assert.Single(i2cDevice.DataWritten); Assert.Equal((byte)Register.T01L, i2cDevice.DataWritten.Dequeue()); // expectation: all pixels have been read, so nothing is remaining Assert.Empty(i2cDevice.DataToRead); Assert.Equal(referenceImage, sensor.TemperatureImage); }
public void ConvertToTemperatureTest(Int16 value, double expected) { byte[] valueBuffer = new byte[2]; BinaryPrimitives.WriteInt16LittleEndian(new Span <byte>(valueBuffer), value); Assert.Equal(expected, Amg88xxUtils.ConvertToTemperature(valueBuffer).DegreesCelsius); Assert.Equal(expected, Amg88xxUtils.ConvertToTemperature((byte)(value & 0xff), (byte)((value & 0xff00) >> 8)).DegreesCelsius); }
public void InterruptHysteresisLevelSetTest() { Temperature expectedTemperature = Temperature.FromDegreesCelsius(125); I2cTestDevice i2cDevice = new I2cTestDevice(); Amg88xx sensor = new Amg88xx(i2cDevice); sensor.InterruptHysteresis = expectedTemperature; Assert.Equal(4, i2cDevice.DataWritten.Count); (byte refTl, byte refTh) = Amg88xxUtils.ConvertFromTemperature(expectedTemperature); Assert.Equal((byte)Register.INTSL, i2cDevice.DataWritten.Dequeue()); Assert.Equal(refTl, i2cDevice.DataWritten.Dequeue()); Assert.Equal((byte)Register.INTSH, i2cDevice.DataWritten.Dequeue()); Assert.Equal(refTh, i2cDevice.DataWritten.Dequeue()); }
public void InterruptHysteresisLevelGetTest() { // expected temeperature: 72.75°C // two's complement representation: byte expectedTl = 0x23; byte expectedTh = 0x01; I2cTestDevice i2cDevice = new I2cTestDevice(); Amg88xx sensor = new Amg88xx(i2cDevice); i2cDevice.DataToRead.Enqueue(expectedTl); i2cDevice.DataToRead.Enqueue(expectedTh); Temperature actualTemperature = sensor.InterruptHysteresis; Assert.Equal(2, i2cDevice.DataWritten.Count); Assert.Equal((byte)Register.INTSL, i2cDevice.DataWritten.Dequeue()); Assert.Equal((byte)Register.INTSH, i2cDevice.DataWritten.Dequeue()); Assert.Equal(Amg88xxUtils.ConvertToTemperature(expectedTl, expectedTh).DegreesCelsius, actualTemperature.DegreesCelsius); }
public void ConvertFromTemperatureTest(double temperature, byte expectedTl, byte expectedTh) { (byte tl, byte th) = Amg88xxUtils.ConvertFromTemperature(Temperature.FromDegreesCelsius(temperature)); Assert.Equal(expectedTl, tl); Assert.Equal(expectedTh, th); }