mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00

This adds a smoke test for every single API example. It also fixes 17 tests that had bugs in them, or were otherwise broken, and even fixes one actual bug in the framework, and one limitation in the framework. The bug in the framework is that NetworkImage's _loadAsync method had await response.drain<List<int>>();, but if the response is null, it will throw a cryptic exception saying that Null can't be assigned to List<int>. The fix was just to use await response.drain<void>(); instead. The limitation is that RelativePositionedTransition takes an Animation<Rect> rect parameter, and if you want to use a RectTween with it, the value emitted there is Rect?, and one of the examples was just casting from Animation<Rect> to Animation<Rect?>, which is invalid, so I modified RelativePositionedTransition to take a Rect? and just use Rect.zero if the rect is null.
68 lines
1.8 KiB
Dart
68 lines
1.8 KiB
Dart
// 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 'dart:async';
|
|
import 'dart:io';
|
|
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
import '../../../packages/flutter/test/image_data.dart';
|
|
|
|
// Returns a mock HTTP client that responds with an image to all requests.
|
|
FakeHttpClient createMockImageHttpClient(SecurityContext? _) {
|
|
final FakeHttpClient client = FakeHttpClient();
|
|
return client;
|
|
}
|
|
|
|
class FakeHttpClient extends Fake implements HttpClient {
|
|
FakeHttpClient([this.context]);
|
|
|
|
SecurityContext? context;
|
|
|
|
@override
|
|
bool autoUncompress = false;
|
|
|
|
final FakeHttpClientRequest request = FakeHttpClientRequest();
|
|
|
|
@override
|
|
Future<HttpClientRequest> getUrl(Uri url) async {
|
|
return request;
|
|
}
|
|
}
|
|
|
|
class FakeHttpClientRequest extends Fake implements HttpClientRequest {
|
|
final FakeHttpClientResponse response = FakeHttpClientResponse();
|
|
|
|
@override
|
|
Future<HttpClientResponse> close() async {
|
|
return response;
|
|
}
|
|
}
|
|
|
|
class FakeHttpClientResponse extends Fake implements HttpClientResponse {
|
|
@override
|
|
int get statusCode => 200;
|
|
|
|
@override
|
|
int get contentLength => kTransparentImage.length;
|
|
|
|
@override
|
|
final FakeHttpHeaders headers = FakeHttpHeaders();
|
|
|
|
@override
|
|
HttpClientResponseCompressionState get compressionState => HttpClientResponseCompressionState.notCompressed;
|
|
|
|
@override
|
|
StreamSubscription<List<int>> listen(void Function(List<int>)? onData, {
|
|
void Function()? onDone,
|
|
Function? onError,
|
|
bool? cancelOnError,
|
|
}) {
|
|
return Stream<List<int>>.fromIterable(<List<int>>[kTransparentImage])
|
|
.listen(onData, onDone: onDone, onError: onError, cancelOnError: cancelOnError);
|
|
}
|
|
}
|
|
|
|
class FakeHttpHeaders extends Fake implements HttpHeaders { }
|