| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'package:flutter/material.dart'; |
| import 'package:flutter_test/flutter_test.dart'; |
| |
| |
| void main() { |
| test('MaterialStateProperty.resolveWith()', () { |
| final MaterialStateProperty<MaterialState> value = MaterialStateProperty.resolveWith<MaterialState>( |
| (Set<MaterialState> states) => states.first, |
| ); |
| expect(value.resolve(<MaterialState>{MaterialState.hovered}), MaterialState.hovered); |
| expect(value.resolve(<MaterialState>{MaterialState.focused}), MaterialState.focused); |
| expect(value.resolve(<MaterialState>{MaterialState.pressed}), MaterialState.pressed); |
| expect(value.resolve(<MaterialState>{MaterialState.dragged}), MaterialState.dragged); |
| expect(value.resolve(<MaterialState>{MaterialState.selected}), MaterialState.selected); |
| expect(value.resolve(<MaterialState>{MaterialState.disabled}), MaterialState.disabled); |
| expect(value.resolve(<MaterialState>{MaterialState.error}), MaterialState.error); |
| }); |
| |
| test('MaterialStateProperty.all()', () { |
| final MaterialStateProperty<int> value = MaterialStateProperty.all<int>(123); |
| expect(value.resolve(<MaterialState>{MaterialState.hovered}), 123); |
| expect(value.resolve(<MaterialState>{MaterialState.focused}), 123); |
| expect(value.resolve(<MaterialState>{MaterialState.pressed}), 123); |
| expect(value.resolve(<MaterialState>{MaterialState.dragged}), 123); |
| expect(value.resolve(<MaterialState>{MaterialState.selected}), 123); |
| expect(value.resolve(<MaterialState>{MaterialState.disabled}), 123); |
| expect(value.resolve(<MaterialState>{MaterialState.error}), 123); |
| }); |
| |
| test('MaterialStatePropertyAll', () { |
| const MaterialStatePropertyAll<int> value = MaterialStatePropertyAll<int>(123); |
| expect(value.resolve(<MaterialState>{}), 123); |
| expect(value.resolve(<MaterialState>{MaterialState.hovered}), 123); |
| expect(value.resolve(<MaterialState>{MaterialState.focused}), 123); |
| expect(value.resolve(<MaterialState>{MaterialState.pressed}), 123); |
| expect(value.resolve(<MaterialState>{MaterialState.dragged}), 123); |
| expect(value.resolve(<MaterialState>{MaterialState.selected}), 123); |
| expect(value.resolve(<MaterialState>{MaterialState.disabled}), 123); |
| expect(value.resolve(<MaterialState>{MaterialState.error}), 123); |
| }); |
| |
| test('toString formats correctly', () { |
| const MaterialStateProperty<Color?> colorProperty = MaterialStatePropertyAll<Color?>(Color(0xFFFFFFFF)); |
| expect(colorProperty.toString(), equals('MaterialStatePropertyAll(Color(0xffffffff))')); |
| |
| const MaterialStateProperty<double?> doubleProperty = MaterialStatePropertyAll<double?>(33 + 1/3); |
| expect(doubleProperty.toString(), equals('MaterialStatePropertyAll(33.3)')); |
| }); |
| |
| test("Can interpolate between two MaterialStateProperty's", () { |
| const MaterialStateProperty<TextStyle?> textStyle1 = MaterialStatePropertyAll<TextStyle?>( |
| TextStyle(fontSize: 14.0), |
| ); |
| const MaterialStateProperty<TextStyle?> textStyle2 = MaterialStatePropertyAll<TextStyle?>( |
| TextStyle(fontSize: 20.0), |
| ); |
| |
| // Using `0.0` interpolation value. |
| TextStyle textStyle = MaterialStateProperty.lerp<TextStyle?>( |
| textStyle1, |
| textStyle2, |
| 0.0, |
| TextStyle.lerp, |
| )!.resolve(enabled)!; |
| expect(textStyle.fontSize, 14.0); |
| |
| // Using `0.5` interpolation value. |
| textStyle = MaterialStateProperty.lerp<TextStyle?>( |
| textStyle1, |
| textStyle2, |
| 0.5, |
| TextStyle.lerp, |
| )!.resolve(enabled)!; |
| expect(textStyle.fontSize, 17.0); |
| |
| // Using `1.0` interpolation value. |
| textStyle = MaterialStateProperty.lerp<TextStyle?>( |
| textStyle1, |
| textStyle2, |
| 1.0, |
| TextStyle.lerp, |
| )!.resolve(enabled)!; |
| expect(textStyle.fontSize, 20.0); |
| }); |
| } |
| |
| Set<MaterialState> enabled = <MaterialState>{}; |