main
1
2import 'package:blood_pressure_app/model/blood_pressure_analyzer.dart';
3import 'package:flutter_test/flutter_test.dart';
4import 'package:health_data_store/health_data_store.dart';
5
6void main() {
7 test('should return averages', () {
8 final m = BloodPressureAnalyser([
9 mockRecordPos(DateTime.fromMillisecondsSinceEpoch(1), 122, 87, 65),
10 mockRecordPos(DateTime.fromMillisecondsSinceEpoch(2), 100, 60, 62),
11 mockRecordPos(DateTime.fromMillisecondsSinceEpoch(3), 111, 73, 73),
12 ]);
13
14 expect(m.avgSys?.mmHg, 111);
15 expect(m.avgDia?.mmHg, 73);
16 expect(m.avgPul, 66);
17 });
18
19 test('should return max', () {
20 final a = BloodPressureAnalyser([
21 mockRecordPos(DateTime.fromMillisecondsSinceEpoch(1), 123, 87, 65),
22 mockRecordPos(DateTime.fromMillisecondsSinceEpoch(2), 100, 60, 62),
23 mockRecordPos(DateTime.fromMillisecondsSinceEpoch(3), 111, 73, 73),
24 mockRecordPos(DateTime.fromMillisecondsSinceEpoch(4), 111, 73, 73),
25 ]);
26
27 expect(a.maxSys?.mmHg, 123);
28 expect(a.maxDia?.mmHg, 87);
29 expect(a.maxPul, 73);
30 });
31
32 test('should return min', () {
33 final a = BloodPressureAnalyser([
34 mockRecordPos(DateTime.fromMillisecondsSinceEpoch(1), 123, 87, 65),
35 mockRecordPos(DateTime.fromMillisecondsSinceEpoch(2), 100, 60, 62),
36 mockRecordPos(DateTime.fromMillisecondsSinceEpoch(3), 111, 73, 73),
37 mockRecordPos(DateTime.fromMillisecondsSinceEpoch(4), 100, 60, 62),
38 ]);
39
40 expect(a.minSys?.mmHg, 100);
41 expect(a.minDia?.mmHg, 60);
42 expect(a.minPul, 62);
43 });
44
45 test('should know count', () {
46 final m = BloodPressureAnalyser([
47 for (int i = 1; i < 101; i++)
48 mockRecordPos(DateTime.fromMillisecondsSinceEpoch(i), 0, 0, 0),
49 ]);
50 expect(m.count, 100);
51 });
52
53 test('should determine special days', () {
54 final m = BloodPressureAnalyser([mockRecordPos(DateTime.fromMillisecondsSinceEpoch(100), 0, 0, 0),
55 mockRecordPos(DateTime.fromMillisecondsSinceEpoch(20), 0, 0, 0),
56 mockRecordPos(DateTime.fromMillisecondsSinceEpoch(9000000), 0, 0, 0),
57 mockRecordPos(DateTime.fromMillisecondsSinceEpoch(3124159), 0, 0, 0),
58 ]);
59
60 expect((m.firstDay), DateTime.fromMillisecondsSinceEpoch(20));
61 expect((m.lastDay), DateTime.fromMillisecondsSinceEpoch(9000000));
62 });
63
64 test('groups analyzers for all hours', () {
65 final analyzer = BloodPressureAnalyser([]);
66 final groups = analyzer.groupAnalysers();
67 expect(groups, hasLength(24));
68 expect(groups, everyElement(isA<BloodPressureAnalyser>().having((a) => a.count, 'count', 0)));
69 });
70
71 test('creates groups correctly', () {
72 final analyzer = BloodPressureAnalyser([
73 mockRecordPos(DateTime(2000, 1, 1, 5), 123),
74 mockRecordPos(DateTime(2000, 1, 1, 5), 123),
75 mockRecordPos(DateTime(2000, 1, 1, 5), 123),
76 mockRecordPos(DateTime(2000, 1, 1, 8), 123),
77 mockRecordPos(DateTime(2000, 1, 1, 12), 123),
78 mockRecordPos(DateTime(2000, 1, 1, 12), 123),
79 mockRecordPos(DateTime(2000, 1, 1, 19), 123),
80 mockRecordPos(DateTime(2000, 1, 1, 19), 0, 122),
81 mockRecord(time: DateTime(2000, 1, 1, 19), pul: 12),
82 mockRecordPos(DateTime(2000, 1, 1, 23, 40), 123),
83 ]);
84 final groups = analyzer.groupAnalysers();
85 expect(groups[5].count, 3);
86 expect(groups[8].count, 1);
87 expect(groups[12].count, 2);
88 expect(groups[19].count, 3);
89 expect(groups[0].count, 1);
90
91 for (final i in [1,2,3,4,6,7,9,10,11,3,14,15,16,17,18,20,21,22,23]) {
92 expect(groups[i].count, 0);
93 }
94 });
95}
96
97BloodPressureRecord mockRecordPos([
98 DateTime? time,
99 int? sys,
100 int? dia,
101 int? pul,
102]) => mockRecord(
103 time: time ?? DateTime.now(),
104 sys: sys,
105 dia: dia,
106 pul: pul,
107);
108
109BloodPressureRecord mockRecord({
110 DateTime? time,
111 int? sys,
112 int? dia,
113 int? pul,
114}) => BloodPressureRecord(
115 time: time ?? DateTime.now(),
116 sys: sys == null ? null : Pressure.mmHg(sys),
117 dia: dia == null ? null : Pressure.mmHg(dia),
118 pul: pul,
119);