Commit f336be3
Changed files (11)
test/model/export_import/csv_converter_test.dart
@@ -11,299 +11,297 @@ import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
- group('CsvConverter', () {
- test('should create csv string bigger than 0', () {
- final converter = CsvConverter(CsvExportSettings(), ExportColumnsManager());
- final csv = converter.create(createRecords());
- expect(csv.length, isNonZero);
- });
+ test('should create csv string bigger than 0', () {
+ final converter = CsvConverter(CsvExportSettings(), ExportColumnsManager());
+ final csv = converter.create(createRecords());
+ expect(csv.length, isNonZero);
+ });
- test('should create first line', () {
- final converter = CsvConverter(CsvExportSettings(), ExportColumnsManager());
- final csv = converter.create([]);
- final columns = CsvExportSettings().exportFieldsConfiguration.getActiveColumns(ExportColumnsManager());
- expect(csv, stringContainsInOrder(columns.map((e) => e.csvTitle).toList()));
- });
+ test('should create first line', () {
+ final converter = CsvConverter(CsvExportSettings(), ExportColumnsManager());
+ final csv = converter.create([]);
+ final columns = CsvExportSettings().exportFieldsConfiguration.getActiveColumns(ExportColumnsManager());
+ expect(csv, stringContainsInOrder(columns.map((e) => e.csvTitle).toList()));
+ });
- test('should not create first line when setting is off', () {
- final converter = CsvConverter(
- CsvExportSettings(exportHeadline: false),
- ExportColumnsManager(),
- );
- final csv = converter.create([]);
- final columns = CsvExportSettings().exportFieldsConfiguration.getActiveColumns(ExportColumnsManager());
- expect(csv, isNot(stringContainsInOrder(columns.map((e) => e.csvTitle).toList())));
- });
+ test('should not create first line when setting is off', () {
+ final converter = CsvConverter(
+ CsvExportSettings(exportHeadline: false),
+ ExportColumnsManager(),
+ );
+ final csv = converter.create([]);
+ final columns = CsvExportSettings().exportFieldsConfiguration.getActiveColumns(ExportColumnsManager());
+ expect(csv, isNot(stringContainsInOrder(columns.map((e) => e.csvTitle).toList())));
+ });
- test('should be able to recreate records from csv in default configuration', () {
- final converter = CsvConverter(CsvExportSettings(), ExportColumnsManager());
- final initialRecords = createRecords();
- final csv = converter.create(initialRecords);
- final parsedRecords = converter.parse(csv).getOr(failParse);
-
- expect(parsedRecords, pairwiseCompare(initialRecords,
- (p0, BloodPressureRecord p1) =>
- p0.creationTime == p1.creationTime &&
- p0.systolic == p1.systolic &&
- p0.diastolic == p1.diastolic &&
- p0.pulse == p1.pulse &&
- p0.notes == p1.notes &&
- p0.needlePin?.color == p1.needlePin?.color,
- 'equal to',),);
- });
- test('should allow partial imports', () {
- final text = File('test/model/export_import/exported_formats/incomplete_export.csv').readAsStringSync();
+ test('should be able to recreate records from csv in default configuration', () {
+ final converter = CsvConverter(CsvExportSettings(), ExportColumnsManager());
+ final initialRecords = createRecords();
+ final csv = converter.create(initialRecords);
+ final parsedRecords = converter.parse(csv).getOr(failParse);
- final converter = CsvConverter(
- CsvExportSettings(),
- ExportColumnsManager(),
- );
- final parsed = converter.parse(text);
- final records = parsed.getOr(failParse);
- expect(records, isNotNull);
- expect(records.length, 3);
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703239921194)
- .having((p0) => p0.systolic, 'systolic', null)
- .having((p0) => p0.diastolic, 'diastolic', null)
- .having((p0) => p0.pulse, 'pulse', null)
- .having((p0) => p0.notes, 'notes', 'note')
- .having((p0) => p0.needlePin, 'pin', null),
- ),);
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703239908244)
- .having((p0) => p0.systolic, 'systolic', null)
- .having((p0) => p0.diastolic, 'diastolic', 45)
- .having((p0) => p0.pulse, 'pulse', null)
- .having((p0) => p0.notes, 'notes', 'test')
- .having((p0) => p0.needlePin, 'pin', null),
- ),);
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703239905395)
- .having((p0) => p0.systolic, 'systolic', 123)
- .having((p0) => p0.diastolic, 'diastolic', null)
- .having((p0) => p0.pulse, 'pulse', null)
- .having((p0) => p0.notes, 'notes', '')
- .having((p0) => p0.needlePin, 'pin', null),
- ),);
- });
+ expect(parsedRecords, pairwiseCompare(initialRecords,
+ (p0, BloodPressureRecord p1) =>
+ p0.creationTime == p1.creationTime &&
+ p0.systolic == p1.systolic &&
+ p0.diastolic == p1.diastolic &&
+ p0.pulse == p1.pulse &&
+ p0.notes == p1.notes &&
+ p0.needlePin?.color == p1.needlePin?.color,
+ 'equal to',),);
+ });
+ test('should allow partial imports', () {
+ final text = File('test/model/export_import/exported_formats/incomplete_export.csv').readAsStringSync();
+ final converter = CsvConverter(
+ CsvExportSettings(),
+ ExportColumnsManager(),
+ );
+ final parsed = converter.parse(text);
+ final records = parsed.getOr(failParse);
+ expect(records, isNotNull);
+ expect(records.length, 3);
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703239921194)
+ .having((p0) => p0.systolic, 'systolic', null)
+ .having((p0) => p0.diastolic, 'diastolic', null)
+ .having((p0) => p0.pulse, 'pulse', null)
+ .having((p0) => p0.notes, 'notes', 'note')
+ .having((p0) => p0.needlePin, 'pin', null),
+ ),);
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703239908244)
+ .having((p0) => p0.systolic, 'systolic', null)
+ .having((p0) => p0.diastolic, 'diastolic', 45)
+ .having((p0) => p0.pulse, 'pulse', null)
+ .having((p0) => p0.notes, 'notes', 'test')
+ .having((p0) => p0.needlePin, 'pin', null),
+ ),);
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703239905395)
+ .having((p0) => p0.systolic, 'systolic', 123)
+ .having((p0) => p0.diastolic, 'diastolic', null)
+ .having((p0) => p0.pulse, 'pulse', null)
+ .having((p0) => p0.notes, 'notes', '')
+ .having((p0) => p0.needlePin, 'pin', null),
+ ),);
+ });
- test('should import v1.0.0 measurements', () {
- final text = File('test/model/export_import/exported_formats/v1.0.csv').readAsStringSync();
- final converter = CsvConverter(
- CsvExportSettings(),
- ExportColumnsManager(),
- );
- final parsed = converter.parse(text);
- final records = parsed.getOr(failParse);
- expect(records, isNotNull);
- expect(records.length, 2);
- expect(records, everyElement(isA<BloodPressureRecord>()));
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175660000)
- .having((p0) => p0.systolic, 'systolic', 312)
- .having((p0) => p0.diastolic, 'diastolic', 315)
- .having((p0) => p0.pulse, 'pulse', 46)
- .having((p0) => p0.notes.trim(), 'notes', 'testfkajkfb'),
- ),);
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175600000)
- .having((p0) => p0.systolic, 'systolic', 123)
- .having((p0) => p0.diastolic, 'diastolic', 41)
- .having((p0) => p0.pulse, 'pulse', 43)
- .having((p0) => p0.notes.trim(), 'notes', '1214s3'),
- ),);
- });
- test('should import v1.1.0 measurements', () {
- final text = File('test/model/export_import/exported_formats/v1.1.0').readAsStringSync();
+ test('should import v1.0.0 measurements', () {
+ final text = File('test/model/export_import/exported_formats/v1.0.csv').readAsStringSync();
- final converter = CsvConverter(
- CsvExportSettings(),
- ExportColumnsManager(),
- );
- final parsed = converter.parse(text);
- final records = parsed.getOr(failParse);
- expect(records, isNotNull);
- expect(records.length, 4);
- expect(records, everyElement(isA<BloodPressureRecord>()));
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175660000)
- .having((p0) => p0.systolic, 'systolic', 312)
- .having((p0) => p0.diastolic, 'diastolic', 315)
- .having((p0) => p0.pulse, 'pulse', 46)
- .having((p0) => p0.notes.trim(), 'notes', 'testfkajkfb'),
- ),);
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175600000)
- .having((p0) => p0.systolic, 'systolic', 123)
- .having((p0) => p0.diastolic, 'diastolic', 41)
- .having((p0) => p0.pulse, 'pulse', 43)
- .having((p0) => p0.notes.trim(), 'notes', '1214s3'),
- ),);
- });
- test('should import v1.4.0 measurements', () {
- final text = File('test/model/export_import/exported_formats/v1.4.0.CSV').readAsStringSync();
+ final converter = CsvConverter(
+ CsvExportSettings(),
+ ExportColumnsManager(),
+ );
+ final parsed = converter.parse(text);
+ final records = parsed.getOr(failParse);
+ expect(records, isNotNull);
+ expect(records.length, 2);
+ expect(records, everyElement(isA<BloodPressureRecord>()));
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175660000)
+ .having((p0) => p0.systolic, 'systolic', 312)
+ .having((p0) => p0.diastolic, 'diastolic', 315)
+ .having((p0) => p0.pulse, 'pulse', 46)
+ .having((p0) => p0.notes.trim(), 'notes', 'testfkajkfb'),
+ ),);
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175600000)
+ .having((p0) => p0.systolic, 'systolic', 123)
+ .having((p0) => p0.diastolic, 'diastolic', 41)
+ .having((p0) => p0.pulse, 'pulse', 43)
+ .having((p0) => p0.notes.trim(), 'notes', '1214s3'),
+ ),);
+ });
+ test('should import v1.1.0 measurements', () {
+ final text = File('test/model/export_import/exported_formats/v1.1.0').readAsStringSync();
- final converter = CsvConverter(
- CsvExportSettings(),
- ExportColumnsManager(),
- );
- final parsed = converter.parse(text);
- final records = parsed.getOr(failParse);
- expect(records, isNotNull);
- expect(records.length, 186);
- expect(records, everyElement(isA<BloodPressureRecord>()));
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175660000)
- .having((p0) => p0.systolic, 'systolic', 312)
- .having((p0) => p0.diastolic, 'diastolic', 315)
- .having((p0) => p0.pulse, 'pulse', 46)
- .having((p0) => p0.notes, 'notes', 'testfkajkfb'),
- ),);
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175600000)
- .having((p0) => p0.systolic, 'systolic', 123)
- .having((p0) => p0.diastolic, 'diastolic', 41)
- .having((p0) => p0.pulse, 'pulse', 43)
- .having((p0) => p0.notes, 'notes', '1214s3'),
- ),);
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 10893142303200)
- .having((p0) => p0.systolic, 'systolic', 106)
- .having((p0) => p0.diastolic, 'diastolic', 77)
- .having((p0) => p0.pulse, 'pulse', 53)
- .having((p0) => p0.notes, 'notes', ''),
- ),);
- });
- test('should import v1.5.1 measurements', () {
- final text = File('test/model/export_import/exported_formats/v1.5.1.csv').readAsStringSync();
+ final converter = CsvConverter(
+ CsvExportSettings(),
+ ExportColumnsManager(),
+ );
+ final parsed = converter.parse(text);
+ final records = parsed.getOr(failParse);
+ expect(records, isNotNull);
+ expect(records.length, 4);
+ expect(records, everyElement(isA<BloodPressureRecord>()));
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175660000)
+ .having((p0) => p0.systolic, 'systolic', 312)
+ .having((p0) => p0.diastolic, 'diastolic', 315)
+ .having((p0) => p0.pulse, 'pulse', 46)
+ .having((p0) => p0.notes.trim(), 'notes', 'testfkajkfb'),
+ ),);
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175600000)
+ .having((p0) => p0.systolic, 'systolic', 123)
+ .having((p0) => p0.diastolic, 'diastolic', 41)
+ .having((p0) => p0.pulse, 'pulse', 43)
+ .having((p0) => p0.notes.trim(), 'notes', '1214s3'),
+ ),);
+ });
+ test('should import v1.4.0 measurements', () {
+ final text = File('test/model/export_import/exported_formats/v1.4.0.CSV').readAsStringSync();
- final converter = CsvConverter(
- CsvExportSettings(),
- ExportColumnsManager(),
- );
- final parsed = converter.parse(text);
- final records = parsed.getOr(failParse);
- expect(records, isNotNull);
- expect(records.length, 185);
- expect(records, everyElement(isA<BloodPressureRecord>()));
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175660000)
- .having((p0) => p0.systolic, 'systolic', 312)
- .having((p0) => p0.diastolic, 'diastolic', 315)
- .having((p0) => p0.pulse, 'pulse', 46)
- .having((p0) => p0.notes, 'notes', 'testfkajkfb')
- .having((p0) => p0.needlePin, 'pin', null),
- ),);
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175600000)
- .having((p0) => p0.systolic, 'systolic', 123)
- .having((p0) => p0.diastolic, 'diastolic', 41)
- .having((p0) => p0.pulse, 'pulse', 43)
- .having((p0) => p0.notes, 'notes', '1214s3')
- .having((p0) => p0.needlePin, 'pin', null),
- ),);
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1077625200000)
- .having((p0) => p0.systolic, 'systolic', 100)
- .having((p0) => p0.diastolic, 'diastolic', 82)
- .having((p0) => p0.pulse, 'pulse', 63)
- .having((p0) => p0.notes, 'notes', '')
- .having((p0) => p0.needlePin, 'pin', null),
- ),);
- });
- test('should import v1.5.7 measurements', () {
- final text = File('test/model/export_import/exported_formats/v1.5.7.csv').readAsStringSync();
+ final converter = CsvConverter(
+ CsvExportSettings(),
+ ExportColumnsManager(),
+ );
+ final parsed = converter.parse(text);
+ final records = parsed.getOr(failParse);
+ expect(records, isNotNull);
+ expect(records.length, 186);
+ expect(records, everyElement(isA<BloodPressureRecord>()));
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175660000)
+ .having((p0) => p0.systolic, 'systolic', 312)
+ .having((p0) => p0.diastolic, 'diastolic', 315)
+ .having((p0) => p0.pulse, 'pulse', 46)
+ .having((p0) => p0.notes, 'notes', 'testfkajkfb'),
+ ),);
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175600000)
+ .having((p0) => p0.systolic, 'systolic', 123)
+ .having((p0) => p0.diastolic, 'diastolic', 41)
+ .having((p0) => p0.pulse, 'pulse', 43)
+ .having((p0) => p0.notes, 'notes', '1214s3'),
+ ),);
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 10893142303200)
+ .having((p0) => p0.systolic, 'systolic', 106)
+ .having((p0) => p0.diastolic, 'diastolic', 77)
+ .having((p0) => p0.pulse, 'pulse', 53)
+ .having((p0) => p0.notes, 'notes', ''),
+ ),);
+ });
+ test('should import v1.5.1 measurements', () {
+ final text = File('test/model/export_import/exported_formats/v1.5.1.csv').readAsStringSync();
- final converter = CsvConverter(
- CsvExportSettings(),
- ExportColumnsManager(),
- );
- final parsed = converter.parse(text);
- final records = parsed.getOr(failParse);
- expect(records, isNotNull);
- expect(records.length, 185);
- expect(records, everyElement(isA<BloodPressureRecord>()));
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175660000)
- .having((p0) => p0.systolic, 'systolic', 312)
- .having((p0) => p0.diastolic, 'diastolic', 315)
- .having((p0) => p0.pulse, 'pulse', 46)
- .having((p0) => p0.notes, 'notes', 'testfkajkfb')
- .having((p0) => p0.needlePin, 'pin', null),
- ),);
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175600000)
- .having((p0) => p0.systolic, 'systolic', 123)
- .having((p0) => p0.diastolic, 'diastolic', 41)
- .having((p0) => p0.pulse, 'pulse', 43)
- .having((p0) => p0.notes, 'notes', '1214s3')
- .having((p0) => p0.needlePin, 'pin', null),
- ),);
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1077625200000)
- .having((p0) => p0.systolic, 'systolic', 100)
- .having((p0) => p0.diastolic, 'diastolic', 82)
- .having((p0) => p0.pulse, 'pulse', 63)
- .having((p0) => p0.notes, 'notes', '')
- .having((p0) => p0.needlePin, 'pin', null),
- ),);
- // TODO: test color
- });
- test('should import v1.5.8 measurements', () {
- final text = File('test/model/export_import/exported_formats/v1.5.8.csv').readAsStringSync();
+ final converter = CsvConverter(
+ CsvExportSettings(),
+ ExportColumnsManager(),
+ );
+ final parsed = converter.parse(text);
+ final records = parsed.getOr(failParse);
+ expect(records, isNotNull);
+ expect(records.length, 185);
+ expect(records, everyElement(isA<BloodPressureRecord>()));
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175660000)
+ .having((p0) => p0.systolic, 'systolic', 312)
+ .having((p0) => p0.diastolic, 'diastolic', 315)
+ .having((p0) => p0.pulse, 'pulse', 46)
+ .having((p0) => p0.notes, 'notes', 'testfkajkfb')
+ .having((p0) => p0.needlePin, 'pin', null),
+ ),);
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175600000)
+ .having((p0) => p0.systolic, 'systolic', 123)
+ .having((p0) => p0.diastolic, 'diastolic', 41)
+ .having((p0) => p0.pulse, 'pulse', 43)
+ .having((p0) => p0.notes, 'notes', '1214s3')
+ .having((p0) => p0.needlePin, 'pin', null),
+ ),);
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1077625200000)
+ .having((p0) => p0.systolic, 'systolic', 100)
+ .having((p0) => p0.diastolic, 'diastolic', 82)
+ .having((p0) => p0.pulse, 'pulse', 63)
+ .having((p0) => p0.notes, 'notes', '')
+ .having((p0) => p0.needlePin, 'pin', null),
+ ),);
+ });
+ test('should import v1.5.7 measurements', () {
+ final text = File('test/model/export_import/exported_formats/v1.5.7.csv').readAsStringSync();
+
+ final converter = CsvConverter(
+ CsvExportSettings(),
+ ExportColumnsManager(),
+ );
+ final parsed = converter.parse(text);
+ final records = parsed.getOr(failParse);
+ expect(records, isNotNull);
+ expect(records.length, 185);
+ expect(records, everyElement(isA<BloodPressureRecord>()));
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175660000)
+ .having((p0) => p0.systolic, 'systolic', 312)
+ .having((p0) => p0.diastolic, 'diastolic', 315)
+ .having((p0) => p0.pulse, 'pulse', 46)
+ .having((p0) => p0.notes, 'notes', 'testfkajkfb')
+ .having((p0) => p0.needlePin, 'pin', null),
+ ),);
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175600000)
+ .having((p0) => p0.systolic, 'systolic', 123)
+ .having((p0) => p0.diastolic, 'diastolic', 41)
+ .having((p0) => p0.pulse, 'pulse', 43)
+ .having((p0) => p0.notes, 'notes', '1214s3')
+ .having((p0) => p0.needlePin, 'pin', null),
+ ),);
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1077625200000)
+ .having((p0) => p0.systolic, 'systolic', 100)
+ .having((p0) => p0.diastolic, 'diastolic', 82)
+ .having((p0) => p0.pulse, 'pulse', 63)
+ .having((p0) => p0.notes, 'notes', '')
+ .having((p0) => p0.needlePin, 'pin', null),
+ ),);
+ // TODO: test color
+ });
+ test('should import v1.5.8 measurements', () {
+ final text = File('test/model/export_import/exported_formats/v1.5.8.csv').readAsStringSync();
- final converter = CsvConverter(
- CsvExportSettings(),
- ExportColumnsManager(),
- );
- final parsed = converter.parse(text);
- final records = parsed.getOr(failParse);
- expect(records, isNotNull);
- expect(records.length, 9478);
- expect(records, everyElement(isA<BloodPressureRecord>()));
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175193324)
- .having((p0) => p0.systolic, 'systolic', 123)
- .having((p0) => p0.diastolic, 'diastolic', 43)
- .having((p0) => p0.pulse, 'pulse', 53)
- .having((p0) => p0.notes, 'notes', 'sdfsdfds')
- .having((p0) => p0.needlePin?.color, 'pin', const Color(0xff69f0ae)),
- ),);
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1702883511000)
- .having((p0) => p0.systolic, 'systolic', 114)
- .having((p0) => p0.diastolic, 'diastolic', 71)
- .having((p0) => p0.pulse, 'pulse', 66)
- .having((p0) => p0.notes, 'notes', 'fsaf &_*ยข|^โ[=%ยฎยฉ')
- .having((p0) => p0.needlePin?.color.value, 'pin', Colors.lightGreen.value),
- ),);
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1701034952000)
- .having((p0) => p0.systolic, 'systolic', 125)
- .having((p0) => p0.diastolic, 'diastolic', 77)
- .having((p0) => p0.pulse, 'pulse', 60)
- .having((p0) => p0.notes, 'notes', '')
- .having((p0) => p0.needlePin, 'pin', null),
- ),);
- expect(records, anyElement(isA<BloodPressureRecord>()
- .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1077625200000)
- .having((p0) => p0.systolic, 'systolic', 100)
- .having((p0) => p0.diastolic, 'diastolic', 82)
- .having((p0) => p0.pulse, 'pulse', 63)
- .having((p0) => p0.notes, 'notes', '')
- .having((p0) => p0.needlePin, 'pin', null),
- ),);
- // TODO: test time columns
- });
+ final converter = CsvConverter(
+ CsvExportSettings(),
+ ExportColumnsManager(),
+ );
+ final parsed = converter.parse(text);
+ final records = parsed.getOr(failParse);
+ expect(records, isNotNull);
+ expect(records.length, 9478);
+ expect(records, everyElement(isA<BloodPressureRecord>()));
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1703175193324)
+ .having((p0) => p0.systolic, 'systolic', 123)
+ .having((p0) => p0.diastolic, 'diastolic', 43)
+ .having((p0) => p0.pulse, 'pulse', 53)
+ .having((p0) => p0.notes, 'notes', 'sdfsdfds')
+ .having((p0) => p0.needlePin?.color, 'pin', const Color(0xff69f0ae)),
+ ),);
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1702883511000)
+ .having((p0) => p0.systolic, 'systolic', 114)
+ .having((p0) => p0.diastolic, 'diastolic', 71)
+ .having((p0) => p0.pulse, 'pulse', 66)
+ .having((p0) => p0.notes, 'notes', 'fsaf &_*ยข|^โ[=%ยฎยฉ')
+ .having((p0) => p0.needlePin?.color.value, 'pin', Colors.lightGreen.value),
+ ),);
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1701034952000)
+ .having((p0) => p0.systolic, 'systolic', 125)
+ .having((p0) => p0.diastolic, 'diastolic', 77)
+ .having((p0) => p0.pulse, 'pulse', 60)
+ .having((p0) => p0.notes, 'notes', '')
+ .having((p0) => p0.needlePin, 'pin', null),
+ ),);
+ expect(records, anyElement(isA<BloodPressureRecord>()
+ .having((p0) => p0.creationTime.millisecondsSinceEpoch, 'timestamp', 1077625200000)
+ .having((p0) => p0.systolic, 'systolic', 100)
+ .having((p0) => p0.diastolic, 'diastolic', 82)
+ .having((p0) => p0.pulse, 'pulse', 63)
+ .having((p0) => p0.notes, 'notes', '')
+ .having((p0) => p0.needlePin, 'pin', null),
+ ),);
+ // TODO: test time columns
});
}
List<BloodPressureRecord> createRecords([int count = 20]) => [
for (int i = 0; i<count; i++)
- BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(123456 + i),
+ BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(123456 + i),
i, 100+i, 200+1, 'note $i', needlePin: MeasurementNeedlePin(Color(123+i)),),
];
test/model/export_import/export_columns_store_test.dart
@@ -4,107 +4,105 @@ import 'package:blood_pressure_app/model/storage/export_columns_store.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
- group('ExportColumnsManager', () {
- test('should get user column by id', () {
- final manager = ExportColumnsManager();
- final column = UserColumn('customColumn', '', '');
- manager.addOrUpdate(column);
- final returnedColumn = manager.getColumn(column.internalIdentifier);
- expect(returnedColumn, column);
- });
- test('should get NativeColumn by id', () {
- final manager = ExportColumnsManager();
- final column = NativeColumn.allColumns.first;
- final returnedColumn = manager.getColumn(column.internalIdentifier);
- expect(returnedColumn, column);
- });
- test('should get BuildInColumn by id', () {
- final manager = ExportColumnsManager();
- final column = BuildInColumn.allColumns.first;
- final returnedColumn = manager.getColumn(column.internalIdentifier);
- expect(returnedColumn, column);
- });
- test('should allow adding columns', () async {
- final manager = ExportColumnsManager();
- final c1 = UserColumn('test', 'test', '\$SYS');
- final c2 = UserColumn('test2', 'test2', '234');
- manager.addOrUpdate(c1);
- manager.addOrUpdate(c2);
- manager.addOrUpdate(UserColumn('test', 'testx', ''));
-
- expect(manager.userColumns.length, 2);
- expect(manager.userColumns[c1.internalIdentifier]?.csvTitle, 'testx');
- expect(manager.userColumns[c2.internalIdentifier]?.csvTitle, 'test2');
- });
-
- test('should restore TimeColumns from configurations', () {
- final initialManager = ExportColumnsManager();
- initialManager.addOrUpdate(TimeColumn('testA', 'dd'));
- initialManager.addOrUpdate(TimeColumn('testB', 'mmm'));
- initialManager.addOrUpdate(TimeColumn('testC', 'asdsa'));
-
- expect(initialManager.userColumns.length, 3);
- expect(initialManager.userColumns.values, everyElement(isA<TimeColumn>()));
-
- final fromJson = ExportColumnsManager.fromJson(initialManager.toJson());
- expect(fromJson.userColumns.length, 3);
- expect(fromJson.userColumns.values, everyElement(isA<TimeColumn>()));
- });
-
- test('should delete columns', () {
- final manger = ExportColumnsManager();
- final c1 = UserColumn('test', 'test', '\$SYS');
- final c2 = TimeColumn('testA', 'dd');
- manger.addOrUpdate(c1);
- manger.addOrUpdate(c2);
-
- expect(manger.userColumns.length, 2);
- expect(() => manger.deleteUserColumn('none'), throwsAssertionError);
- expect(manger.userColumns.length, 2);
-
- manger.deleteUserColumn(c1.internalIdentifier);
- expect(manger.userColumns.length, 1);
- expect(() => manger.deleteUserColumn(c1.internalIdentifier), throwsAssertionError);
- expect(manger.userColumns.length, 1);
-
- manger.deleteUserColumn(c2.internalIdentifier);
- expect(manger.userColumns.length, 0);
- });
-
- test('should include all columns in firstWhere search', () {
- final manger = ExportColumnsManager();
- final c1 = UserColumn('test', 'test', '\$SYS');
- final c2 = TimeColumn('testA', 'dd');
- manger.addOrUpdate(c1);
- manger.addOrUpdate(c2);
-
- expect(manger.firstWhere((p0) => p0.internalIdentifier == c1.internalIdentifier), c1);
- expect(manger.firstWhere((p0) => p0.internalIdentifier == c2.internalIdentifier), c2);
- expect(manger.firstWhere((p0) => p0.csvTitle == c2.csvTitle), c2);
- expect(manger.firstWhere((p0) => p0.formatPattern == c1.formatPattern), c1);
-
- expect(manger.firstWhere((p0) => p0.csvTitle == NativeColumn.timestampUnixMs.csvTitle), NativeColumn.timestampUnixMs);
- expect(manger.firstWhere((p0) => p0.internalIdentifier == BuildInColumn.pulsePressure.internalIdentifier), BuildInColumn.pulsePressure);
-
- expect(manger.firstWhere((p0) => p0.internalIdentifier == 'non existent'), null);
- });
-
- test('should get all columns', () {
- final manager = ExportColumnsManager();
-
- expect(manager.getAllColumns().length, NativeColumn.allColumns.length + BuildInColumn.allColumns.length);
-
- manager.addOrUpdate(UserColumn('test', '', ''));
- expect(manager.getAllColumns().length, NativeColumn.allColumns.length + BuildInColumn.allColumns.length + 1);
- });
-
- test('should get only unmodifiable columns', () {
- final manager = ExportColumnsManager();
-
- expect(manager.getAllUnmodifiableColumns().length, NativeColumn.allColumns.length + BuildInColumn.allColumns.length);
-
- manager.addOrUpdate(UserColumn('test', '', ''));
- expect(manager.getAllUnmodifiableColumns().length, NativeColumn.allColumns.length + BuildInColumn.allColumns.length);
- });
+ test('should get user column by id', () {
+ final manager = ExportColumnsManager();
+ final column = UserColumn('customColumn', '', '');
+ manager.addOrUpdate(column);
+ final returnedColumn = manager.getColumn(column.internalIdentifier);
+ expect(returnedColumn, column);
+ });
+ test('should get NativeColumn by id', () {
+ final manager = ExportColumnsManager();
+ final column = NativeColumn.allColumns.first;
+ final returnedColumn = manager.getColumn(column.internalIdentifier);
+ expect(returnedColumn, column);
+ });
+ test('should get BuildInColumn by id', () {
+ final manager = ExportColumnsManager();
+ final column = BuildInColumn.allColumns.first;
+ final returnedColumn = manager.getColumn(column.internalIdentifier);
+ expect(returnedColumn, column);
+ });
+ test('should allow adding columns', () async {
+ final manager = ExportColumnsManager();
+ final c1 = UserColumn('test', 'test', '\$SYS');
+ final c2 = UserColumn('test2', 'test2', '234');
+ manager.addOrUpdate(c1);
+ manager.addOrUpdate(c2);
+ manager.addOrUpdate(UserColumn('test', 'testx', ''));
+
+ expect(manager.userColumns.length, 2);
+ expect(manager.userColumns[c1.internalIdentifier]?.csvTitle, 'testx');
+ expect(manager.userColumns[c2.internalIdentifier]?.csvTitle, 'test2');
+ });
+
+ test('should restore TimeColumns from configurations', () {
+ final initialManager = ExportColumnsManager();
+ initialManager.addOrUpdate(TimeColumn('testA', 'dd'));
+ initialManager.addOrUpdate(TimeColumn('testB', 'mmm'));
+ initialManager.addOrUpdate(TimeColumn('testC', 'asdsa'));
+
+ expect(initialManager.userColumns.length, 3);
+ expect(initialManager.userColumns.values, everyElement(isA<TimeColumn>()));
+
+ final fromJson = ExportColumnsManager.fromJson(initialManager.toJson());
+ expect(fromJson.userColumns.length, 3);
+ expect(fromJson.userColumns.values, everyElement(isA<TimeColumn>()));
+ });
+
+ test('should delete columns', () {
+ final manger = ExportColumnsManager();
+ final c1 = UserColumn('test', 'test', '\$SYS');
+ final c2 = TimeColumn('testA', 'dd');
+ manger.addOrUpdate(c1);
+ manger.addOrUpdate(c2);
+
+ expect(manger.userColumns.length, 2);
+ expect(() => manger.deleteUserColumn('none'), throwsAssertionError);
+ expect(manger.userColumns.length, 2);
+
+ manger.deleteUserColumn(c1.internalIdentifier);
+ expect(manger.userColumns.length, 1);
+ expect(() => manger.deleteUserColumn(c1.internalIdentifier), throwsAssertionError);
+ expect(manger.userColumns.length, 1);
+
+ manger.deleteUserColumn(c2.internalIdentifier);
+ expect(manger.userColumns.length, 0);
+ });
+
+ test('should include all columns in firstWhere search', () {
+ final manger = ExportColumnsManager();
+ final c1 = UserColumn('test', 'test', '\$SYS');
+ final c2 = TimeColumn('testA', 'dd');
+ manger.addOrUpdate(c1);
+ manger.addOrUpdate(c2);
+
+ expect(manger.firstWhere((p0) => p0.internalIdentifier == c1.internalIdentifier), c1);
+ expect(manger.firstWhere((p0) => p0.internalIdentifier == c2.internalIdentifier), c2);
+ expect(manger.firstWhere((p0) => p0.csvTitle == c2.csvTitle), c2);
+ expect(manger.firstWhere((p0) => p0.formatPattern == c1.formatPattern), c1);
+
+ expect(manger.firstWhere((p0) => p0.csvTitle == NativeColumn.timestampUnixMs.csvTitle), NativeColumn.timestampUnixMs);
+ expect(manger.firstWhere((p0) => p0.internalIdentifier == BuildInColumn.pulsePressure.internalIdentifier), BuildInColumn.pulsePressure);
+
+ expect(manger.firstWhere((p0) => p0.internalIdentifier == 'non existent'), null);
+ });
+
+ test('should get all columns', () {
+ final manager = ExportColumnsManager();
+
+ expect(manager.getAllColumns().length, NativeColumn.allColumns.length + BuildInColumn.allColumns.length);
+
+ manager.addOrUpdate(UserColumn('test', '', ''));
+ expect(manager.getAllColumns().length, NativeColumn.allColumns.length + BuildInColumn.allColumns.length + 1);
+ });
+
+ test('should get only unmodifiable columns', () {
+ final manager = ExportColumnsManager();
+
+ expect(manager.getAllUnmodifiableColumns().length, NativeColumn.allColumns.length + BuildInColumn.allColumns.length);
+
+ manager.addOrUpdate(UserColumn('test', '', ''));
+ expect(manager.getAllUnmodifiableColumns().length, NativeColumn.allColumns.length + BuildInColumn.allColumns.length);
});
}
test/model/export_import/export_configuration_test.dart
@@ -5,42 +5,40 @@ import 'package:blood_pressure_app/model/storage/export_columns_store.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
- group('ActiveExportColumnConfiguration', () {
- test('should not throw errors', () {
- ActiveExportColumnConfiguration();
- ActiveExportColumnConfiguration(activePreset: ExportImportPreset.myHeart);
- ActiveExportColumnConfiguration(activePreset: ExportImportPreset.none, userSelectedColumnIds: ['a','b','c']);
- ActiveExportColumnConfiguration(userSelectedColumnIds: ['a','b','c']);
- });
+ test('should not throw errors', () {
+ ActiveExportColumnConfiguration();
+ ActiveExportColumnConfiguration(activePreset: ExportImportPreset.myHeart);
+ ActiveExportColumnConfiguration(activePreset: ExportImportPreset.none, userSelectedColumnIds: ['a','b','c']);
+ ActiveExportColumnConfiguration(userSelectedColumnIds: ['a','b','c']);
+ });
- test('should return correct columns depending on mode', () {
- final config = ActiveExportColumnConfiguration(
- activePreset: ExportImportPreset.bloodPressureApp,
- userSelectedColumnIds: ['userColumn.a', 'userColumn.b', 'userColumn.c'],
- );
- expect(config.getActiveColumns(ExportColumnsManager()), everyElement(isA<NativeColumn>()));
+ test('should return correct columns depending on mode', () {
+ final config = ActiveExportColumnConfiguration(
+ activePreset: ExportImportPreset.bloodPressureApp,
+ userSelectedColumnIds: ['userColumn.a', 'userColumn.b', 'userColumn.c'],
+ );
+ expect(config.getActiveColumns(ExportColumnsManager()), everyElement(isA<NativeColumn>()));
- config.activePreset = ExportImportPreset.myHeart;
- expect(config.getActiveColumns(ExportColumnsManager()), anyElement(isA<BuildInColumn>()));
- expect(config.getActiveColumns(ExportColumnsManager()), isNot(anyElement(isA<NativeColumn>())));
+ config.activePreset = ExportImportPreset.myHeart;
+ expect(config.getActiveColumns(ExportColumnsManager()), anyElement(isA<BuildInColumn>()));
+ expect(config.getActiveColumns(ExportColumnsManager()), isNot(anyElement(isA<NativeColumn>())));
- config.activePreset = ExportImportPreset.none;
- final manager = ExportColumnsManager();
- manager.addOrUpdate(UserColumn('a', 'testA', ''));
- manager.addOrUpdate(UserColumn('b', 'testB', ''));
- manager.addOrUpdate(UserColumn('c', 'testC', ''));
- expect(config.getActiveColumns(manager).length, 3);
- expect(config.getActiveColumns(manager), everyElement(isA<UserColumn>()));
- });
+ config.activePreset = ExportImportPreset.none;
+ final manager = ExportColumnsManager();
+ manager.addOrUpdate(UserColumn('a', 'testA', ''));
+ manager.addOrUpdate(UserColumn('b', 'testB', ''));
+ manager.addOrUpdate(UserColumn('c', 'testC', ''));
+ expect(config.getActiveColumns(manager).length, 3);
+ expect(config.getActiveColumns(manager), everyElement(isA<UserColumn>()));
+ });
- test('should notify listeners', () {
- final config = ActiveExportColumnConfiguration();
- int callCount = 0;
- config.addListener(() {
- callCount += 1;
- });
- config.activePreset = ExportImportPreset.bloodPressureApp;
- expect(callCount, 1);
+ test('should notify listeners', () {
+ final config = ActiveExportColumnConfiguration();
+ int callCount = 0;
+ config.addListener(() {
+ callCount += 1;
});
+ config.activePreset = ExportImportPreset.bloodPressureApp;
+ expect(callCount, 1);
});
}
test/model/export_import/pdf_converter_test.dart
@@ -10,55 +10,53 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
- group('PdfConverter', () {
- test('should not return empty data', () async {
- final localizations = await AppLocalizations.delegate.load(const Locale('en'));
- final converter = PdfConverter(PdfExportSettings(), localizations, Settings(), ExportColumnsManager());
- final pdf = await converter.create(createRecords());
- expect(pdf.length, isNonZero);
- });
- test('generated data length should be consistent', () async {
- final localizations = await AppLocalizations.delegate.load(const Locale('en'));
- final converter = PdfConverter(PdfExportSettings(), localizations, Settings(), ExportColumnsManager());
- final pdf = await converter.create(createRecords());
- final converter2 = PdfConverter(PdfExportSettings(), localizations, Settings(), ExportColumnsManager());
- final pdf2 = await converter2.create(createRecords());
- expect(pdf.length, pdf2.length);
- });
-
- test('generated data should change on settings change', () async {
- final localizations = await AppLocalizations.delegate.load(const Locale('en'));
- final pdfSettings = PdfExportSettings(
- exportData: true,
- exportStatistics: true,
- exportTitle: true,
- );
-
- final converter = PdfConverter(pdfSettings, localizations, Settings(), ExportColumnsManager());
- final pdf1 = await converter.create(createRecords());
-
- pdfSettings.exportData = false;
- final pdf2 = await converter.create(createRecords());
- expect(pdf1.length, isNot(pdf2.length));
- expect(pdf1.length, greaterThan(pdf2.length));
-
- pdfSettings.exportStatistics = false;
- final pdf3 = await converter.create(createRecords());
- expect(pdf3.length, isNot(pdf2.length));
- expect(pdf3.length, isNot(pdf1.length));
- expect(pdf2.length, greaterThan(pdf3.length));
+ test('should not return empty data', () async {
+ final localizations = await AppLocalizations.delegate.load(const Locale('en'));
+ final converter = PdfConverter(PdfExportSettings(), localizations, Settings(), ExportColumnsManager());
+ final pdf = await converter.create(createRecords());
+ expect(pdf.length, isNonZero);
+ });
+ test('generated data length should be consistent', () async {
+ final localizations = await AppLocalizations.delegate.load(const Locale('en'));
+ final converter = PdfConverter(PdfExportSettings(), localizations, Settings(), ExportColumnsManager());
+ final pdf = await converter.create(createRecords());
+ final converter2 = PdfConverter(PdfExportSettings(), localizations, Settings(), ExportColumnsManager());
+ final pdf2 = await converter2.create(createRecords());
+ expect(pdf.length, pdf2.length);
+ });
- pdfSettings.exportTitle = false;
- pdfSettings.exportData = true;
- final pdf4 = await converter.create(createRecords());
- expect(pdf4.length, isNot(pdf1.length));
- expect(pdf1.length, greaterThan(pdf4.length));
- });
+ test('generated data should change on settings change', () async {
+ final localizations = await AppLocalizations.delegate.load(const Locale('en'));
+ final pdfSettings = PdfExportSettings(
+ exportData: true,
+ exportStatistics: true,
+ exportTitle: true,
+ );
+
+ final converter = PdfConverter(pdfSettings, localizations, Settings(), ExportColumnsManager());
+ final pdf1 = await converter.create(createRecords());
+
+ pdfSettings.exportData = false;
+ final pdf2 = await converter.create(createRecords());
+ expect(pdf1.length, isNot(pdf2.length));
+ expect(pdf1.length, greaterThan(pdf2.length));
+
+ pdfSettings.exportStatistics = false;
+ final pdf3 = await converter.create(createRecords());
+ expect(pdf3.length, isNot(pdf2.length));
+ expect(pdf3.length, isNot(pdf1.length));
+ expect(pdf2.length, greaterThan(pdf3.length));
+
+ pdfSettings.exportTitle = false;
+ pdfSettings.exportData = true;
+ final pdf4 = await converter.create(createRecords());
+ expect(pdf4.length, isNot(pdf1.length));
+ expect(pdf1.length, greaterThan(pdf4.length));
});
}
List<BloodPressureRecord> createRecords([int count = 20]) => [
for (int i = 0; i<count; i++)
- BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(123456 + i),
+ BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(123456 + i),
i, 100+i, 200+1, 'note $i', needlePin: MeasurementNeedlePin(Color(123+i)),),
];
test/model/medicine/intake_history_test.dart
@@ -6,167 +6,165 @@ import 'medicine_intake_test.dart';
import 'medicine_test.dart';
void main() {
- group('IntakeHistory', () {
- test('should return all matching intakes in range', () {
- final history = IntakeHistory([
- mockIntake(timeMs: 2),
- mockIntake(timeMs: 2),
- mockIntake(timeMs: 4),
- mockIntake(timeMs: 5),
- mockIntake(timeMs: 6),
- mockIntake(timeMs: 9),
- mockIntake(timeMs: 9),
- mockIntake(timeMs: 12),
- mockIntake(timeMs: 15),
- mockIntake(timeMs: 15),
- mockIntake(timeMs: 16),
- mockIntake(timeMs: 17),
- ]);
- final found = history.getIntakes(DateTimeRange(
- start: DateTime.fromMillisecondsSinceEpoch(4),
- end: DateTime.fromMillisecondsSinceEpoch(15),
- ),);
- expect(found.length, 8);
- expect(found.map((e) => e.timestamp.millisecondsSinceEpoch), containsAllInOrder([4,5,6,9,9,12,15,15]));
- });
- test('should return all matching intakes when only few are in range', () {
- final history = IntakeHistory([
- mockIntake(timeMs: 2),
- mockIntake(timeMs: 3),
- ]);
- final found = history.getIntakes(DateTimeRange(
- start: DateTime.fromMillisecondsSinceEpoch(0),
- end: DateTime.fromMillisecondsSinceEpoch(4),
- ),);
- expect(found.length, 2);
- expect(found.map((e) => e.timestamp.millisecondsSinceEpoch), containsAllInOrder([2,3]));
- });
- test('should return nothing when no intakes are present', () {
- final history = IntakeHistory([]);
- final found = history.getIntakes(DateTimeRange(
- start: DateTime.fromMillisecondsSinceEpoch(0),
- end: DateTime.fromMillisecondsSinceEpoch(1000),
- ),);
- expect(found.length, 0);
- });
- test('should return nothing when intakes are out of range', () {
- final history = IntakeHistory([
- mockIntake(timeMs: 2),
- mockIntake(timeMs: 3),
- ]);
- final found1 = history.getIntakes(DateTimeRange(
- start: DateTime.fromMillisecondsSinceEpoch(4),
- end: DateTime.fromMillisecondsSinceEpoch(10),
- ),);
- expect(found1.length, 0);
- final found2 = history.getIntakes(DateTimeRange(
- start: DateTime.fromMillisecondsSinceEpoch(0),
- end: DateTime.fromMillisecondsSinceEpoch(1),
- ),);
- expect(found2.length, 0);
- });
- test('should add to the correct position', () {
- final history = IntakeHistory([
- mockIntake(timeMs: 2),
- mockIntake(timeMs: 7),
- ]);
+ test('should return all matching intakes in range', () {
+ final history = IntakeHistory([
+ mockIntake(timeMs: 2),
+ mockIntake(timeMs: 2),
+ mockIntake(timeMs: 4),
+ mockIntake(timeMs: 5),
+ mockIntake(timeMs: 6),
+ mockIntake(timeMs: 9),
+ mockIntake(timeMs: 9),
+ mockIntake(timeMs: 12),
+ mockIntake(timeMs: 15),
+ mockIntake(timeMs: 15),
+ mockIntake(timeMs: 16),
+ mockIntake(timeMs: 17),
+ ]);
+ final found = history.getIntakes(DateTimeRange(
+ start: DateTime.fromMillisecondsSinceEpoch(4),
+ end: DateTime.fromMillisecondsSinceEpoch(15),
+ ),);
+ expect(found.length, 8);
+ expect(found.map((e) => e.timestamp.millisecondsSinceEpoch), containsAllInOrder([4,5,6,9,9,12,15,15]));
+ });
+ test('should return all matching intakes when only few are in range', () {
+ final history = IntakeHistory([
+ mockIntake(timeMs: 2),
+ mockIntake(timeMs: 3),
+ ]);
+ final found = history.getIntakes(DateTimeRange(
+ start: DateTime.fromMillisecondsSinceEpoch(0),
+ end: DateTime.fromMillisecondsSinceEpoch(4),
+ ),);
+ expect(found.length, 2);
+ expect(found.map((e) => e.timestamp.millisecondsSinceEpoch), containsAllInOrder([2,3]));
+ });
+ test('should return nothing when no intakes are present', () {
+ final history = IntakeHistory([]);
+ final found = history.getIntakes(DateTimeRange(
+ start: DateTime.fromMillisecondsSinceEpoch(0),
+ end: DateTime.fromMillisecondsSinceEpoch(1000),
+ ),);
+ expect(found.length, 0);
+ });
+ test('should return nothing when intakes are out of range', () {
+ final history = IntakeHistory([
+ mockIntake(timeMs: 2),
+ mockIntake(timeMs: 3),
+ ]);
+ final found1 = history.getIntakes(DateTimeRange(
+ start: DateTime.fromMillisecondsSinceEpoch(4),
+ end: DateTime.fromMillisecondsSinceEpoch(10),
+ ),);
+ expect(found1.length, 0);
+ final found2 = history.getIntakes(DateTimeRange(
+ start: DateTime.fromMillisecondsSinceEpoch(0),
+ end: DateTime.fromMillisecondsSinceEpoch(1),
+ ),);
+ expect(found2.length, 0);
+ });
+ test('should add to the correct position', () {
+ final history = IntakeHistory([
+ mockIntake(timeMs: 2),
+ mockIntake(timeMs: 7),
+ ]);
- history.addIntake(mockIntake(timeMs: 3));
- final found = history.getIntakes(DateTimeRange(
- start: DateTime.fromMillisecondsSinceEpoch(0),
- end: DateTime.fromMillisecondsSinceEpoch(10),
- ),);
- expect(found.length, 3);
- expect(found.map((e) => e.timestamp.millisecondsSinceEpoch), containsAllInOrder([2,3,7]));
+ history.addIntake(mockIntake(timeMs: 3));
+ final found = history.getIntakes(DateTimeRange(
+ start: DateTime.fromMillisecondsSinceEpoch(0),
+ end: DateTime.fromMillisecondsSinceEpoch(10),
+ ),);
+ expect(found.length, 3);
+ expect(found.map((e) => e.timestamp.millisecondsSinceEpoch), containsAllInOrder([2,3,7]));
- history.addIntake(mockIntake(timeMs: 3));
- final found2 = history.getIntakes(DateTimeRange(
- start: DateTime.fromMillisecondsSinceEpoch(0),
- end: DateTime.fromMillisecondsSinceEpoch(10),
- ),);
- expect(found2.length, 4);
- expect(found2.map((e) => e.timestamp.millisecondsSinceEpoch), containsAllInOrder([2,3,3,7]));
+ history.addIntake(mockIntake(timeMs: 3));
+ final found2 = history.getIntakes(DateTimeRange(
+ start: DateTime.fromMillisecondsSinceEpoch(0),
+ end: DateTime.fromMillisecondsSinceEpoch(10),
+ ),);
+ expect(found2.length, 4);
+ expect(found2.map((e) => e.timestamp.millisecondsSinceEpoch), containsAllInOrder([2,3,3,7]));
- history.addIntake(mockIntake(timeMs: 1));
- final found3 = history.getIntakes(DateTimeRange(
- start: DateTime.fromMillisecondsSinceEpoch(0),
- end: DateTime.fromMillisecondsSinceEpoch(10),
- ),);
- expect(found3.length, 5);
- expect(found3.map((e) => e.timestamp.millisecondsSinceEpoch), containsAllInOrder([1,2,3,3,7]));
+ history.addIntake(mockIntake(timeMs: 1));
+ final found3 = history.getIntakes(DateTimeRange(
+ start: DateTime.fromMillisecondsSinceEpoch(0),
+ end: DateTime.fromMillisecondsSinceEpoch(10),
+ ),);
+ expect(found3.length, 5);
+ expect(found3.map((e) => e.timestamp.millisecondsSinceEpoch), containsAllInOrder([1,2,3,3,7]));
- history.addIntake(mockIntake(timeMs: 10));
- final found4 = history.getIntakes(DateTimeRange(
- start: DateTime.fromMillisecondsSinceEpoch(0),
- end: DateTime.fromMillisecondsSinceEpoch(10),
- ),);
- expect(found4.length, 6);
- expect(found4.map((e) => e.timestamp.millisecondsSinceEpoch), containsAllInOrder([1,2,3,3,7,10]));
- });
- test('should remove deleted intakes', () {
- final history = IntakeHistory([
- mockIntake(timeMs: 2),
- mockIntake(timeMs: 2),
- mockIntake(timeMs: 4),
- mockIntake(timeMs: 5),
- mockIntake(timeMs: 6),
- mockIntake(timeMs: 9),
- mockIntake(timeMs: 9, dosis: 2),
- mockIntake(timeMs: 12),
- ]);
- history.deleteIntake(mockIntake(timeMs: 5));
- final found = history.getIntakes(DateTimeRange(
- start: DateTime.fromMillisecondsSinceEpoch(0),
- end: DateTime.fromMillisecondsSinceEpoch(20),
- ),);
- expect(found.length, 7);
- expect(found.map((e) => e.timestamp.millisecondsSinceEpoch),
- containsAllInOrder([2,2,4,6,9,9,12]),);
+ history.addIntake(mockIntake(timeMs: 10));
+ final found4 = history.getIntakes(DateTimeRange(
+ start: DateTime.fromMillisecondsSinceEpoch(0),
+ end: DateTime.fromMillisecondsSinceEpoch(10),
+ ),);
+ expect(found4.length, 6);
+ expect(found4.map((e) => e.timestamp.millisecondsSinceEpoch), containsAllInOrder([1,2,3,3,7,10]));
+ });
+ test('should remove deleted intakes', () {
+ final history = IntakeHistory([
+ mockIntake(timeMs: 2),
+ mockIntake(timeMs: 2),
+ mockIntake(timeMs: 4),
+ mockIntake(timeMs: 5),
+ mockIntake(timeMs: 6),
+ mockIntake(timeMs: 9),
+ mockIntake(timeMs: 9, dosis: 2),
+ mockIntake(timeMs: 12),
+ ]);
+ history.deleteIntake(mockIntake(timeMs: 5));
+ final found = history.getIntakes(DateTimeRange(
+ start: DateTime.fromMillisecondsSinceEpoch(0),
+ end: DateTime.fromMillisecondsSinceEpoch(20),
+ ),);
+ expect(found.length, 7);
+ expect(found.map((e) => e.timestamp.millisecondsSinceEpoch),
+ containsAllInOrder([2,2,4,6,9,9,12]),);
- history.deleteIntake(mockIntake(timeMs: 9));
- final found3 = history.getIntakes(DateTimeRange(
- start: DateTime.fromMillisecondsSinceEpoch(0),
- end: DateTime.fromMillisecondsSinceEpoch(20),
- ),);
- expect(found3.length, 6);
- expect(found3.map((e) => e.timestamp.millisecondsSinceEpoch),
- containsAllInOrder([2,2,4,6,9,12]),);
+ history.deleteIntake(mockIntake(timeMs: 9));
+ final found3 = history.getIntakes(DateTimeRange(
+ start: DateTime.fromMillisecondsSinceEpoch(0),
+ end: DateTime.fromMillisecondsSinceEpoch(20),
+ ),);
+ expect(found3.length, 6);
+ expect(found3.map((e) => e.timestamp.millisecondsSinceEpoch),
+ containsAllInOrder([2,2,4,6,9,12]),);
- history.deleteIntake(mockIntake(timeMs: 2));
- final found4 = history.getIntakes(DateTimeRange(
- start: DateTime.fromMillisecondsSinceEpoch(0),
- end: DateTime.fromMillisecondsSinceEpoch(20),
- ),);
- expect(found4.length, 4);
- expect(found4.map((e) => e.timestamp.millisecondsSinceEpoch),
- containsAllInOrder([4,6,9,12]),);
- });
- test('should not fail on deleting non existent intake', () {
- final history = IntakeHistory([]);
- history.deleteIntake(mockIntake(timeMs: 5));
- final found = history.getIntakes(DateTimeRange(
- start: DateTime.fromMillisecondsSinceEpoch(0),
- end: DateTime.fromMillisecondsSinceEpoch(20),
- ),);
- 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);
+ history.deleteIntake(mockIntake(timeMs: 2));
+ final found4 = history.getIntakes(DateTimeRange(
+ start: DateTime.fromMillisecondsSinceEpoch(0),
+ end: DateTime.fromMillisecondsSinceEpoch(20),
+ ),);
+ expect(found4.length, 4);
+ expect(found4.map((e) => e.timestamp.millisecondsSinceEpoch),
+ containsAllInOrder([4,6,9,12]),);
+ });
+ test('should not fail on deleting non existent intake', () {
+ final history = IntakeHistory([]);
+ history.deleteIntake(mockIntake(timeMs: 5));
+ final found = history.getIntakes(DateTimeRange(
+ start: DateTime.fromMillisecondsSinceEpoch(0),
+ end: DateTime.fromMillisecondsSinceEpoch(20),
+ ),);
+ 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);
- });
+ expect(deserializedHistory.serialize(), history.serialize());
+ expect(deserializedHistory, history);
});
}
test/model/medicine/medicine_intake_test.dart
@@ -6,45 +6,43 @@ import 'package:flutter_test/flutter_test.dart';
import 'medicine_test.dart';
void main() {
- group('MedicineIntake', () {
- test('should determine equality', () {
- final med = Medicine(1, designation: 'designation', color: Colors.red, defaultDosis: 123);
- final int1 = MedicineIntake(medicine: med, dosis: 10, timestamp: DateTime.fromMillisecondsSinceEpoch(123));
- final int2 = MedicineIntake(medicine: med, dosis: 10, timestamp: DateTime.fromMillisecondsSinceEpoch(123));
- expect(int1, int2);
- });
- test('should determine inequality', () {
- final med1 = Medicine(1, designation: 'designation', color: Colors.red, defaultDosis: 123);
- final med2 = Medicine(2, designation: 'designation', color: Colors.red, defaultDosis: 123);
- final int1 = MedicineIntake(medicine: med1, dosis: 10, timestamp: DateTime.fromMillisecondsSinceEpoch(123));
- final int2 = MedicineIntake(medicine: med2, dosis: 10, timestamp: DateTime.fromMillisecondsSinceEpoch(123));
- expect(int1, isNot(int2));
- final int3 = MedicineIntake(medicine: med1, dosis: 11, timestamp: DateTime.fromMillisecondsSinceEpoch(123));
- expect(int1, isNot(int3));
- final int4 = MedicineIntake(medicine: med1, dosis: 10, timestamp: DateTime.fromMillisecondsSinceEpoch(124));
- expect(int1, isNot(int4));
- });
- test('should deserialize serialized intake', () {
- final intake = mockIntake(timeMs: 543210);
- expect(MedicineIntake.deserialize(intake.serialize(), [intake.medicine]), intake);
+ test('should determine equality', () {
+ final med = Medicine(1, designation: 'designation', color: Colors.red, defaultDosis: 123);
+ final int1 = MedicineIntake(medicine: med, dosis: 10, timestamp: DateTime.fromMillisecondsSinceEpoch(123));
+ final int2 = MedicineIntake(medicine: med, dosis: 10, timestamp: DateTime.fromMillisecondsSinceEpoch(123));
+ expect(int1, int2);
+ });
+ test('should determine inequality', () {
+ final med1 = Medicine(1, designation: 'designation', color: Colors.red, defaultDosis: 123);
+ final med2 = Medicine(2, designation: 'designation', color: Colors.red, defaultDosis: 123);
+ final int1 = MedicineIntake(medicine: med1, dosis: 10, timestamp: DateTime.fromMillisecondsSinceEpoch(123));
+ final int2 = MedicineIntake(medicine: med2, dosis: 10, timestamp: DateTime.fromMillisecondsSinceEpoch(123));
+ expect(int1, isNot(int2));
+ final int3 = MedicineIntake(medicine: med1, dosis: 11, timestamp: DateTime.fromMillisecondsSinceEpoch(123));
+ expect(int1, isNot(int3));
+ final int4 = MedicineIntake(medicine: med1, dosis: 10, timestamp: DateTime.fromMillisecondsSinceEpoch(124));
+ expect(int1, isNot(int4));
+ });
+ test('should deserialize serialized intake', () {
+ final intake = mockIntake(timeMs: 543210);
+ expect(MedicineIntake.deserialize(intake.serialize(), [intake.medicine]), intake);
- final intake2 = mockIntake(
- timeMs: 543211,
- dosis: 1000231,
- medicine: mockMedicine(designation: 'tst'),
- );
- expect(MedicineIntake.deserialize(
- intake2.serialize(),
- [intake.medicine, intake2.medicine],),
- intake2,);
- });
- test('should fail to deserialize serialized intake without exising med', () {
- final intake = mockIntake(medicine: mockMedicine(designation: 'tst'));
- expect(() => MedicineIntake.deserialize(
- intake.serialize(),
- [mockMedicine()],),
- throwsArgumentError,);
- });
+ final intake2 = mockIntake(
+ timeMs: 543211,
+ dosis: 1000231,
+ medicine: mockMedicine(designation: 'tst'),
+ );
+ expect(MedicineIntake.deserialize(
+ intake2.serialize(),
+ [intake.medicine, intake2.medicine],),
+ intake2,);
+ });
+ test('should fail to deserialize serialized intake without exising med', () {
+ final intake = mockIntake(medicine: mockMedicine(designation: 'tst'));
+ expect(() => MedicineIntake.deserialize(
+ intake.serialize(),
+ [mockMedicine()],),
+ throwsArgumentError,);
});
}
test/model/medicine/medicine_test.dart
@@ -3,49 +3,47 @@ import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
- group('Medicine', () {
- test('should determine equality', () {
- final med1 = Medicine(1, designation: 'designation', color: Colors.red, defaultDosis: 10);
- final med2 = Medicine(1, designation: 'designation', color: Colors.red, defaultDosis: 10);
- expect(med1, med2);
- });
- test('should determine inequality', () {
- final med1 = Medicine(1, designation: 'designation', color: Colors.red, defaultDosis: 10);
- final med2 = Medicine(1, designation: 'designatio', color: Colors.red, defaultDosis: 10);
- expect(med1, isNot(med2));
- final med3 = Medicine(1, designation: 'designation', color: Colors.blue, defaultDosis: 10);
- expect(med1, isNot(med3));
- final med4 = Medicine(1, designation: 'designation', color: Colors.red, defaultDosis: 11);
- expect(med1, isNot(med4));
- });
- test('should restore after encoded to map', () {
- final med1 = mockMedicine();
- final med1Restored = Medicine.fromMap(med1.toMap());
- expect(med1Restored, med1);
-
- final med2 = mockMedicine(color: Colors.red, designation: 'designation', defaultDosis: 15);
- final med2Restored = Medicine.fromMap(med2.toMap());
- expect(med2Restored, med2);
- });
- test('should restore after encoded to json', () {
- final med1 = mockMedicine();
- final med1Restored = Medicine.fromJson(med1.toJson());
- expect(med1Restored, med1);
+ test('should determine equality', () {
+ final med1 = Medicine(1, designation: 'designation', color: Colors.red, defaultDosis: 10);
+ final med2 = Medicine(1, designation: 'designation', color: Colors.red, defaultDosis: 10);
+ expect(med1, med2);
+ });
+ test('should determine inequality', () {
+ final med1 = Medicine(1, designation: 'designation', color: Colors.red, defaultDosis: 10);
+ final med2 = Medicine(1, designation: 'designatio', color: Colors.red, defaultDosis: 10);
+ expect(med1, isNot(med2));
+ final med3 = Medicine(1, designation: 'designation', color: Colors.blue, defaultDosis: 10);
+ expect(med1, isNot(med3));
+ final med4 = Medicine(1, designation: 'designation', color: Colors.red, defaultDosis: 11);
+ expect(med1, isNot(med4));
+ });
+ test('should restore after encoded to map', () {
+ final med1 = mockMedicine();
+ final med1Restored = Medicine.fromMap(med1.toMap());
+ expect(med1Restored, med1);
- final med2 = mockMedicine(color: Colors.red, designation: 'designation', defaultDosis: 15);
- final med2Restored = Medicine.fromJson(med2.toJson());
- expect(med2Restored, med2);
- });
- test('should generate the same json after restoration', () {
- final med1 = mockMedicine();
- final med1Restored = Medicine.fromJson(med1.toJson());
- expect(med1Restored.toJson(), med1.toJson());
+ final med2 = mockMedicine(color: Colors.red, designation: 'designation', defaultDosis: 15);
+ final med2Restored = Medicine.fromMap(med2.toMap());
+ expect(med2Restored, med2);
+ });
+ test('should restore after encoded to json', () {
+ final med1 = mockMedicine();
+ final med1Restored = Medicine.fromJson(med1.toJson());
+ expect(med1Restored, med1);
- final med2 = mockMedicine(color: Colors.red, designation: 'designation', defaultDosis: 15);
- final med2Restored = Medicine.fromJson(med2.toJson());
- expect(med2Restored.toJson(), med2.toJson());
- }); // not in a json serialization test as this is not a setting like file.
+ final med2 = mockMedicine(color: Colors.red, designation: 'designation', defaultDosis: 15);
+ final med2Restored = Medicine.fromJson(med2.toJson());
+ expect(med2Restored, med2);
});
+ test('should generate the same json after restoration', () {
+ final med1 = mockMedicine();
+ final med1Restored = Medicine.fromJson(med1.toJson());
+ expect(med1Restored.toJson(), med1.toJson());
+
+ final med2 = mockMedicine(color: Colors.red, designation: 'designation', defaultDosis: 15);
+ final med2Restored = Medicine.fromJson(med2.toJson());
+ expect(med2Restored.toJson(), med2.toJson());
+ }); // not in a json serialization test as this is not a setting like file.
}
test/model/analyzer_test.dart
@@ -4,62 +4,60 @@ import 'package:blood_pressure_app/model/blood_pressure_analyzer.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
- group('BloodPressureAnalyser', () {
- test('should return averages', () async {
- final m = BloodPressureAnalyser([
- BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(1), 122, 87, 65, ''),
- BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(2), 100, 60, 62, ''),
- BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(3), 111, 73, 73, ''),
- ]);
-
- expect(m.avgSys, 111);
- expect(m.avgDia, 73);
- expect(m.avgPul, 66);
- });
-
- test('should return max', () async {
- final a = BloodPressureAnalyser([
- BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(1), 123, 87, 65, ''),
- BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(2), 100, 60, 62, ''),
- BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(3), 111, 73, 73, ''),
- BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(4), 111, 73, 73, ''),
- ]);
+ test('should return averages', () async {
+ final m = BloodPressureAnalyser([
+ BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(1), 122, 87, 65, ''),
+ BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(2), 100, 60, 62, ''),
+ BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(3), 111, 73, 73, ''),
+ ]);
+
+ expect(m.avgSys, 111);
+ expect(m.avgDia, 73);
+ expect(m.avgPul, 66);
+ });
- expect(a.maxSys, 123);
- expect(a.maxDia, 87);
- expect(a.maxPul, 73);
- });
+ test('should return max', () async {
+ final a = BloodPressureAnalyser([
+ BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(1), 123, 87, 65, ''),
+ BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(2), 100, 60, 62, ''),
+ BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(3), 111, 73, 73, ''),
+ BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(4), 111, 73, 73, ''),
+ ]);
+
+ expect(a.maxSys, 123);
+ expect(a.maxDia, 87);
+ expect(a.maxPul, 73);
+ });
- test('should return min', () async {
- final a = BloodPressureAnalyser([
- BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(1), 123, 87, 65, ''),
- BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(2), 100, 60, 62, ''),
- BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(3), 111, 73, 73, ''),
- BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(4), 100, 60, 62, ''),
- ]);
+ test('should return min', () async {
+ final a = BloodPressureAnalyser([
+ BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(1), 123, 87, 65, ''),
+ BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(2), 100, 60, 62, ''),
+ BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(3), 111, 73, 73, ''),
+ BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(4), 100, 60, 62, ''),
+ ]);
+
+ expect(a.minSys, 100);
+ expect(a.minDia, 60);
+ expect(a.minPul, 62);
+ });
- expect(a.minSys, 100);
- expect(a.minDia, 60);
- expect(a.minPul, 62);
- });
+ test('should know count', () async {
+ final m = BloodPressureAnalyser([
+ for (int i = 1; i < 101; i++)
+ BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(i), 0, 0, 0, ''),
+ ]);
+ expect(m.count, 100);
+ });
- test('should know count', () async {
- final m = BloodPressureAnalyser([
- for (int i = 1; i < 101; i++)
- BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(i), 0, 0, 0, ''),
- ]);
- expect(m.count, 100);
- });
+ test('should determine special days', () async {
+ final m = BloodPressureAnalyser([BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(100), 0, 0, 0, ''),
+ BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(20), 0, 0, 0, ''),
+ BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(9000000), 0, 0, 0, ''),
+ BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(3124159), 0, 0, 0, ''),
+ ]);
- test('should determine special days', () async {
- final m = BloodPressureAnalyser([BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(100), 0, 0, 0, ''),
- BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(20), 0, 0, 0, ''),
- BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(9000000), 0, 0, 0, ''),
- BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(3124159), 0, 0, 0, ''),
- ]);
-
- expect((m.firstDay), DateTime.fromMillisecondsSinceEpoch(20));
- expect((m.lastDay), DateTime.fromMillisecondsSinceEpoch(9000000));
- });
+ expect((m.firstDay), DateTime.fromMillisecondsSinceEpoch(20));
+ expect((m.lastDay), DateTime.fromMillisecondsSinceEpoch(9000000));
});
}
test/model/convert_util_test.dart
@@ -4,122 +4,120 @@ import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
- group('ConvertUtil', () {
- test('parseBool should parse valid boolean correctly', () {
- expect(ConvertUtil.parseBool(true), true);
- expect(ConvertUtil.parseBool(false), false);
- expect(ConvertUtil.parseBool(1), true);
- expect(ConvertUtil.parseBool(1.0), true);
- expect(ConvertUtil.parseBool(0), false);
- expect(ConvertUtil.parseBool(0.0), false);
- expect(ConvertUtil.parseBool('true'), true);
- expect(ConvertUtil.parseBool('false'), false);
- });
- test('parseBool should parse invalid values as null', () {
- expect(ConvertUtil.parseBool('test'), null);
- expect(ConvertUtil.parseBool(132), null);
- expect(ConvertUtil.parseBool(-1), null);
- expect(ConvertUtil.parseBool({'test': 5}), null);
- expect(ConvertUtil.parseBool(null), null);
- expect(ConvertUtil.parseBool(1.1), null);
- });
+ test('parseBool should parse valid boolean correctly', () {
+ expect(ConvertUtil.parseBool(true), true);
+ expect(ConvertUtil.parseBool(false), false);
+ expect(ConvertUtil.parseBool(1), true);
+ expect(ConvertUtil.parseBool(1.0), true);
+ expect(ConvertUtil.parseBool(0), false);
+ expect(ConvertUtil.parseBool(0.0), false);
+ expect(ConvertUtil.parseBool('true'), true);
+ expect(ConvertUtil.parseBool('false'), false);
+ });
+ test('parseBool should parse invalid values as null', () {
+ expect(ConvertUtil.parseBool('test'), null);
+ expect(ConvertUtil.parseBool(132), null);
+ expect(ConvertUtil.parseBool(-1), null);
+ expect(ConvertUtil.parseBool({'test': 5}), null);
+ expect(ConvertUtil.parseBool(null), null);
+ expect(ConvertUtil.parseBool(1.1), null);
+ });
- test('parseInt should parse valid values correctly', () {
- expect(ConvertUtil.parseInt(123), 123);
- expect(ConvertUtil.parseInt(534), 534);
- expect(ConvertUtil.parseInt(-1123), -1123);
- expect(ConvertUtil.parseInt(1.0), 1);
- expect(ConvertUtil.parseInt(0), 0);
- expect(ConvertUtil.parseInt('0'), 0);
- expect(ConvertUtil.parseInt('1321.0'), 1321);
- expect(ConvertUtil.parseInt('-1234'), -1234);
- });
- test('parseInt should parse invalid values as null', () {
- expect(ConvertUtil.parseInt('test'), null);
- expect(ConvertUtil.parseInt(true), null);
- expect(ConvertUtil.parseInt(1.2), null);
- expect(ConvertUtil.parseInt({'test': 5}), null);
- expect(ConvertUtil.parseInt(null), null);
- expect(ConvertUtil.parseInt('123test'), null);
- });
+ test('parseInt should parse valid values correctly', () {
+ expect(ConvertUtil.parseInt(123), 123);
+ expect(ConvertUtil.parseInt(534), 534);
+ expect(ConvertUtil.parseInt(-1123), -1123);
+ expect(ConvertUtil.parseInt(1.0), 1);
+ expect(ConvertUtil.parseInt(0), 0);
+ expect(ConvertUtil.parseInt('0'), 0);
+ expect(ConvertUtil.parseInt('1321.0'), 1321);
+ expect(ConvertUtil.parseInt('-1234'), -1234);
+ });
+ test('parseInt should parse invalid values as null', () {
+ expect(ConvertUtil.parseInt('test'), null);
+ expect(ConvertUtil.parseInt(true), null);
+ expect(ConvertUtil.parseInt(1.2), null);
+ expect(ConvertUtil.parseInt({'test': 5}), null);
+ expect(ConvertUtil.parseInt(null), null);
+ expect(ConvertUtil.parseInt('123test'), null);
+ });
- test('parseDouble should parse valid values correctly', () {
- expect(ConvertUtil.parseDouble(123.123), 123.123);
- expect(ConvertUtil.parseDouble(534), 534.0);
- expect(ConvertUtil.parseDouble(-1123.543), -1123.543);
- expect(ConvertUtil.parseDouble(1.0), 1.0);
- expect(ConvertUtil.parseDouble(0.0), 0.0);
- expect(ConvertUtil.parseDouble('0'), 0.0);
- expect(ConvertUtil.parseDouble('1321.1234'), 1321.1234);
- expect(ConvertUtil.parseDouble('-1234.654'), -1234.654);
- });
- test('parseDouble should parse invalid values as null', () {
- expect(ConvertUtil.parseDouble('test'), null);
- expect(ConvertUtil.parseDouble(true), null);
- expect(ConvertUtil.parseDouble({'test': 5}), null);
- expect(ConvertUtil.parseDouble(null), null);
- expect(ConvertUtil.parseDouble('123test'), null);
- expect(ConvertUtil.parseDouble('1234.1234.1234'), null);
- });
+ test('parseDouble should parse valid values correctly', () {
+ expect(ConvertUtil.parseDouble(123.123), 123.123);
+ expect(ConvertUtil.parseDouble(534), 534.0);
+ expect(ConvertUtil.parseDouble(-1123.543), -1123.543);
+ expect(ConvertUtil.parseDouble(1.0), 1.0);
+ expect(ConvertUtil.parseDouble(0.0), 0.0);
+ expect(ConvertUtil.parseDouble('0'), 0.0);
+ expect(ConvertUtil.parseDouble('1321.1234'), 1321.1234);
+ expect(ConvertUtil.parseDouble('-1234.654'), -1234.654);
+ });
+ test('parseDouble should parse invalid values as null', () {
+ expect(ConvertUtil.parseDouble('test'), null);
+ expect(ConvertUtil.parseDouble(true), null);
+ expect(ConvertUtil.parseDouble({'test': 5}), null);
+ expect(ConvertUtil.parseDouble(null), null);
+ expect(ConvertUtil.parseDouble('123test'), null);
+ expect(ConvertUtil.parseDouble('1234.1234.1234'), null);
+ });
- test('parseString should parse valid values correctly', () {
- expect(ConvertUtil.parseString('123.123'), '123.123');
- expect(ConvertUtil.parseString('dasdhjsadjka'), 'dasdhjsadjka');
- expect(ConvertUtil.parseString(123), '123');
- expect(ConvertUtil.parseString(true), 'true');
- expect(ConvertUtil.parseString(0.123), '0.123');
- expect(ConvertUtil.parseString('null'), 'null');
- });
- test('parseString should parse invalid values as null', () {
- expect(ConvertUtil.parseString(const Locale('test')), null);
- expect(ConvertUtil.parseString({'test': 5}), null);
- });
+ test('parseString should parse valid values correctly', () {
+ expect(ConvertUtil.parseString('123.123'), '123.123');
+ expect(ConvertUtil.parseString('dasdhjsadjka'), 'dasdhjsadjka');
+ expect(ConvertUtil.parseString(123), '123');
+ expect(ConvertUtil.parseString(true), 'true');
+ expect(ConvertUtil.parseString(0.123), '0.123');
+ expect(ConvertUtil.parseString('null'), 'null');
+ });
+ test('parseString should parse invalid values as null', () {
+ expect(ConvertUtil.parseString(const Locale('test')), null);
+ expect(ConvertUtil.parseString({'test': 5}), null);
+ });
- test('parseMaterialColor should parse valid values correctly', () {
- expect(ConvertUtil.parseColor(Colors.deepOrange), Colors.deepOrange);
- expect(ConvertUtil.parseColor(Colors.grey)?.value, Colors.grey.value);
- expect(ConvertUtil.parseColor(Colors.grey.value)?.value, Colors.grey.value);
- expect(ConvertUtil.parseColor(Colors.deepOrange.value)?.value, Colors.deepOrange.value);
- expect(ConvertUtil.parseColor(0xff000000)?.value, 0xff000000);
- expect(ConvertUtil.parseColor('0x00ff0000')?.value, 0x00ff0000);
- expect(ConvertUtil.parseColor(const Color(0x00ff0000))?.value, 0x00ff0000);
- });
- test('parseMaterialColor should parse invalid values as null', () {
- expect(ConvertUtil.parseColor('test'), null);
- expect(ConvertUtil.parseString({'test': 5}), null);
- });
+ test('parseMaterialColor should parse valid values correctly', () {
+ expect(ConvertUtil.parseColor(Colors.deepOrange), Colors.deepOrange);
+ expect(ConvertUtil.parseColor(Colors.grey)?.value, Colors.grey.value);
+ expect(ConvertUtil.parseColor(Colors.grey.value)?.value, Colors.grey.value);
+ expect(ConvertUtil.parseColor(Colors.deepOrange.value)?.value, Colors.deepOrange.value);
+ expect(ConvertUtil.parseColor(0xff000000)?.value, 0xff000000);
+ expect(ConvertUtil.parseColor('0x00ff0000')?.value, 0x00ff0000);
+ expect(ConvertUtil.parseColor(const Color(0x00ff0000))?.value, 0x00ff0000);
+ });
+ test('parseMaterialColor should parse invalid values as null', () {
+ expect(ConvertUtil.parseColor('test'), null);
+ expect(ConvertUtil.parseString({'test': 5}), null);
+ });
- test('parseLocale should not crash', () {
- expect(ConvertUtil.parseLocale(const Locale('test')), const Locale('test'));
- expect(ConvertUtil.parseLocale('DE'), const Locale('DE'));
- expect(ConvertUtil.parseLocale(15), null);
- expect(ConvertUtil.parseLocale(false), null);
- expect(ConvertUtil.parseLocale('123'), const Locale('123'));
- });
- test('parseLocale should return null for string "NULL"', () {
- expect(ConvertUtil.parseLocale('NULL'), null);
- expect(ConvertUtil.parseLocale('null'), null);
- expect(ConvertUtil.parseLocale('NuLl'), null);
- });
+ test('parseLocale should not crash', () {
+ expect(ConvertUtil.parseLocale(const Locale('test')), const Locale('test'));
+ expect(ConvertUtil.parseLocale('DE'), const Locale('DE'));
+ expect(ConvertUtil.parseLocale(15), null);
+ expect(ConvertUtil.parseLocale(false), null);
+ expect(ConvertUtil.parseLocale('123'), const Locale('123'));
+ });
+ test('parseLocale should return null for string "NULL"', () {
+ expect(ConvertUtil.parseLocale('NULL'), null);
+ expect(ConvertUtil.parseLocale('null'), null);
+ expect(ConvertUtil.parseLocale('NuLl'), null);
+ });
- test('parseList should convert valid values correctly', () {
- expect(ConvertUtil.parseList<int>([1234,567,89,0]), [1234,567,89,0]);
- expect(ConvertUtil.parseList<String>(['1234','567','89','0', 'test']), ['1234','567','89','0', 'test']);
- expect(ConvertUtil.parseList<String>(<dynamic>['1234','567','89','0', 'test']), ['1234','567','89','0', 'test']);
- expect(ConvertUtil.parseList<String>([]), []);
- });
- test('parseList should parse invalid values as null', () {
- expect(ConvertUtil.parseList<int>(['1234','567','89','0', 'test']), null);
- expect(ConvertUtil.parseList<String>({'test': 5}), null);
- expect(ConvertUtil.parseList<String>([1234,567,89,0]), null);
- expect(ConvertUtil.parseList<String>('tests'), null);
- });
+ test('parseList should convert valid values correctly', () {
+ expect(ConvertUtil.parseList<int>([1234,567,89,0]), [1234,567,89,0]);
+ expect(ConvertUtil.parseList<String>(['1234','567','89','0', 'test']), ['1234','567','89','0', 'test']);
+ expect(ConvertUtil.parseList<String>(<dynamic>['1234','567','89','0', 'test']), ['1234','567','89','0', 'test']);
+ expect(ConvertUtil.parseList<String>([]), []);
+ });
+ test('parseList should parse invalid values as null', () {
+ expect(ConvertUtil.parseList<int>(['1234','567','89','0', 'test']), null);
+ expect(ConvertUtil.parseList<String>({'test': 5}), null);
+ expect(ConvertUtil.parseList<String>([1234,567,89,0]), null);
+ expect(ConvertUtil.parseList<String>('tests'), null);
+ });
- test('parseThemeMode should convert values correctly', () {
- expect(ConvertUtil.parseThemeMode(ThemeMode.system.serialize()), ThemeMode.system);
- expect(ConvertUtil.parseThemeMode(ThemeMode.dark.serialize()), ThemeMode.dark);
- expect(ConvertUtil.parseThemeMode(ThemeMode.light.serialize()), ThemeMode.light);
- expect(ConvertUtil.parseThemeMode(null), null);
- });
+ test('parseThemeMode should convert values correctly', () {
+ expect(ConvertUtil.parseThemeMode(ThemeMode.system.serialize()), ThemeMode.system);
+ expect(ConvertUtil.parseThemeMode(ThemeMode.dark.serialize()), ThemeMode.dark);
+ expect(ConvertUtil.parseThemeMode(ThemeMode.light.serialize()), ThemeMode.light);
+ expect(ConvertUtil.parseThemeMode(null), null);
});
}
test/model/intervall_store_test.dart
@@ -4,98 +4,96 @@ import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
- group('IntervallStorage', () {
- test('base constructor should initialize with values', () {
- final storageObject = IntervallStorage(stepSize: TimeStep.month, range: DateTimeRange(
- start: DateTime.fromMillisecondsSinceEpoch(1234),
- end: DateTime.fromMillisecondsSinceEpoch(5678),
- ),);
+ test('base constructor should initialize with values', () {
+ final storageObject = IntervallStorage(stepSize: TimeStep.month, range: DateTimeRange(
+ start: DateTime.fromMillisecondsSinceEpoch(1234),
+ end: DateTime.fromMillisecondsSinceEpoch(5678),
+ ),);
- expect(storageObject.stepSize, TimeStep.month);
- expect(storageObject.currentRange.start.millisecondsSinceEpoch, 1234);
- expect(storageObject.currentRange.end.millisecondsSinceEpoch, 5678);
- });
+ expect(storageObject.stepSize, TimeStep.month);
+ expect(storageObject.currentRange.start.millisecondsSinceEpoch, 1234);
+ expect(storageObject.currentRange.end.millisecondsSinceEpoch, 5678);
+ });
- test('base constructor should initialize to default without values', () {
- final storageObject = IntervallStorage();
- expect(storageObject.stepSize, TimeStep.last7Days);
- expect(storageObject.currentRange.start.millisecondsSinceEpoch, lessThanOrEqualTo(DateTime
- .now()
- .millisecondsSinceEpoch,),);
- });
+ test('base constructor should initialize to default without values', () {
+ final storageObject = IntervallStorage();
+ expect(storageObject.stepSize, TimeStep.last7Days);
+ expect(storageObject.currentRange.start.millisecondsSinceEpoch, lessThanOrEqualTo(DateTime
+ .now()
+ .millisecondsSinceEpoch,),);
+ });
- test('base constructor should initialize with only incomplete parameters', () {
- // only tests for no crashes
- IntervallStorage(stepSize: TimeStep.last30Days);
- IntervallStorage(range: DateTimeRange(
- start: DateTime.fromMillisecondsSinceEpoch(1234),
- end: DateTime.fromMillisecondsSinceEpoch(5678),
- ),);
- });
+ test('base constructor should initialize with only incomplete parameters', () {
+ // only tests for no crashes
+ IntervallStorage(stepSize: TimeStep.last30Days);
+ IntervallStorage(range: DateTimeRange(
+ start: DateTime.fromMillisecondsSinceEpoch(1234),
+ end: DateTime.fromMillisecondsSinceEpoch(5678),
+ ),);
+ });
- test('intervall lengths should match step size', () {
- final dayIntervall = IntervallStorage(stepSize: TimeStep.day);
- final weekIntervall = IntervallStorage(stepSize: TimeStep.week);
- final monthIntervall = IntervallStorage(stepSize: TimeStep.month);
- final yearIntervall = IntervallStorage(stepSize: TimeStep.year);
- final last7DaysIntervall = IntervallStorage(stepSize: TimeStep.last7Days);
- final last30DaysIntervall = IntervallStorage(stepSize: TimeStep.last30Days);
-
- expect(dayIntervall.currentRange.duration.inHours, 24);
- expect(weekIntervall.currentRange.duration.inDays, 7);
- expect(monthIntervall.currentRange.duration.inDays, inInclusiveRange(28, 31));
- expect(yearIntervall.currentRange.duration.inDays, inInclusiveRange(365, 366));
- expect(last7DaysIntervall.currentRange.duration.inDays, 7);
- expect(last30DaysIntervall.currentRange.duration.inDays, 30);
- });
+ test('intervall lengths should match step size', () {
+ final dayIntervall = IntervallStorage(stepSize: TimeStep.day);
+ final weekIntervall = IntervallStorage(stepSize: TimeStep.week);
+ final monthIntervall = IntervallStorage(stepSize: TimeStep.month);
+ final yearIntervall = IntervallStorage(stepSize: TimeStep.year);
+ final last7DaysIntervall = IntervallStorage(stepSize: TimeStep.last7Days);
+ final last30DaysIntervall = IntervallStorage(stepSize: TimeStep.last30Days);
+
+ expect(dayIntervall.currentRange.duration.inHours, 24);
+ expect(weekIntervall.currentRange.duration.inDays, 7);
+ expect(monthIntervall.currentRange.duration.inDays, inInclusiveRange(28, 31));
+ expect(yearIntervall.currentRange.duration.inDays, inInclusiveRange(365, 366));
+ expect(last7DaysIntervall.currentRange.duration.inDays, 7);
+ expect(last30DaysIntervall.currentRange.duration.inDays, 30);
+ });
- test('intervall lengths should still be correct after moving', () {
- final dayIntervall = IntervallStorage(stepSize: TimeStep.day);
- final weekIntervall = IntervallStorage(stepSize: TimeStep.week);
- final monthIntervall = IntervallStorage(stepSize: TimeStep.month);
- final yearIntervall = IntervallStorage(stepSize: TimeStep.year);
- final last7DaysIntervall = IntervallStorage(stepSize: TimeStep.last7Days);
- final last30DaysIntervall = IntervallStorage(stepSize: TimeStep.last30Days);
- final customIntervall = IntervallStorage(stepSize: TimeStep.custom, range: DateTimeRange(
- start: DateTime.fromMillisecondsSinceEpoch(1234),
- end: DateTime.fromMillisecondsSinceEpoch(1234 + 24 * 60 * 60 * 1000), // one day
- ),);
+ test('intervall lengths should still be correct after moving', () {
+ final dayIntervall = IntervallStorage(stepSize: TimeStep.day);
+ final weekIntervall = IntervallStorage(stepSize: TimeStep.week);
+ final monthIntervall = IntervallStorage(stepSize: TimeStep.month);
+ final yearIntervall = IntervallStorage(stepSize: TimeStep.year);
+ final last7DaysIntervall = IntervallStorage(stepSize: TimeStep.last7Days);
+ final last30DaysIntervall = IntervallStorage(stepSize: TimeStep.last30Days);
+ final customIntervall = IntervallStorage(stepSize: TimeStep.custom, range: DateTimeRange(
+ start: DateTime.fromMillisecondsSinceEpoch(1234),
+ end: DateTime.fromMillisecondsSinceEpoch(1234 + 24 * 60 * 60 * 1000), // one day
+ ),);
- expect(customIntervall.currentRange.duration.inMilliseconds, 24 * 60 * 60 * 1000);
+ expect(customIntervall.currentRange.duration.inMilliseconds, 24 * 60 * 60 * 1000);
- dayIntervall.moveDataRangeByStep(1);
- weekIntervall.moveDataRangeByStep(1);
- monthIntervall.moveDataRangeByStep(1);
- yearIntervall.moveDataRangeByStep(1);
- last7DaysIntervall.moveDataRangeByStep(1);
- last30DaysIntervall.moveDataRangeByStep(1);
- customIntervall.moveDataRangeByStep(1);
+ dayIntervall.moveDataRangeByStep(1);
+ weekIntervall.moveDataRangeByStep(1);
+ monthIntervall.moveDataRangeByStep(1);
+ yearIntervall.moveDataRangeByStep(1);
+ last7DaysIntervall.moveDataRangeByStep(1);
+ last30DaysIntervall.moveDataRangeByStep(1);
+ customIntervall.moveDataRangeByStep(1);
- expect(dayIntervall.currentRange.duration.inHours, 24);
- expect(weekIntervall.currentRange.duration.inDays, 7);
- expect(monthIntervall.currentRange.duration.inDays, inInclusiveRange(28, 31));
- expect(yearIntervall.currentRange.duration.inDays, inInclusiveRange(365, 366));
- expect(last7DaysIntervall.currentRange.duration.inDays, 7);
- expect(last30DaysIntervall.currentRange.duration.inDays, 30);
- expect(customIntervall.currentRange.duration.inMilliseconds, 24 * 60 * 60 * 1000);
+ expect(dayIntervall.currentRange.duration.inHours, 24);
+ expect(weekIntervall.currentRange.duration.inDays, 7);
+ expect(monthIntervall.currentRange.duration.inDays, inInclusiveRange(28, 31));
+ expect(yearIntervall.currentRange.duration.inDays, inInclusiveRange(365, 366));
+ expect(last7DaysIntervall.currentRange.duration.inDays, 7);
+ expect(last30DaysIntervall.currentRange.duration.inDays, 30);
+ expect(customIntervall.currentRange.duration.inMilliseconds, 24 * 60 * 60 * 1000);
- dayIntervall.moveDataRangeByStep(-2);
- weekIntervall.moveDataRangeByStep(-2);
- monthIntervall.moveDataRangeByStep(-2);
- yearIntervall.moveDataRangeByStep(-2);
- last7DaysIntervall.moveDataRangeByStep(-2);
- last30DaysIntervall.moveDataRangeByStep(-2);
- customIntervall.moveDataRangeByStep(-2);
+ dayIntervall.moveDataRangeByStep(-2);
+ weekIntervall.moveDataRangeByStep(-2);
+ monthIntervall.moveDataRangeByStep(-2);
+ yearIntervall.moveDataRangeByStep(-2);
+ last7DaysIntervall.moveDataRangeByStep(-2);
+ last30DaysIntervall.moveDataRangeByStep(-2);
+ customIntervall.moveDataRangeByStep(-2);
- expect(dayIntervall.currentRange.duration.inHours, 24);
- expect(weekIntervall.currentRange.duration.inDays, 7);
- expect(monthIntervall.currentRange.duration.inDays, inInclusiveRange(28, 31));
- expect(yearIntervall.currentRange.duration.inDays, inInclusiveRange(365, 366));
- expect(last7DaysIntervall.currentRange.duration.inDays, 7);
- expect(last30DaysIntervall.currentRange.duration.inDays, 30);
- expect(customIntervall.currentRange.duration.inMilliseconds, 24 * 60 * 60 * 1000);
- });
+ expect(dayIntervall.currentRange.duration.inHours, 24);
+ expect(weekIntervall.currentRange.duration.inDays, 7);
+ expect(monthIntervall.currentRange.duration.inDays, inInclusiveRange(28, 31));
+ expect(yearIntervall.currentRange.duration.inDays, inInclusiveRange(365, 366));
+ expect(last7DaysIntervall.currentRange.duration.inDays, 7);
+ expect(last30DaysIntervall.currentRange.duration.inDays, 30);
+ expect(customIntervall.currentRange.duration.inMilliseconds, 24 * 60 * 60 * 1000);
});
}
test/model/iso_lang_names_test.dart
@@ -4,38 +4,36 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
- group('getDisplayLanguage', () {
- test('should have unique names for all languages provided in localizations', () {
- final allNames = <String>[];
- for (final locale in AppLocalizations.supportedLocales) {
- final name = getDisplayLanguage(locale);
- expect(allNames, isNot(contains(name)));
- allNames.add(name);
- }
- });
- test('should start all names in upper case', () {
- for (final locale in AppLocalizations.supportedLocales) {
- final firstChar = getDisplayLanguage(locale)[0];
- expect(firstChar, equals(firstChar.toUpperCase()));
- }
- });
- test('should not store names where no localization present', () {
- final tmp = debugPrint;
- int printCounts = 0;
- debugPrint = (String? s, {int? wrapWidth}) {
- printCounts += 1;
- };
- for (final c1 in 'abcdefghijklmnopqrstuvwxyz'.characters) {
- for (final c2 in 'abcdefghijklmnopqrstuvwxyz'.characters) {
- if (AppLocalizations.supportedLocales.where(
- (e) => e.toLanguageTag() == '$c1$c2',).isNotEmpty) continue;
- expect(() => getDisplayLanguage(Locale('$c1$c2')),
- throwsAssertionError,);
- expect(printCounts, greaterThan(1));
- printCounts = 0;
- }
+ test('should have unique names for all languages provided in localizations', () {
+ final allNames = <String>[];
+ for (final locale in AppLocalizations.supportedLocales) {
+ final name = getDisplayLanguage(locale);
+ expect(allNames, isNot(contains(name)));
+ allNames.add(name);
+ }
+ });
+ test('should start all names in upper case', () {
+ for (final locale in AppLocalizations.supportedLocales) {
+ final firstChar = getDisplayLanguage(locale)[0];
+ expect(firstChar, equals(firstChar.toUpperCase()));
+ }
+ });
+ test('should not store names where no localization present', () {
+ final tmp = debugPrint;
+ int printCounts = 0;
+ debugPrint = (String? s, {int? wrapWidth}) {
+ printCounts += 1;
+ };
+ for (final c1 in 'abcdefghijklmnopqrstuvwxyz'.characters) {
+ for (final c2 in 'abcdefghijklmnopqrstuvwxyz'.characters) {
+ if (AppLocalizations.supportedLocales.where(
+ (e) => e.toLanguageTag() == '$c1$c2',).isNotEmpty) continue;
+ expect(() => getDisplayLanguage(Locale('$c1$c2')),
+ throwsAssertionError,);
+ expect(printCounts, greaterThan(1));
+ printCounts = 0;
}
- debugPrint = tmp;
- });
+ }
+ debugPrint = tmp;
});
}