| // 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_driver/src/common/wait.dart'; |
| |
| import '../../common.dart'; |
| |
| void main() { |
| group('WaitForCondition', () { |
| test('WaitForCondition serialize', () { |
| expect( |
| const WaitForCondition(NoTransientCallbacks()).serialize(), |
| <String, String>{'command': 'waitForCondition', 'conditionName': 'NoTransientCallbacksCondition'}); |
| }); |
| |
| test('WaitForCondition serialize with timeout', () { |
| expect( |
| const WaitForCondition(NoTransientCallbacks(), timeout: Duration(milliseconds: 10)).serialize(), |
| <String, String>{'command': 'waitForCondition', 'timeout': '10', 'conditionName': 'NoTransientCallbacksCondition'}); |
| }); |
| |
| test('WaitForCondition deserialize', () { |
| final Map<String, String> jsonMap = <String, String>{ |
| 'command': 'waitForCondition', |
| 'conditionName': 'NoTransientCallbacksCondition', |
| }; |
| final WaitForCondition waitForCondition = WaitForCondition.deserialize(jsonMap); |
| expect(waitForCondition.kind, 'waitForCondition'); |
| expect(waitForCondition.condition, equals(const NoTransientCallbacks())); |
| }); |
| |
| test('WaitForCondition deserialize with timeout', () { |
| final Map<String, String> jsonMap = <String, String>{ |
| 'command': 'waitForCondition', |
| 'timeout': '10', |
| 'conditionName': 'NoTransientCallbacksCondition', |
| }; |
| final WaitForCondition waitForCondition = WaitForCondition.deserialize(jsonMap); |
| expect(waitForCondition.kind, 'waitForCondition'); |
| expect(waitForCondition.condition, equals(const NoTransientCallbacks())); |
| expect(waitForCondition.timeout, equals(const Duration(milliseconds: 10))); |
| }); |
| |
| test('WaitForCondition requiresRootWidget', () { |
| expect( |
| const WaitForCondition(NoTransientCallbacks()) |
| .requiresRootWidgetAttached, |
| isTrue); |
| expect( |
| const WaitForCondition(FirstFrameRasterized()) |
| .requiresRootWidgetAttached, |
| isFalse); |
| }); |
| }); |
| |
| group('NoTransientCallbacksCondition', () { |
| test('NoTransientCallbacksCondition serialize', () { |
| expect( |
| const NoTransientCallbacks().serialize(), |
| <String, String>{'conditionName': 'NoTransientCallbacksCondition'}); |
| }); |
| |
| test('NoTransientCallbacksCondition deserialize', () { |
| final Map<String, String> jsonMap = <String, String>{ |
| 'conditionName': 'NoTransientCallbacksCondition', |
| }; |
| final NoTransientCallbacks condition = NoTransientCallbacks.deserialize(jsonMap); |
| expect(condition, equals(const NoTransientCallbacks())); |
| expect(condition.serialize(), equals(jsonMap)); |
| }); |
| |
| test('NoTransientCallbacksCondition deserialize error', () { |
| expect( |
| () => NoTransientCallbacks.deserialize(<String, String>{'conditionName': 'Unknown'}), |
| throwsA(predicate<SerializationException>((SerializationException e) => |
| e.message == 'Error occurred during deserializing the NoTransientCallbacksCondition JSON string: {conditionName: Unknown}'))); |
| }); |
| }); |
| |
| group('NoPendingFrameCondition', () { |
| test('NoPendingFrameCondition serialize', () { |
| expect(const NoPendingFrame().serialize(), <String, String>{ |
| 'conditionName': 'NoPendingFrameCondition', |
| }); |
| }); |
| |
| test('NoPendingFrameCondition deserialize', () { |
| final Map<String, String> jsonMap = <String, String>{ |
| 'conditionName': 'NoPendingFrameCondition', |
| }; |
| final NoPendingFrame condition = NoPendingFrame.deserialize(jsonMap); |
| expect(condition, equals(const NoPendingFrame())); |
| expect(condition.serialize(), equals(jsonMap)); |
| }); |
| |
| test('NoPendingFrameCondition deserialize error', () { |
| expect( |
| () => NoPendingFrame.deserialize(<String, String>{'conditionName': 'Unknown'}), |
| throwsA(predicate<SerializationException>((SerializationException e) => |
| e.message == 'Error occurred during deserializing the NoPendingFrameCondition JSON string: {conditionName: Unknown}'))); |
| }); |
| }); |
| |
| group('FirstFrameRasterizedCondition', () { |
| test('FirstFrameRasterizedCondition serialize', () { |
| expect( |
| const FirstFrameRasterized().serialize(), |
| <String, String>{'conditionName': 'FirstFrameRasterizedCondition'}); |
| }); |
| |
| test('FirstFrameRasterizedCondition deserialize', () { |
| final Map<String, String> jsonMap = <String, String>{ |
| 'conditionName': 'FirstFrameRasterizedCondition', |
| }; |
| final FirstFrameRasterized condition = FirstFrameRasterized.deserialize(jsonMap); |
| expect(condition, equals(const FirstFrameRasterized())); |
| expect(condition.serialize(), equals(jsonMap)); |
| }); |
| |
| test('FirstFrameRasterizedCondition deserialize error', () { |
| expect( |
| () => FirstFrameRasterized.deserialize(<String, String>{'conditionName': 'Unknown'}), |
| throwsA(predicate<SerializationException>((SerializationException e) => |
| e.message == 'Error occurred during deserializing the FirstFrameRasterizedCondition JSON string: {conditionName: Unknown}'))); |
| }); |
| |
| test('FirstFrameRasterizedCondition requiresRootWidget', () { |
| expect(const FirstFrameRasterized().requiresRootWidgetAttached, isFalse); |
| }); |
| }); |
| |
| group('CombinedCondition', () { |
| test('CombinedCondition serialize', () { |
| const CombinedCondition combinedCondition = |
| CombinedCondition(<SerializableWaitCondition>[ |
| NoTransientCallbacks(), |
| NoPendingFrame(), |
| ]); |
| |
| expect(combinedCondition.serialize(), <String, String>{ |
| 'conditionName': 'CombinedCondition', |
| 'conditions': |
| '[{"conditionName":"NoTransientCallbacksCondition"},{"conditionName":"NoPendingFrameCondition"}]', |
| }); |
| }); |
| |
| test('CombinedCondition serialize - empty condition list', () { |
| const CombinedCondition combinedCondition = CombinedCondition(<SerializableWaitCondition>[]); |
| |
| expect(combinedCondition.serialize(), <String, String>{ |
| 'conditionName': 'CombinedCondition', |
| 'conditions': '[]', |
| }); |
| }); |
| |
| test('CombinedCondition deserialize - empty condition list', () { |
| final Map<String, String> jsonMap = <String, String>{ |
| 'conditionName': 'CombinedCondition', |
| 'conditions': '[]', |
| }; |
| final CombinedCondition condition = CombinedCondition.deserialize(jsonMap); |
| expect(condition.conditions, equals(<SerializableWaitCondition>[])); |
| expect(condition.serialize(), equals(jsonMap)); |
| }); |
| |
| test('CombinedCondition deserialize', () { |
| final Map<String, String> jsonMap = <String, String>{ |
| 'conditionName': 'CombinedCondition', |
| 'conditions': |
| '[{"conditionName":"NoPendingFrameCondition"},{"conditionName":"NoTransientCallbacksCondition"}]', |
| }; |
| final CombinedCondition condition = |
| CombinedCondition.deserialize(jsonMap); |
| expect( |
| condition.conditions, |
| equals(<SerializableWaitCondition>[ |
| const NoPendingFrame(), |
| const NoTransientCallbacks(), |
| ])); |
| expect(condition.serialize(), jsonMap); |
| }); |
| |
| test('CombinedCondition deserialize - no condition list', () { |
| final CombinedCondition condition = |
| CombinedCondition.deserialize(<String, String>{'conditionName': 'CombinedCondition',}); |
| expect(condition.conditions, equals(<SerializableWaitCondition>[])); |
| expect(condition.serialize(), <String, String>{ |
| 'conditionName': 'CombinedCondition', |
| 'conditions': '[]', |
| }); |
| }); |
| |
| test('CombinedCondition deserialize error', () { |
| expect( |
| () => CombinedCondition.deserialize(<String, String>{'conditionName': 'Unknown'}), |
| throwsA(predicate<SerializationException>((SerializationException e) => |
| e.message == 'Error occurred during deserializing the CombinedCondition JSON string: {conditionName: Unknown}'))); |
| }); |
| |
| test('CombinedCondition deserialize error - Unknown condition type', () { |
| expect( |
| () { |
| return CombinedCondition.deserialize(<String, String>{ |
| 'conditionName': 'CombinedCondition', |
| 'conditions': |
| '[{"conditionName":"UnknownCondition"},{"conditionName":"NoTransientCallbacksCondition"}]', |
| }); |
| }, |
| throwsA(predicate<SerializationException>((SerializationException e) => |
| e.message == 'Unsupported wait condition UnknownCondition in the JSON string {conditionName: UnknownCondition}'))); |
| }); |
| }); |
| } |