blob: ebbe0d780c9415a168a3fef86801b148dffa280b [file] [log] [blame]
// 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}')));
});
});
}