main
  1import 'package:blood_pressure_app/model/storage/convert_util.dart';
  2import 'package:blood_pressure_app/model/storage/settings_store.dart';
  3import 'package:flutter/material.dart';
  4import 'package:flutter_test/flutter_test.dart';
  5
  6void main() {
  7  test('parseBool should parse valid boolean correctly', () {
  8    expect(ConvertUtil.parseBool(true), true);
  9    expect(ConvertUtil.parseBool(false), false);
 10    expect(ConvertUtil.parseBool(1), true);
 11    expect(ConvertUtil.parseBool(1.0), true);
 12    expect(ConvertUtil.parseBool(0), false);
 13    expect(ConvertUtil.parseBool(0.0), false);
 14    expect(ConvertUtil.parseBool('true'), true);
 15    expect(ConvertUtil.parseBool('false'), false);
 16  });
 17  test('parseBool should parse invalid values as null', () {
 18    expect(ConvertUtil.parseBool('test'), null);
 19    expect(ConvertUtil.parseBool(132), null);
 20    expect(ConvertUtil.parseBool(-1), null);
 21    expect(ConvertUtil.parseBool({'test': 5}), null);
 22    expect(ConvertUtil.parseBool(null), null);
 23    expect(ConvertUtil.parseBool(1.1), null);
 24  });
 25
 26  test('parseInt should parse valid values correctly', () {
 27    expect(ConvertUtil.parseInt(123), 123);
 28    expect(ConvertUtil.parseInt(534), 534);
 29    expect(ConvertUtil.parseInt(-1123), -1123);
 30    expect(ConvertUtil.parseInt(1.0), 1);
 31    expect(ConvertUtil.parseInt(0), 0);
 32    expect(ConvertUtil.parseInt('0'), 0);
 33    expect(ConvertUtil.parseInt('1321.0'), 1321);
 34    expect(ConvertUtil.parseInt('-1234'), -1234);
 35  });
 36  test('parseInt should parse invalid values as null', () {
 37    expect(ConvertUtil.parseInt('test'), null);
 38    expect(ConvertUtil.parseInt(true), null);
 39    expect(ConvertUtil.parseInt(1.2), null);
 40    expect(ConvertUtil.parseInt({'test': 5}), null);
 41    expect(ConvertUtil.parseInt(null), null);
 42    expect(ConvertUtil.parseInt('123test'), null);
 43  });
 44
 45  test('parseDouble should parse valid values correctly', () {
 46    expect(ConvertUtil.parseDouble(123.123), 123.123);
 47    expect(ConvertUtil.parseDouble(534), 534.0);
 48    expect(ConvertUtil.parseDouble(-1123.543), -1123.543);
 49    expect(ConvertUtil.parseDouble(1.0), 1.0);
 50    expect(ConvertUtil.parseDouble(0.0), 0.0);
 51    expect(ConvertUtil.parseDouble('0'), 0.0);
 52    expect(ConvertUtil.parseDouble('1321.1234'), 1321.1234);
 53    expect(ConvertUtil.parseDouble('-1234.654'), -1234.654);
 54  });
 55  test('parseDouble should parse invalid values as null', () {
 56    expect(ConvertUtil.parseDouble('test'), null);
 57    expect(ConvertUtil.parseDouble(true), null);
 58    expect(ConvertUtil.parseDouble({'test': 5}), null);
 59    expect(ConvertUtil.parseDouble(null), null);
 60    expect(ConvertUtil.parseDouble('123test'), null);
 61    expect(ConvertUtil.parseDouble('1234.1234.1234'), null);
 62  });
 63
 64  test('parseString should parse valid values correctly', () {
 65    expect(ConvertUtil.parseString('123.123'), '123.123');
 66    expect(ConvertUtil.parseString('dasdhjsadjka'), 'dasdhjsadjka');
 67    expect(ConvertUtil.parseString(123), '123');
 68    expect(ConvertUtil.parseString(true), 'true');
 69    expect(ConvertUtil.parseString(0.123), '0.123');
 70    expect(ConvertUtil.parseString('null'), 'null');
 71  });
 72  test('parseString should parse invalid values as null', () {
 73    expect(ConvertUtil.parseString(const Locale('test')), null);
 74    expect(ConvertUtil.parseString({'test': 5}), null);
 75  });
 76
 77  test('parseMaterialColor should parse valid values correctly', () {
 78    expect(ConvertUtil.parseColor(Colors.deepOrange), Colors.deepOrange);
 79    expect(ConvertUtil.parseColor(Colors.grey)?.toARGB32(), Colors.grey.toARGB32());
 80    expect(ConvertUtil.parseColor(Colors.grey.toARGB32())?.toARGB32(), Colors.grey.toARGB32());
 81    expect(ConvertUtil.parseColor(Colors.deepOrange.toARGB32())?.toARGB32(), Colors.deepOrange.toARGB32());
 82    expect(ConvertUtil.parseColor(0xff000000)?.toARGB32(), 0xff000000);
 83    expect(ConvertUtil.parseColor('0x00ff0000')?.toARGB32(), 0x00ff0000);
 84    expect(ConvertUtil.parseColor(const Color(0x00ff0000))?.toARGB32(), 0x00ff0000);
 85  });
 86  test('parseMaterialColor should parse invalid values as null', () {
 87    expect(ConvertUtil.parseColor('test'), null);
 88    expect(ConvertUtil.parseString({'test': 5}), null);
 89  });
 90
 91  test('parseLocale should not crash', () {
 92    expect(ConvertUtil.parseLocale(const Locale('test')), const Locale('test'));
 93    expect(ConvertUtil.parseLocale('DE'), const Locale('DE'));
 94    expect(ConvertUtil.parseLocale(15), null);
 95    expect(ConvertUtil.parseLocale(false), null);
 96    expect(ConvertUtil.parseLocale('123'), const Locale('123'));
 97  });
 98  test('parseLocale should return null for string "NULL"', () {
 99    expect(ConvertUtil.parseLocale('NULL'), null);
100    expect(ConvertUtil.parseLocale('null'), null);
101    expect(ConvertUtil.parseLocale('NuLl'), null);
102  });
103
104  test('parseList should convert valid values correctly', () {
105    expect(ConvertUtil.parseList<int>([1234,567,89,0]), [1234,567,89,0]);
106    expect(ConvertUtil.parseList<String>(['1234','567','89','0', 'test']), ['1234','567','89','0', 'test']);
107    expect(ConvertUtil.parseList<String>(<dynamic>['1234','567','89','0', 'test']), ['1234','567','89','0', 'test']);
108    expect(ConvertUtil.parseList<String>([]), []);
109  });
110  test('parseList should parse invalid values as null', () {
111    expect(ConvertUtil.parseList<int>(['1234','567','89','0', 'test']), null);
112    expect(ConvertUtil.parseList<String>({'test': 5}), null);
113    expect(ConvertUtil.parseList<String>([1234,567,89,0]), null);
114    expect(ConvertUtil.parseList<String>('tests'), null);
115  });
116
117  test('parseThemeMode should convert values correctly', () {
118    expect(ConvertUtil.parseThemeMode(ThemeMode.system.serialize()), ThemeMode.system);
119    expect(ConvertUtil.parseThemeMode(ThemeMode.dark.serialize()), ThemeMode.dark);
120    expect(ConvertUtil.parseThemeMode(ThemeMode.light.serialize()), ThemeMode.light);
121    expect(ConvertUtil.parseThemeMode(null), null);
122  });
123}