Commit 57a7642
Changed files (2)
lib
model
blood_pressure
medicine
test
model
medicine
lib/model/blood_pressure/medicine/intake_history.dart
@@ -28,8 +28,6 @@ class IntakeHistory extends ChangeNotifier {
/// Serializes the current state of the object into a string.
String serialize() => _medicineIntakes.map((e) => e.serialize()).join('\n');
- // TODO test serialization
-
/// List of all medicine intakes sorted in ascending order.
///
/// Can contain multiple medicine intakes at the same time.
@@ -125,4 +123,18 @@ class IntakeHistory extends ChangeNotifier {
return idx + 1;
}
+
+ @override
+ bool operator ==(Object other) =>
+ identical(this, other) ||
+ other is IntakeHistory && runtimeType == other.runtimeType &&
+ (){
+ for (final e in _medicineIntakes) {
+ if (!other._medicineIntakes.contains(e)) return false;
+ }
+ return true;
+ }();
+
+ @override
+ int get hashCode => _medicineIntakes.hashCode;
}
\ No newline at end of file
test/model/medicine/intake_history_test.dart
@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'medicine_intake_test.dart';
+import 'medicine_test.dart';
void main() {
group('IntakeHistory', () {
@@ -149,5 +150,23 @@ void main() {
));
expect(found.length, 0);
});
+ test('should serialize and deserialize', () {
+ final meds = [mockMedicine(defaultDosis: 1), mockMedicine(defaultDosis: 2),mockMedicine(defaultDosis: 3), mockMedicine(defaultDosis: 4)];
+ final history = IntakeHistory([
+ mockIntake(dosis: 123, timeMs: 1235, medicine: meds[0]),
+ mockIntake(dosis: 123, timeMs: 1235, medicine: meds[0]),
+ mockIntake(dosis: 123, timeMs: 1235, medicine: meds[1]),
+ mockIntake(dosis: 123, timeMs: 1235, medicine: meds[2]),
+ mockIntake(dosis: 123, timeMs: 132, medicine: meds[3]),
+ mockIntake(dosis: 1232, timeMs: 132, medicine: meds[3]),
+ mockIntake(dosis: 1232, timeMs: 132, medicine: meds[3]),
+ mockIntake(dosis: 1232, timeMs: 132, medicine: meds[3]),
+ mockIntake(dosis: 123, timeMs: 1235, medicine: meds[3]),
+ ]);
+ final deserializedHistory = IntakeHistory.deserialize(history.serialize(), meds);
+
+ expect(deserializedHistory.serialize(), history.serialize());
+ expect(deserializedHistory, history);
+ });
});
}
\ No newline at end of file