// 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.

// @dart = 2.8

import 'dart:async';
import 'dart:typed_data';

import 'package:flutter/painting.dart';
import 'package:flutter_test/flutter_test.dart';

import '../image_data.dart';
import '../rendering/rendering_tester.dart';

void main() {
  TestRenderingFlutterBinding();

  test('Clearing images while they\'re pending does not crash', () async {
    final Uint8List bytes = Uint8List.fromList(kTransparentImage);
    final MemoryImage memoryImage = MemoryImage(bytes);
    final ImageStream stream = memoryImage.resolve(ImageConfiguration.empty);
    final Completer<void> completer = Completer<void>();
    FlutterError.onError = (FlutterErrorDetails error) { completer.completeError(error.exception, error.stack); };
    stream.addListener(ImageStreamListener(
      (ImageInfo image, bool synchronousCall) {
        completer.complete();
      }
    ));
    imageCache.clearLiveImages();
    await completer.future;
  });
}
