diff --git a/packages/stream_chat_flutter/lib/src/theme/avatar_theme.dart b/packages/stream_chat_flutter/lib/src/theme/avatar_theme.dart index 873bd259..7af1b976 100644 --- a/packages/stream_chat_flutter/lib/src/theme/avatar_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/avatar_theme.dart @@ -56,7 +56,7 @@ class AvatarTheme extends InheritedTheme { /// the default style for [UserAvatar]s below the overall [StreamChatTheme]. class AvatarThemeData with Diagnosticable { /// Creates an [AvatarThemeData]. - AvatarThemeData({ + const AvatarThemeData({ BoxConstraints? constraints, BorderRadius? borderRadius, }) : _constraints = constraints, diff --git a/packages/stream_chat_flutter/test/src/avatar_theme_test.dart b/packages/stream_chat_flutter/test/src/avatar_theme_test.dart new file mode 100644 index 00000000..63e6da86 --- /dev/null +++ b/packages/stream_chat_flutter/test/src/avatar_theme_test.dart @@ -0,0 +1,50 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; + +void main() { + test('AvatarThemeData copyWith, ==, hashCode basics', () { + expect(const AvatarThemeData(), const AvatarThemeData().copyWith()); + expect(const AvatarThemeData().hashCode, + const AvatarThemeData().copyWith().hashCode); + }); + + group('AvatarThemeData lerps correctly', () { + test('Lerp completely', () { + expect( + const AvatarThemeData() + .lerp(_avatarThemeDataControl1, _avatarThemeDataControl2, 1), + _avatarThemeDataControl2); + }); + + test('Lerp halfway', () { + expect( + const AvatarThemeData() + .lerp(_avatarThemeDataControl1, _avatarThemeDataControl2, 0.5), + _avatarThemeDataControlMidLerp); + }); + }); + + test('Merging two AvatarThemeData results in the latter', () { + expect(_avatarThemeDataControl1.merge(_avatarThemeDataControl2), + _avatarThemeDataControl2); + }); +} + +const _avatarThemeDataControl1 = AvatarThemeData(); + +final _avatarThemeDataControlMidLerp = AvatarThemeData( + borderRadius: BorderRadius.circular(16), + constraints: const BoxConstraints.tightFor( + height: 33, + width: 33, + ), +); + +final _avatarThemeDataControl2 = AvatarThemeData( + borderRadius: BorderRadius.circular(12), + constraints: const BoxConstraints.tightFor( + height: 34, + width: 34, + ), +);