blob: d09c799baeeb614044897c4d705518c279ae5a18 [file] [log] [blame]
// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. 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:analyzer_plugin/protocol/protocol.dart';
import 'package:test/test.dart';
/// A [Matcher] that check that the given [Response] has an expected identifier
/// and no error.
Matcher isResponseSuccess(String id) => _IsResponseSuccess(id);
/// A [Matcher] that check that there are no `error` in a given [Response].
class _IsResponseSuccess extends Matcher {
final String _id;
_IsResponseSuccess(this._id);
@override
Description describe(Description description) {
return description
.addDescriptionOf('response with identifier "$_id" and without error');
}
@override
Description describeMismatch(
item, Description mismatchDescription, Map matchState, bool verbose) {
Response? response = item as Response?;
if (response == null) {
mismatchDescription.add('is null response');
} else {
var id = response.id;
var error = response.error;
mismatchDescription.add('has identifier "$id"');
if (error != null) {
mismatchDescription.add(' and has error $error');
}
}
return mismatchDescription;
}
@override
bool matches(item, Map matchState) {
Response? response = item as Response?;
return response != null && response.id == _id && response.error == null;
}
}