binding_test.dart 1.73 KB
Newer Older
1 2 3 4 5 6 7
import 'dart:typed_data' show Uint8List;
import 'dart:ui' as ui show instantiateImageCodec, Codec;

import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter/painting.dart';
import 'package:flutter/foundation.dart';
8
import 'package:flutter/services.dart';
9 10 11

import '../painting/image_data.dart';

12
class PaintingBindingSpy extends BindingBase with ServicesBinding, PaintingBinding {
13 14 15 16 17 18
  int counter = 0;
  int get instantiateImageCodecCalledCount => counter;

  @override
  Future<ui.Codec> instantiateImageCodec(Uint8List list) {
    counter++;
19
    return ui.instantiateImageCodec(list, decodedCacheRatioCap: decodedCacheRatioCap); // ignore: deprecated_member_use_from_same_package
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
  }

  @override
  void initLicenses() {
    // Do not include any licenses, because we're a test, and the LICENSE file
    // doesn't get generated for tests.
  }
}

void main() {
  final PaintingBindingSpy binding = PaintingBindingSpy();

  test('decodedCacheRatio', () async {
    // final PaintingBinding binding = PaintingBinding.instance;
    // Has default value.
35
    expect(binding.decodedCacheRatioCap, isNot(null)); // ignore: deprecated_member_use_from_same_package
36 37

    // Can be set.
38 39
    binding.decodedCacheRatioCap = 1.0; // ignore: deprecated_member_use_from_same_package
    expect(binding.decodedCacheRatioCap, 1.0); // ignore: deprecated_member_use_from_same_package
40 41 42 43 44 45 46 47 48 49 50
  });

  test('instantiateImageCodec used for loading images', () async {
    expect(binding.instantiateImageCodecCalledCount, 0);

    final Uint8List bytes = Uint8List.fromList(kTransparentImage);
    final MemoryImage memoryImage = MemoryImage(bytes);
    memoryImage.load(memoryImage);
    expect(binding.instantiateImageCodecCalledCount, 1);
  });
}