From b5bd17522213503daf5e33fb9d09f384595f331f Mon Sep 17 00:00:00 2001 From: Benjamin Date: Thu, 23 Jan 2020 17:07:14 -0500 Subject: [PATCH] Added TimeOfDay and Color adapters & tests! --- lib/src/adapters/color_adapter.dart | 18 ++++++++++++++++++ lib/src/adapters/time_adapter.dart | 25 +++++++++++++++++++++++++ pubspec.yaml | 1 + test/color_adapter_test.dart | 29 +++++++++++++++++++++++++++++ test/mocks.dart | 6 ++++++ test/time_adapter_test.dart | 29 +++++++++++++++++++++++++++++ 6 files changed, 108 insertions(+) create mode 100644 lib/src/adapters/color_adapter.dart create mode 100644 lib/src/adapters/time_adapter.dart create mode 100644 test/color_adapter_test.dart create mode 100644 test/mocks.dart create mode 100644 test/time_adapter_test.dart diff --git a/lib/src/adapters/color_adapter.dart b/lib/src/adapters/color_adapter.dart new file mode 100644 index 0000000..d22bde5 --- /dev/null +++ b/lib/src/adapters/color_adapter.dart @@ -0,0 +1,18 @@ +import 'package:flutter/material.dart'; +import 'package:hive/hive.dart'; + +class ColorAdapter extends TypeAdapter { + @override + Color read(BinaryReader reader) { + final colorValue = reader.readInt(); + return Color(colorValue); + } + + @override + void write(BinaryWriter writer, Color obj) { + writer.writeInt(obj.value); + } + + @override + int get typeId => 200; +} diff --git a/lib/src/adapters/time_adapter.dart b/lib/src/adapters/time_adapter.dart new file mode 100644 index 0000000..d007781 --- /dev/null +++ b/lib/src/adapters/time_adapter.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; +import 'package:hive/hive.dart'; + +class TimeAdapter extends TypeAdapter { + @override + TimeOfDay read(BinaryReader reader) { + final string = reader.readString(); + final hourMinute = + string.substring(string.indexOf('(') + 1, string.length - 1).split(':'); + final hour = hourMinute[0]; + final minute = hourMinute[1]; + return TimeOfDay( + hour: int.parse(hour), + minute: int.parse(minute), + ); + } + + @override + void write(BinaryWriter writer, TimeOfDay obj) { + writer.writeString(obj.toString()); + } + + @override + int get typeId => 201; +} diff --git a/pubspec.yaml b/pubspec.yaml index 7cff295..f2aef95 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -17,5 +17,6 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter + mockito: pedantic: ">=1.8.0 <2.0.0" \ No newline at end of file diff --git a/test/color_adapter_test.dart b/test/color_adapter_test.dart new file mode 100644 index 0000000..03ba489 --- /dev/null +++ b/test/color_adapter_test.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:hive/hive.dart'; +import 'package:hive_flutter/src/adapters/color_adapter.dart'; +import 'package:mockito/mockito.dart'; + +import 'mocks.dart'; + +void main() { + group('ColorAdapter', () { + test('.read()', () { + const color = Color(0xFF000000); + final BinaryReader binaryReader = BinaryReaderMock(); + when(binaryReader.readInt()).thenReturn(color.value); + + final readColor = ColorAdapter().read(binaryReader); + verify(binaryReader.readInt()); + expect(readColor, readColor); + }); + + test('.write()', () { + const color = Color(0xFF000000); + final BinaryWriter binaryWriter = BinaryWriterMock(); + + ColorAdapter().write(binaryWriter, color); + verify(binaryWriter.writeInt(color.value)); + }); + }); +} \ No newline at end of file diff --git a/test/mocks.dart b/test/mocks.dart new file mode 100644 index 0000000..97b7e7d --- /dev/null +++ b/test/mocks.dart @@ -0,0 +1,6 @@ +import 'package:hive/hive.dart'; +import 'package:mockito/mockito.dart'; + +class BinaryReaderMock extends Mock implements BinaryReader {} + +class BinaryWriterMock extends Mock implements BinaryWriter {} \ No newline at end of file diff --git a/test/time_adapter_test.dart b/test/time_adapter_test.dart new file mode 100644 index 0000000..efe385e --- /dev/null +++ b/test/time_adapter_test.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:hive/hive.dart'; +import 'package:hive_flutter/src/adapters/time_adapter.dart'; +import 'package:mockito/mockito.dart'; + +import 'mocks.dart'; + +void main() { + group('TimeOfDayAdapter', () { + test('.read()', () { + final currentTime = TimeOfDay.now(); + final BinaryReader binaryReader = BinaryReaderMock(); + when(binaryReader.readString()).thenReturn(currentTime.toString()); + + final time = TimeAdapter().read(binaryReader); + verify(binaryReader.readString()); + expect(time, time); + }); + + test('.write()', () { + final currentTime = TimeOfDay.now(); + final BinaryWriter binaryWriter = BinaryWriterMock(); + + TimeAdapter().write(binaryWriter, currentTime); + verify(binaryWriter.writeString(currentTime.toString())); + }); + }); +} \ No newline at end of file