hondavert-dev/test/temp_table_test.dart
2026-08-08 13:18:02 -04:00

43 lines
1.3 KiB
Dart

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));
});
});
}