43 lines
1.3 KiB
Dart
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));
|
|
});
|
|
});
|
|
}
|