Navaron Bracke

add EmailType test

@@ -13,13 +13,14 @@ enum EmailType { @@ -13,13 +13,14 @@ enum EmailType {
13 13
14 factory EmailType.fromRawValue(int value) { 14 factory EmailType.fromRawValue(int value) {
15 switch (value) { 15 switch (value) {
  16 + case 0:
  17 + return EmailType.unknown;
16 case 1: 18 case 1:
17 return EmailType.work; 19 return EmailType.work;
18 case 2: 20 case 2:
19 return EmailType.home; 21 return EmailType.home;
20 - case 0:  
21 default: 22 default:
22 - return EmailType.unknown; 23 + throw ArgumentError.value(value, 'value', 'Invalid raw value.');
23 } 24 }
24 } 25 }
25 26
  1 +import 'package:flutter_test/flutter_test.dart';
  2 +import 'package:mobile_scanner/src/enums/email_type.dart';
  3 +
  4 +void main() {
  5 + group('$EmailType tests', () {
  6 + test('can be created from raw value', () {
  7 + const values = <int, EmailType>{
  8 + 0: EmailType.unknown,
  9 + 1: EmailType.work,
  10 + 2: EmailType.home,
  11 + };
  12 +
  13 + for (final MapEntry<int, EmailType> entry in values.entries) {
  14 + final EmailType result = EmailType.fromRawValue(entry.key);
  15 +
  16 + expect(result, entry.value);
  17 + }
  18 + });
  19 +
  20 + test('invalid raw value throws argument error', () {
  21 + const int negative = -1;
  22 + const int outOfRange = 3;
  23 +
  24 + expect(() => EmailType.fromRawValue(negative), throwsArgumentError);
  25 + expect(() => EmailType.fromRawValue(outOfRange), throwsArgumentError);
  26 + });
  27 +
  28 + test('can be converted to raw value', () {
  29 + const values = <EmailType, int>{
  30 + EmailType.unknown: 0,
  31 + EmailType.work: 1,
  32 + EmailType.home: 2,
  33 + };
  34 +
  35 + for (final MapEntry<EmailType, int> entry in values.entries) {
  36 + final int result = entry.key.rawValue;
  37 +
  38 + expect(result, entry.value);
  39 + }
  40 + });
  41 + });
  42 +}