Commit 93aa2c5

derdilla <derdilla06@gmail.com>
2023-06-03 11:49:54
add tests for RamSettings and fix parity
1 parent c702a25
test/model/settings_test.dart
@@ -3,6 +3,8 @@ import 'package:flutter_test/flutter_test.dart';
 import 'package:shared_preferences/shared_preferences.dart';
 import 'package:sqflite_common_ffi/sqflite_ffi.dart';
 
+import '../ram_only_implementations.dart';
+
 void main() {
   TestWidgetsFlutterBinding.ensureInitialized();
   SharedPreferences.setMockInitialValues({});
@@ -141,4 +143,129 @@ void main() {
       expect(i, 21);
     });
   });
+
+  group('RamSettings model',() {
+    // setup db path
+    databaseFactory = databaseFactoryFfi;
+
+    test('should initialize', () async {
+      expect(() async { RamSettings(); }, returnsNormally);
+    });
+
+    test('fields defaults should be set after initialization', () async {
+      var s = RamSettings();
+      expect(s.graphStepSize, TimeStep.day);
+      expect(s.followSystemDarkMode, true);
+      expect(s.darkMode, true);
+      expect(s.accentColor.value, 0xFF009688);
+      expect(s.sysColor.value, 0xFF009688);
+      expect(s.diaColor.value, 0xFF4CAF50);
+      expect(s.pulColor.value, 0xFFF44336);
+      expect(s.allowManualTimeInput, true);
+      expect(s.dateFormatString, 'yyyy-MM-dd  HH:mm');
+      expect(s.useExportCompatability, false);
+      expect(s.iconSize, 30);
+      expect(s.sysWarn, 125); // depends on overrideWarnValues
+      expect(s.diaWarn, 80); // depends on overrideWarnValues
+      expect(s.age, 30);
+      expect(s.overrideWarnValues, false);
+      expect(s.validateInputs, true);
+      expect(s.graphLineThickness, 3);
+      expect(s.animationSpeed, 150);
+      expect(s.confirmDeletion, true);
+
+      s.overrideWarnValues = true;
+      expect(s.sysWarn, 120);
+    });
+
+    test('setting fields should save changes', () async {
+      var s = RamSettings();
+
+      int i = 0;
+      s.addListener(() {
+        i++;
+        if (i >= 1) {
+          expect(s.graphStepSize, TimeStep.lifetime);
+        }
+        if (i >= 11) {
+          expect(s.dateFormatString, 'yy:dd @ H:mm.ss');
+        }
+      });
+
+      s.graphStepSize = TimeStep.lifetime;
+      s.displayDataStart = DateTime.fromMillisecondsSinceEpoch(10000);
+      s.displayDataEnd = DateTime.fromMillisecondsSinceEpoch(200000);
+      s.followSystemDarkMode = false;
+      s.darkMode = false;
+      s.accentColor = createMaterialColor(0xFF942DA4);
+      s.sysColor = createMaterialColor(0xFF942DA5);
+      s.diaColor = createMaterialColor(0xFF942DA6);
+      s.pulColor = createMaterialColor(0xFF942DA7);
+      s.allowManualTimeInput = false;
+      s.dateFormatString = 'yy:dd @ H:mm.ss';
+      s.useExportCompatability = true;
+      s.iconSize = 50;
+      s.sysWarn = 314; // depends on overrideWarnValues
+      s.diaWarn = 159; // depends on overrideWarnValues
+      s.age = 26;
+      s.overrideWarnValues = true;
+      s.validateInputs = false;
+      s.graphLineThickness = 5;
+      s.animationSpeed = 100;
+      s.confirmDeletion = false;
+
+      expect(s.displayDataStart, DateTime.fromMillisecondsSinceEpoch(10000));
+      expect(s.displayDataEnd, DateTime.fromMillisecondsSinceEpoch(200000));
+      expect(s.followSystemDarkMode, false);
+      expect(s.darkMode, false);
+      expect(s.accentColor.value, 0xFF942DA4);
+      expect(s.sysColor.value, 0xFF942DA5);
+      expect(s.diaColor.value, 0xFF942DA6);
+      expect(s.pulColor.value, 0xFF942DA7);
+      expect(s.allowManualTimeInput, false);
+      expect(s.useExportCompatability, true);
+      expect(s.iconSize, 50);
+      expect(s.sysWarn, 314);
+      expect(s.diaWarn, 159);
+      expect(s.age, 26);
+      expect(s.overrideWarnValues, true);
+      expect(s.validateInputs, false);
+      expect(s.graphLineThickness, 5);
+      expect(s.animationSpeed, 100);
+      expect(s.confirmDeletion, false);
+    });
+
+    test('setting fields should notify listeners and change values', () async {
+      var s = RamSettings();
+
+      int i = 0;
+      s.addListener(() {
+        i++;
+      });
+
+      s.graphStepSize = TimeStep.lifetime;
+      s.displayDataStart = DateTime.fromMillisecondsSinceEpoch(10000);
+      s.displayDataEnd = DateTime.fromMillisecondsSinceEpoch(200000);
+      s.followSystemDarkMode = false;
+      s.darkMode = false;
+      s.accentColor = createMaterialColor(0xFF942DA4);
+      s.sysColor = createMaterialColor(0xFF942DA5);
+      s.diaColor = createMaterialColor(0xFF942DA6);
+      s.pulColor = createMaterialColor(0xFF942DA7);
+      s.allowManualTimeInput = false;
+      s.dateFormatString = 'yy:dd @ H:mm.ss';
+      s.useExportCompatability = true;
+      s.iconSize = 10;
+      s.sysWarn = 314; // depends on overrideWarnValues
+      s.diaWarn = 159; // depends on overrideWarnValues
+      s.age = 26;
+      s.overrideWarnValues = true;
+      s.validateInputs = false;
+      s.graphLineThickness = 5;
+      s.animationSpeed = 100;
+      s.confirmDeletion = true;
+
+      expect(i, 21);
+    });
+  });
 }
\ No newline at end of file
test/ram_only_implementations.dart
@@ -109,9 +109,9 @@ class RamSettings extends ChangeNotifier implements Settings {
   bool _overrideWarnValues = false;
   MaterialColor _pulColor = Colors.pink;
   MaterialColor _sysColor = Colors.pink;
-  double _sysWarn = 80;
+  double _sysWarn = 120;
   bool _useExportCompatability = false;
-  bool _validateInputs = false;
+  bool _validateInputs = true;
 
   RamSettings() {
     _accentColor = createMaterialColor(0xFF009688);
@@ -156,7 +156,7 @@ class RamSettings extends ChangeNotifier implements Settings {
   @override
   double get sysWarn {
     if (!overrideWarnValues) {
-      return BloodPressureWarnValues.getUpperDiaWarnValue(age).toDouble();
+      return BloodPressureWarnValues.getUpperSysWarnValue(age).toDouble();
     }
     return _sysWarn;
   }
@@ -172,6 +172,7 @@ class RamSettings extends ChangeNotifier implements Settings {
   @override
   set accentColor(MaterialColor value) {
     _accentColor = value;
+    notifyListeners();
   }
 
   @override