Commit 54e5dcd

derdilla <82763757+NobodyForNothing@users.noreply.github.com>
2023-10-04 12:01:49
cleanup old settings
Signed-off-by: derdilla <82763757+NobodyForNothing@users.noreply.github.com>
1 parent 61349a5
Changed files (2)
lib/model/ram_only_implementations.dart
@@ -1,14 +1,8 @@
 import 'dart:collection';
 
 import 'package:blood_pressure_app/model/blood_pressure.dart';
-import 'package:blood_pressure_app/model/export_import.dart';
-import 'package:blood_pressure_app/model/export_options.dart';
-import 'package:blood_pressure_app/model/settings_store.dart';
-import 'package:file_saver/file_saver.dart' show MimeType;
 import 'package:flutter/material.dart';
 
-import 'horizontal_graph_line.dart';
-
 class RamBloodPressureModel extends ChangeNotifier implements BloodPressureModel {
   final List<BloodPressureRecord> _records = [];
   
@@ -47,559 +41,4 @@ class RamBloodPressureModel extends ChangeNotifier implements BloodPressureModel
 
   @override
   void close() {}
-}
-
-class RamSettings extends ChangeNotifier implements Settings {
-  MaterialColor _accentColor = Colors.pink;
-  bool _allowManualTimeInput = true;
-  int _animationSpeed = 150;
-  bool _confirmDeletion = true;
-  bool _darkMode = true;
-  String _dateFormatString = 'yyyy-MM-dd  HH:mm';
-  MaterialColor _diaColor = Colors.pink;
-  int _diaWarn = 80;
-  DateTime? _displayDataEnd;
-  DateTime? _displayDataStart;
-  bool _followSystemDarkMode = true;
-  double _graphLineThickness = 3;
-  TimeStep _graphStepSize = TimeStep.day;
-  MaterialColor _pulColor = Colors.pink;
-  MaterialColor _sysColor = Colors.pink;
-  int _sysWarn = 120;
-  bool _useExportCompatability = false;
-  bool _validateInputs = true;
-  ExportFormat _exportFormat = ExportFormat.csv;
-  String _csvFieldDelimiter = ',';
-  String _csvTextDelimiter = '"';
-  bool _exportCsvHeadline = true;
-  bool _exportCustomEntries = false;
-  List<String> _exportItems = ['timestampUnixMs', 'systolic', 'diastolic', 'pulse', 'notes'];
-  MimeType _exportMimeType = MimeType.csv;
-  String _defaultExportDir = '';
-  bool _exportAfterEveryEntry = false;
-  bool _allowMissingValues = false;
-  Locale? _language;
-  bool _drawRegressionLines = false;
-
-  RamSettings() {
-    _accentColor = createMaterialColor(0xFF009688);
-    _diaColor = createMaterialColor(0xFF4CAF50);
-    _pulColor = createMaterialColor(0xFFF44336);
-    _sysColor = createMaterialColor(0xFF009688);
-  }
-
-  @override
-  int get diaWarn {
-    return _diaWarn;
-  }
-
-  @override
-  set diaWarn(int newWarn) {
-    _diaWarn = newWarn;
-    notifyListeners();
-  }
-
-  @override
-  DateTime get displayDataStart {
-    final s = _displayDataStart ?? getMostRecentDisplayIntervall()[0];
-    if(s.millisecondsSinceEpoch < 0) {
-      changeStepSize(TimeStep.last7Days);
-    }
-    return s;
-  }
-
-  @override
-  set displayDataStart(DateTime newGraphStart) {
-    _displayDataStart = newGraphStart;
-    notifyListeners();
-  }
-
-  @override
-  DateTime get displayDataEnd {
-    final s = _displayDataEnd ?? getMostRecentDisplayIntervall()[1];
-    if(s.millisecondsSinceEpoch < 0) {
-      changeStepSize(TimeStep.last7Days);
-    }
-    return s;
-  }
-
-  @override
-  set displayDataEnd(DateTime newGraphEnd) {
-    _displayDataEnd = newGraphEnd;
-    notifyListeners();
-  }
-
-  @override
-  int get sysWarn {
-    return _sysWarn;
-  }
-
-  @override
-  set sysWarn(int newWarn) {
-    _sysWarn = newWarn;
-    notifyListeners();
-  }
-
-  @override
-  MaterialColor get accentColor => _accentColor;
-
-  @override
-  set accentColor(MaterialColor value) {
-    _accentColor = value;
-    notifyListeners();
-  }
-
-  @override
-  bool get allowManualTimeInput => _allowManualTimeInput;
-
-  @override
-  set allowManualTimeInput(bool value) {
-    _allowManualTimeInput = value;
-    notifyListeners();
-  }
-
-  @override
-  int get animationSpeed => _animationSpeed;
-
-  @override
-  set animationSpeed(int value) {
-    _animationSpeed = value;
-    notifyListeners();
-  }
-
-  @override
-  bool get confirmDeletion => _confirmDeletion;
-
-  @override
-  set confirmDeletion(bool value) {
-    _confirmDeletion = value;
-    notifyListeners();
-  }
-
-  @override
-  bool get darkMode => _darkMode;
-
-  @override
-  set darkMode(bool value) {
-    _darkMode = value;
-    notifyListeners();
-  }
-
-  @override
-  String get dateFormatString => _dateFormatString;
-
-  @override
-  set dateFormatString(String value) {
-    _dateFormatString = value;
-    notifyListeners();
-  }
-
-  @override
-  MaterialColor get diaColor => _diaColor;
-
-  @override
-  set diaColor(MaterialColor value) {
-    _diaColor = value;
-    notifyListeners();
-  }
-
-  @override
-  bool get followSystemDarkMode => _followSystemDarkMode;
-
-  @override
-  set followSystemDarkMode(bool value) {
-    _followSystemDarkMode = value;
-    notifyListeners();
-  }
-
-  @override
-  double get graphLineThickness => _graphLineThickness;
-
-  @override
-  set graphLineThickness(double value) {
-    _graphLineThickness = value;
-    notifyListeners();
-  }
-
-  @override
-  TimeStep get graphStepSize => _graphStepSize;
-
-  @override
-  set graphStepSize(TimeStep value) {
-    _graphStepSize = value;
-    notifyListeners();
-  }
-
-  @override
-  MaterialColor get pulColor => _pulColor;
-
-  @override
-  set pulColor(MaterialColor value) {
-    _pulColor = value;
-    notifyListeners();
-  }
-
-  @override
-  MaterialColor get sysColor => _sysColor;
-
-  @override
-  set sysColor(MaterialColor value) {
-    _sysColor = value;
-    notifyListeners();
-  }
-
-  @override
-  bool get validateInputs => _validateInputs;
-
-  @override
-  set validateInputs(bool value) {
-    _validateInputs = value;
-    notifyListeners();
-  }
-
-  @override
-  ExportFormat get exportFormat => _exportFormat;
-
-  @override
-  set exportFormat(ExportFormat value) {
-    _exportFormat = value;
-    notifyListeners();
-  }
-
-
-  @override
-  String get csvFieldDelimiter => _csvFieldDelimiter;
-
-  @override
-  set csvFieldDelimiter(String value) {
-    _csvFieldDelimiter = value;
-    notifyListeners();
-  }
-
-  @override
-  String get csvTextDelimiter => _csvTextDelimiter;
-
-  @override
-  set csvTextDelimiter(String value) {
-    _csvTextDelimiter = value;
-    notifyListeners();
-  }
-
-  @override
-  bool get exportCsvHeadline => _exportCsvHeadline;
-
-  @override
-  set exportCsvHeadline(bool value) {
-    _exportCsvHeadline = value;
-    notifyListeners();
-  }
-
-  @override
-  bool get exportCustomEntriesCsv => _exportCustomEntries;
-
-  @override
-  set exportCustomEntriesCsv(bool value) {
-    _exportCustomEntries = value;
-    notifyListeners();
-  }
-
-  @override
-  List<String> get exportItemsCsv => _exportItems;
-
-  @override
-  set exportItemsCsv(List<String> value) {
-    _exportItems = value;
-    notifyListeners();
-  }
-
-  @override
-  MimeType get exportMimeType => _exportMimeType;
-
-  @override
-  set exportMimeType(MimeType value) {
-    _exportMimeType = value;
-    notifyListeners();
-  }
-
-  @override
-  String get defaultExportDir => _defaultExportDir;
-
-  @override
-  set defaultExportDir(String value) {
-    _defaultExportDir = value;
-    notifyListeners();
-  }
-
-  @override
-  bool get exportAfterEveryEntry => _exportAfterEveryEntry;
-
-  @override
-  set exportAfterEveryEntry(bool value) {
-    _exportAfterEveryEntry = value;
-    notifyListeners();
-  }
-
-  @override
-  bool get allowMissingValues => _allowMissingValues;
-
-  @override
-  set allowMissingValues(bool value) {
-    _allowMissingValues = value;
-    notifyListeners();
-  }
-
-  @override
-  Locale? get language => _language;
-
-  @override
-  set language(Locale? value) {
-    _language = value;
-    notifyListeners();
-  }
-
-  @override
-  bool get drawRegressionLines => _drawRegressionLines;
-
-  @override
-  set drawRegressionLines(bool value) {
-    _drawRegressionLines = value;
-    notifyListeners();
-  }
-
-  double _exportPdfHeaderHeight = 20;
-  @override
-  double get exportPdfHeaderHeight {
-    return _exportPdfHeaderHeight;
-  }
-  @override
-  set exportPdfHeaderHeight(double value) {
-    _exportPdfHeaderHeight = value;
-    notifyListeners();
-  }
-
-  double _exportPdfCellHeight = 15;
-  @override
-  double get exportPdfCellHeight {
-    return _exportPdfCellHeight;
-  }
-  @override
-  set exportPdfCellHeight(double value) {
-    _exportPdfCellHeight = value;
-    notifyListeners();
-  }
-
-  double _exportPdfHeaderFontSize = 10;
-
-  @override
-  double get exportPdfHeaderFontSize {
-    return _exportPdfHeaderFontSize;
-  }
-
-  @override
-  set exportPdfHeaderFontSize(double value) {
-    _exportPdfHeaderFontSize = value;
-    notifyListeners();
-  }
-
-  double _exportPdfCellFontSize = 8;
-
-  @override
-  double get exportPdfCellFontSize {
-    return _exportPdfCellFontSize;
-  }
-
-  @override
-  set exportPdfCellFontSize(double value) {
-    _exportPdfCellFontSize = value;
-    notifyListeners();
-  }
-
-  bool _exportPdfExportTitle = true;
-
-  @override
-  bool get exportPdfExportTitle {
-    return _exportPdfExportTitle;
-  }
-
-  @override
-  set exportPdfExportTitle(bool value) {
-    _exportPdfExportTitle = value;
-    notifyListeners();
-  }
-
-  bool _exportPdfExportStatistics = false;
-
-  @override
-  bool get exportPdfExportStatistics {
-    return _exportPdfExportStatistics;
-  }
-
-  @override
-  set exportPdfExportStatistics(bool value) {
-    _exportPdfExportStatistics = value;
-    notifyListeners();
-  }
-
-  bool _exportPdfExportData = true;
-
-  @override
-  bool get exportPdfExportData {
-    return _exportPdfExportData;
-  }
-
-  @override
-  set exportPdfExportData(bool value) {
-    _exportPdfExportData = value;
-    notifyListeners();
-  }
-
-  bool _startWithAddMeasurementPage = false;
-
-  @override
-  bool get startWithAddMeasurementPage {
-    return _startWithAddMeasurementPage;
-  }
-
-  @override
-  set startWithAddMeasurementPage(bool value) {
-    _startWithAddMeasurementPage = value;
-    notifyListeners();
-  }
-
-  bool _exportCustomEntriesPdf = false;
-
-  @override
-  bool get exportCustomEntriesPdf {
-    return _exportCustomEntriesPdf;
-  }
-
-  @override
-  set exportCustomEntriesPdf(bool value) {
-    _exportCustomEntriesPdf = value;
-    notifyListeners();
-  }
-
-  List<String> _exportItemsPdf = ExportFields.defaultPdf;
-
-  @override
-  List<String> get exportItemsPdf {
-    return _exportItemsPdf;
-  }
-
-  @override
-  set exportItemsPdf(List<String> value) {
-    _exportItemsPdf = value;
-    notifyListeners();
-  }
-
-  Iterable<HorizontalGraphLine> _horizontalGraphLines = [];
-
-  @override
-  Iterable<HorizontalGraphLine> get horizontalGraphLines {
-    return _horizontalGraphLines;
-  }
-
-  @override
-  set horizontalGraphLines(Iterable<HorizontalGraphLine> value) {
-    _horizontalGraphLines = value;
-    notifyListeners();
-  }
-
-  bool _useLegacyList = false;
-
-  @override
-  bool get useLegacyList {
-    return _useLegacyList;
-  }
-
-  @override
-  set useLegacyList(bool value) {
-    _useLegacyList = value;
-    notifyListeners();
-  }
-
-  @override
-  void changeStepSize(TimeStep value) {
-    graphStepSize = value;
-    final newInterval = getMostRecentDisplayIntervall();
-    displayDataStart = newInterval[0];
-    displayDataEnd = newInterval[1];
-  }
-  
-  @override
-  void setToMostRecentIntervall() {
-    changeStepSize(graphStepSize);
-  }
-
-  @override
-  void moveDisplayDataByStep(int directionalStep) {
-    final oldStart = displayDataStart;
-    final oldEnd = displayDataEnd;
-    switch (graphStepSize) {
-      case TimeStep.day:
-        displayDataStart = oldStart.copyWith(day: oldStart.day + directionalStep);
-        displayDataEnd = oldEnd.copyWith(day: oldEnd.day + directionalStep);
-        break;
-      case TimeStep.week:
-      case TimeStep.last7Days:
-        displayDataStart = oldStart.copyWith(day: oldStart.day + directionalStep * 7);
-        displayDataEnd = oldEnd.copyWith(day: oldEnd.day + directionalStep * 7);
-        break;
-      case TimeStep.month:
-        displayDataStart = oldStart.copyWith(month: oldStart.month + directionalStep);
-        displayDataEnd = oldEnd.copyWith(month: oldEnd.month + directionalStep);
-        break;
-      case TimeStep.year:
-        displayDataStart = oldStart.copyWith(year: oldStart.year + directionalStep);
-        displayDataEnd = oldEnd.copyWith(year: oldEnd.year + directionalStep);
-        break;
-      case TimeStep.lifetime:
-        displayDataStart = DateTime.fromMillisecondsSinceEpoch(1);
-        displayDataEnd = DateTime.now().copyWith(hour: 23, minute: 59, second: 59);
-        break;
-      case TimeStep.last30Days:
-        displayDataStart = oldStart.copyWith(day: oldStart.day + directionalStep * 30);
-        displayDataEnd = oldEnd.copyWith(day: oldEnd.day + directionalStep * 30);
-        break;
-      case TimeStep.custom:
-        final step = oldStart.difference(oldEnd) * directionalStep;
-        displayDataStart = oldStart.add(step);
-        displayDataEnd = oldEnd.add(step);
-        break;
-    }
-  }
-
-  @override
-  List<DateTime> getMostRecentDisplayIntervall() {
-    final now = DateTime.now();
-    switch (graphStepSize) {
-      case TimeStep.day:
-        final start = DateTime(now.year, now.month, now.day);
-        return [start, start.copyWith(day: now.day + 1)];
-      case TimeStep.week:
-        final start = DateTime(now.year, now.month, now.day - (now.weekday - 1)); // monday
-        return [start, start.copyWith(day: start.day + DateTime.sunday)]; // end of sunday
-      case TimeStep.month:
-        final start = DateTime(now.year, now.month);
-        return [start, start.copyWith(month: now.month + 1)];
-      case TimeStep.year:
-        final start = DateTime(now.year);
-        return [start, start.copyWith(year: now.year + 1)];
-      case TimeStep.lifetime:
-        final start = DateTime.fromMillisecondsSinceEpoch(1);
-        final endOfToday = now.copyWith(hour: 23, minute: 59, second: 59);
-        return [start, endOfToday];
-      case TimeStep.last7Days:
-        final start = now.copyWith(day: now.day - 7);
-        final endOfToday = now.copyWith(hour: 23, minute: 59, second: 59);
-        return [start, endOfToday];
-      case TimeStep.last30Days:
-        final start = now.copyWith(day: now.day - 30);
-        final endOfToday = now.copyWith(hour: 23, minute: 59, second: 59);
-        return [start, endOfToday];
-      case TimeStep.custom:
-        // fallback, TimeStep will be reset by getter
-        return [DateTime.fromMillisecondsSinceEpoch(-1), DateTime.fromMillisecondsSinceEpoch(-1)];
-    }
-  }
-}
+}
\ No newline at end of file
test/model/settings_test.dart
@@ -1,301 +0,0 @@
-import 'dart:ui';
-
-import 'package:blood_pressure_app/model/ram_only_implementations.dart';
-import 'package:blood_pressure_app/model/settings_store.dart';
-import 'package:file_saver/file_saver.dart';
-import 'package:flutter_test/flutter_test.dart';
-import 'package:package_info_plus/package_info_plus.dart';
-import 'package:shared_preferences/shared_preferences.dart';
-import 'package:sqflite_common_ffi/sqflite_ffi.dart';
-
-void main() {
-  TestWidgetsFlutterBinding.ensureInitialized();
-  SharedPreferences.setMockInitialValues({});
-  final testPackageInfo = PackageInfo(appName: 'blood_pressure_app', packageName: 'com.derdilla.bloodPressureApp', version: 'UnitTests', buildNumber: '999999');
-
-  group('Settings model', () {
-    // setup db path
-    databaseFactory = databaseFactoryFfi;
-
-    test('should initialize', () async {
-      expect(() async {
-        await Settings.create(testPackageInfo);
-      }, returnsNormally);
-    });
-
-    test('fields defaults should be set after initialization', () async {
-      var s = await Settings.create(testPackageInfo);
-      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.sysWarn, 120);
-      expect(s.diaWarn, 80);
-      expect(s.validateInputs, true);
-      expect(s.graphLineThickness, 3);
-      expect(s.animationSpeed, 150);
-      expect(s.confirmDeletion, true);
-      expect(s.csvFieldDelimiter, ',');
-      expect(s.csvTextDelimiter, '"');
-      expect(s.exportCsvHeadline, true);
-      expect(s.exportMimeType, MimeType.csv);
-      expect(s.defaultExportDir.isEmpty, true);
-      expect(s.exportAfterEveryEntry, false);
-      expect(s.allowMissingValues, false);
-      expect(s.language, null);
-    });
-
-    test('setting fields should save changes', () async {
-      var s = await Settings.create(testPackageInfo);
-
-      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.sysWarn = 314;
-      s.diaWarn = 159;
-      s.validateInputs = false;
-      s.graphLineThickness = 5;
-      s.animationSpeed = 100;
-      s.confirmDeletion = false;
-      s.csvFieldDelimiter = '|';
-      s.csvTextDelimiter = '\'';
-      s.exportItemsCsv = ['systolic', 'diastolic', 'pulse', 'notes', 'isoUTCTime'];
-      s.exportCsvHeadline = false;
-      s.exportMimeType = MimeType.pdf;
-      s.defaultExportDir = '/storage/emulated/0/Android/data/com.derdilla.bloodPressureApp/files/file.csv';
-      s.exportAfterEveryEntry = true;
-      s.allowMissingValues = true;
-      s.language = const Locale('de');
-
-      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.sysWarn, 314);
-      expect(s.diaWarn, 159);
-      expect(s.validateInputs, false);
-      expect(s.graphLineThickness, 5);
-      expect(s.animationSpeed, 100);
-      expect(s.confirmDeletion, false);
-      expect(s.csvFieldDelimiter, '|');
-      expect(s.csvTextDelimiter, '\'');
-      expect(s.exportItemsCsv, ['systolic', 'diastolic', 'pulse', 'notes', 'isoUTCTime']);
-      expect(s.exportCsvHeadline, false);
-      expect(s.exportMimeType, MimeType.pdf);
-      expect(s.defaultExportDir, '/storage/emulated/0/Android/data/com.derdilla.bloodPressureApp/files/file.csv');
-      expect(s.exportAfterEveryEntry, true);
-      expect(s.allowMissingValues, true);
-      expect(s.language, const Locale('de'));
-    });
-
-    test('setting fields should notify listeners and change values', () async {
-      var s = await Settings.create(testPackageInfo);
-
-      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.sysWarn = 314;
-      s.diaWarn = 159;
-      s.validateInputs = false;
-      s.graphLineThickness = 5;
-      s.animationSpeed = 100;
-      s.confirmDeletion = true;
-      s.csvFieldDelimiter = '|';
-      s.csvTextDelimiter = '\'';
-      s.exportItemsCsv = ['systolic', 'diastolic', 'pulse', 'notes', 'isoUTCTime'];
-      s.exportCsvHeadline = false;
-      s.exportMimeType = MimeType.pdf;
-      s.defaultExportDir = '/storage/emulated/0/Android/data/com.derdilla.bloodPressureApp/files/file.csv';
-      s.exportAfterEveryEntry = true;
-      s.allowMissingValues = true;
-      s.language = const Locale('de');
-
-      expect(i, 26);
-    });
-  });
-
-  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.sysWarn, 120);
-      expect(s.diaWarn, 80);
-      expect(s.validateInputs, true);
-      expect(s.graphLineThickness, 3);
-      expect(s.animationSpeed, 150);
-      expect(s.confirmDeletion, true);
-      expect(s.csvFieldDelimiter, ',');
-      expect(s.csvTextDelimiter, '"');
-      expect(s.exportCsvHeadline, true);
-      expect(s.exportMimeType, MimeType.csv);
-      expect(s.defaultExportDir.isEmpty, true);
-      expect(s.exportAfterEveryEntry, false);
-      expect(s.allowMissingValues, false);
-      expect(s.language, null);
-    });
-
-    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.sysWarn = 314;
-      s.diaWarn = 159;
-      s.validateInputs = false;
-      s.graphLineThickness = 5;
-      s.animationSpeed = 100;
-      s.confirmDeletion = false;
-      s.csvFieldDelimiter = '|';
-      s.csvTextDelimiter = '\'';
-      s.exportItemsCsv = ['systolic', 'diastolic', 'pulse', 'notes', 'isoUTCTime'];
-      s.exportCsvHeadline = false;
-      s.exportMimeType = MimeType.pdf;
-      s.defaultExportDir = '/storage/emulated/0/Android/data/com.derdilla.bloodPressureApp/files/file.csv';
-      s.exportAfterEveryEntry = true;
-      s.allowMissingValues = true;
-      s.language = const Locale('de');
-
-      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.sysWarn, 314);
-      expect(s.diaWarn, 159);
-      expect(s.validateInputs, false);
-      expect(s.graphLineThickness, 5);
-      expect(s.animationSpeed, 100);
-      expect(s.confirmDeletion, false);
-      expect(s.csvFieldDelimiter, '|');
-      expect(s.csvTextDelimiter, '\'');
-      expect(s.exportItemsCsv, ['systolic', 'diastolic', 'pulse', 'notes', 'isoUTCTime']);
-      expect(s.exportCsvHeadline, false);
-      expect(s.exportMimeType, MimeType.pdf);
-      expect(s.defaultExportDir, '/storage/emulated/0/Android/data/com.derdilla.bloodPressureApp/files/file.csv');
-      expect(s.exportAfterEveryEntry, true);
-      expect(s.allowMissingValues, true);
-      expect(s.language, const Locale('de'));
-    });
-
-    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.sysWarn = 314;
-      s.diaWarn = 159;
-      s.validateInputs = false;
-      s.graphLineThickness = 5;
-      s.animationSpeed = 100;
-      s.confirmDeletion = true;
-      s.csvFieldDelimiter = '|';
-      s.csvTextDelimiter = '\'';
-      s.exportItemsCsv = ['systolic', 'diastolic', 'pulse', 'notes', 'isoUTCTime'];
-      s.exportCsvHeadline = false;
-      s.exportMimeType = MimeType.pdf;
-      s.defaultExportDir = '/storage/emulated/0/Android/data/com.derdilla.bloodPressureApp/files/file.csv';
-      s.exportAfterEveryEntry = true;
-      s.allowMissingValues = true;
-      s.language = const Locale('de');
-
-      expect(i, 26);
-    });
-  });
-}