hondavert-dev/test/temp_table_test.dart
HVBT Dev 11cf7c2b63 v1.0.1 — Phase 1 complete + BT connection test UI
- Phase 1 core protocol: temp_table, neg8, sensor_state, s300_parser,
  kpro_parser, dtc_map, sensor_defs (50/50 tests passing)
- BT layer: bt_service.dart, bt_poller.dart (100ms poll, NEG8 validation)
- Connection test UI: device picker, protocol selector, live sensor screen
  with LIVE DATA + DEBUG LOG tabs
- Runtime BT permission request (Android 12+) + auto-enable Bluetooth
- Android: minSdk=26, all BT+location permissions in manifest
- Fixed flutter_bluetooth_serial namespace for AGP compatibility
2026-04-12 18:07:37 +05:30

37 lines
1.0 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 = 230°C', () {
expect(decodeTemp(0x00), equals(230.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));
}
});
});
}