import 'package:flutter_test/flutter_test.dart'; import 'package:hvbt_dash/core/protocol/temp_table.dart'; double decodeTemp(int raw) => (tempXlt[raw] - 40).toDouble(); void main() { group('Temperature lookup table', () { test('tempXlt has exactly 256 entries', () { expect(tempXlt.length, equals(256)); }); test('decodeTemp(0x00) = tempXlt[0] - 40 = 190 - 40 = 150°C', () { expect(decodeTemp(0x00), equals(150.0)); }); test('decodeTemp(0xA0) = tempXlt[160] - 40', () { // 0xA0 = 160 decimal; tempXlt[160] = 60 expect(decodeTemp(0xA0), equals(60 - 40.0)); }); test('decodeTemp(0xFF) = tempXlt[255] - 40 = 0 - 40 = -40°C', () { expect(decodeTemp(0xFF), equals(-40.0)); }); test('decodeTemp(0x80) = tempXlt[128] - 40', () { // 0x80 = 128; tempXlt[128] = 73 expect(decodeTemp(0x80), equals(73 - 40.0)); }); test('all table values are non-negative', () { for (final v in tempXlt) { expect(v, greaterThanOrEqualTo(0)); } }); test('decoded range matches the declared -40..150°C sensor range', () { final decoded = tempXlt.map((v) => v - 40).toList(); expect(decoded.reduce((a, b) => a > b ? a : b), equals(150)); expect(decoded.reduce((a, b) => a < b ? a : b), equals(-40)); }); }); }