Commit f6bdffe
Changed files (2)
test/model/bood_pressure_test.dart
@@ -106,7 +106,66 @@ void main() {
expect((await m.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(0), DateTime.now())).length, 0);
expect((await m.getInTimeRange(DateTime.fromMillisecondsSinceEpoch(0), DateTime.now())).length, 0);
+ });
+
+ test('should return averages', () async {
+ var m = await BloodPressureModel.create(dbPath: '/tmp/bp_test/should_avg');
+
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(1), 122, 87, 65, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(2), 100, 60, 62, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(3), 111, 73, 73, ''));
+
+ expect(await m.avgSys, 111); // 111 // gets 116
+ expect(await m.avgDia, 73); // 73.3333...
+ expect(await m.avgPul, 66); // 66.6666...
+ });
+
+ test('should return max', () async {
+ var m = await BloodPressureModel.create(dbPath: '/tmp/bp_test/should_max');
+
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(1), 123, 87, 65, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(2), 100, 60, 62, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(3), 111, 73, 73, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(4), 111, 73, 73, ''));
+
+ expect(await m.maxSys, 123);
+ expect(await m.maxDia, 87);
+ expect(await m.maxPul, 73);
+ });
+
+ test('should return min', () async {
+ var m = await BloodPressureModel.create(dbPath: '/tmp/bp_test/should_min');
+
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(1), 123, 87, 65, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(2), 100, 60, 62, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(3), 111, 73, 73, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(4), 100, 60, 62, ''));
+
+ expect(await m.minSys, 100);
+ expect(await m.minDia, 60);
+ expect(await m.minPul, 62);
+ });
+
+ test('should know count', () async {
+ var m = await BloodPressureModel.create(dbPath: '/tmp/bp_test/should_count');
+
+ for (int i = 1; i < 101; i++) {
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(i), 0, 0, 0, ''));
+ }
+ expect(await m.count, 100);
+ });
+
+ test('should determine special days', () async {
+ var m = await BloodPressureModel.create(dbPath: '/tmp/bp_test/should_special_days');
+
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(100), 0, 0, 0, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(-2200), 0, 0, 0, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(9000000), 0, 0, 0, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(3124159), 0, 0, 0, ''));
+
+ expect((await m.firstDay), DateTime.fromMillisecondsSinceEpoch(-2200));
+ expect((await m.lastDay), DateTime.fromMillisecondsSinceEpoch(9000000));
});
});
@@ -152,5 +211,66 @@ void main() {
m.add(r);
});
+
+
+ test('should return averages', () async {
+ var m = RamBloodPressureModel();
+
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(1), 122, 87, 65, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(2), 100, 60, 62, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(3), 111, 73, 73, ''));
+
+ expect(await m.avgSys, 111); // 111 // gets 116
+ expect(await m.avgDia, 73); // 73.3333...
+ expect(await m.avgPul, 66); // 66.6666...
+ });
+
+ test('should return max', () async {
+ var m = RamBloodPressureModel();
+
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(1), 123, 87, 65, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(2), 100, 60, 62, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(3), 111, 73, 73, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(4), 111, 73, 73, ''));
+
+ expect(await m.maxSys, 123);
+ expect(await m.maxDia, 87);
+ expect(await m.maxPul, 73);
+ });
+
+ test('should return min', () async {
+ var m = RamBloodPressureModel();
+
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(1), 123, 87, 65, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(2), 100, 60, 62, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(3), 111, 73, 73, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(4), 100, 60, 62, ''));
+
+ expect(await m.minSys, 100);
+ expect(await m.minDia, 60);
+ expect(await m.minPul, 62);
+ });
+
+ test('should know count', () async {
+ var m = RamBloodPressureModel();
+
+ for (int i = 1; i < 101; i++) {
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(i), 0, 0, 0, ''));
+ }
+
+ expect(await m.count, 100);
+ });
+
+ test('should determine special days', () async {
+ var m = RamBloodPressureModel();
+
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(100), 0, 0, 0, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(-2200), 0, 0, 0, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(9000000), 0, 0, 0, ''));
+ await m.add(BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(3124159), 0, 0, 0, ''));
+
+ expect((await m.firstDay), DateTime.fromMillisecondsSinceEpoch(-2200));
+ expect((await m.lastDay), DateTime.fromMillisecondsSinceEpoch(9000000));
+ });
});
}
\ No newline at end of file
test/ram_only_implementations.dart
@@ -6,48 +6,17 @@ import 'package:flutter/material.dart';
class RamBloodPressureModel extends ChangeNotifier implements BloodPressureModel {
final List<BloodPressureRecord> _records = [];
-
@override
Future<void> add(BloodPressureRecord measurement) async {
_records.add(measurement);
notifyListeners();
}
- @override
- Future<int> get avgDia async => _records.map((e) => e.diastolic).reduce((a, b) => a+b) ~/ _records.length;
-
- @override
- Future<int> get avgPul async => _records.map((e) => e.pulse).reduce((a, b) => a+b) ~/ _records.length;
-
- @override
- Future<int> get avgSys async => _records.map((e) => e.systolic).reduce((a, b) => a+b) ~/ _records.length;
-
- @override
- Future<List<BloodPressureRecord>> get all async => _records;
-
- @override
- void close() {}
-
- @override
- Future<int> get count async => _records.length;
-
@override
Future<void> delete(DateTime timestamp) async {
_records.removeWhere((element) => element.creationTime.isAtSameMomentAs(timestamp));
}
- @override
- Future<DateTime> get firstDay async {
- _records.sort((a, b) => a.creationTime.compareTo(b.creationTime));
- return _records.first.creationTime;
- }
-
- @override
- Future<DateTime> get lastDay async {
- _records.sort((a, b) => a.creationTime.compareTo(b.creationTime));
- return _records.last.creationTime;
- }
-
@override
Future<UnmodifiableListView<BloodPressureRecord>> getInTimeRange(DateTime from, DateTime to) async {
List<BloodPressureRecord> recordsInTime = [];
@@ -59,6 +28,21 @@ class RamBloodPressureModel extends ChangeNotifier implements BloodPressureModel
return UnmodifiableListView(recordsInTime);
}
+ @override
+ Future<List<BloodPressureRecord>> get all async => _records;
+
+ @override
+ Future<int> get count async => _records.length;
+
+ @override
+ Future<int> get avgDia async => _records.map((e) => e.diastolic).reduce((a, b) => a+b) ~/ _records.length;
+
+ @override
+ Future<int> get avgPul async => _records.map((e) => e.pulse).reduce((a, b) => a+b) ~/ _records.length;
+
+ @override
+ Future<int> get avgSys async => _records.map((e) => e.systolic).reduce((a, b) => a+b) ~/ _records.length;
+
@override
Future<int> get maxDia async => _records.reduce((a,b) => (a.diastolic>=b.diastolic) ? a : b).diastolic;
@@ -77,6 +61,21 @@ class RamBloodPressureModel extends ChangeNotifier implements BloodPressureModel
@override
Future<int> get minSys async => _records.reduce((a,b) => (a.systolic<=b.systolic) ? a : b).systolic;
+ @override
+ Future<DateTime> get firstDay async {
+ _records.sort((a, b) => a.creationTime.compareTo(b.creationTime));
+ return _records.first.creationTime;
+ }
+
+ @override
+ Future<DateTime> get lastDay async {
+ _records.sort((a, b) => a.creationTime.compareTo(b.creationTime));
+ return _records.last.creationTime;
+ }
+
+ @override
+ void close() {}
+
@override
Future<void> import(void Function(bool p1, String? p2) callback) {
// TODO: implement import
@@ -88,5 +87,4 @@ class RamBloodPressureModel extends ChangeNotifier implements BloodPressureModel
// TODO: implement save
throw UnimplementedError();
}
-
}
\ No newline at end of file