Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
 - 🐛 Unit tests for AssetsCache
  • Loading branch information
shwetachauhan-simform committed Oct 4, 2022
1 parent c6bea20 commit 0006ff7
Show file tree
Hide file tree
Showing 5 changed files with 167 additions and 0 deletions.
Binary file added packages/flame/test/_resources/caveace.fa
Binary file not shown.
52 changes: 52 additions & 0 deletions packages/flame/test/_resources/chopper.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{ "frames": {
"chopper 0.aseprite": {
"frame": { "x": 0, "y": 0, "w": 48, "h": 48 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 48, "h": 48 },
"sourceSize": { "w": 48, "h": 48 },
"duration": 100
},
"chopper 1.aseprite": {
"frame": { "x": 48, "y": 0, "w": 48, "h": 48 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 48, "h": 48 },
"sourceSize": { "w": 48, "h": 48 },
"duration": 100
},
"chopper 2.aseprite": {
"frame": { "x": 96, "y": 0, "w": 48, "h": 48 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 48, "h": 48 },
"sourceSize": { "w": 48, "h": 48 },
"duration": 100
},
"chopper 3.aseprite": {
"frame": { "x": 144, "y": 0, "w": 48, "h": 48 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 48, "h": 48 },
"sourceSize": { "w": 48, "h": 48 },
"duration": 100
}
},
"meta": {
"app": "http://www.aseprite.org/",
"version": "1.3-dev",
"image": "/home/erick/projetos/gamedev/airplane-resource-pack/chopper.png",
"format": "RGBA8888",
"size": { "w": 192, "h": 48 },
"scale": "1",
"frameTags": [
],
"layers": [
{ "name": "body", "opacity": 255, "blendMode": "normal" },
{ "name": "rotor", "opacity": 255, "blendMode": "normal" },
{ "name": "stabilizer", "opacity": 255, "blendMode": "normal" }
],
"slices": [
]
}
}
1 change: 1 addition & 0 deletions packages/flame/test/_resources/test_text_file.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This is sample text file for AssetsCache Unit testing.
102 changes: 102 additions & 0 deletions packages/flame/test/cache/assets_cache_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
import 'package:flame/cache.dart';
import 'package:flame/flame.dart';
import 'package:flame_test/flame_test.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';

import '../fixtures/fixture_reader.dart';

class _AssetsCacheMock extends Mock implements AssetsCache {
int disposedCount = 0;

void dispose() {
disposedCount++;
}
}

void main() {
TestWidgetsFlutterBinding.ensureInitialized();

group('AssetsCache', () {
test('readFile', () async {
final assetsCache = AssetsCache(prefix: '');
final fileName = fixture('test_text_file.txt').path;
final file = await assetsCache.readFile(fileName);
expect(file, isA<String>());

expect(
() async =>
assetsCache.readBinaryFile(fixture('test_text_file.txt').path),
failsAssert('"$fileName" was previously loaded as a text file'),
);
});

test('readJson', () async {
final assetsCache = AssetsCache(prefix: '');
final file = await assetsCache.readJson(fixture('chopper.json').path);
expect(file, isA<Map<String, dynamic>>());
});

test('readBinaryFile', () async {
final assetsCache = AssetsCache(prefix: '');
final fileName = fixture('caveace.fa').path;
final file = await assetsCache.readBinaryFile(fileName);
expect(file, isA<Uint8List>());

expect(
() async => assetsCache.readFile(fixture('caveace.fa').path),
failsAssert('"$fileName" was previously loaded as a binary file'),
);
});

test('clear', () async {
final assetsCache = AssetsCache(prefix: '');

final fileName = fixture('test_text_file.txt').path;
final file = await assetsCache.readFile(fileName);
expect(file, isA<String>());

final assetsCacheMock = _AssetsCacheMock();
expect(assetsCacheMock.disposedCount, 0);
assetsCache.clear(fileName);
assetsCacheMock.dispose();

/// On cache clear for confirmation increment dispose count
expect(assetsCacheMock.disposedCount, 1);
});

test('clearCache', () async {
final assetsCache = AssetsCache(prefix: '');

final fileName = fixture('test_text_file.txt').path;
final file = await assetsCache.readFile(fileName);
expect(file, isA<String>());

final assetsCacheMock = _AssetsCacheMock();
expect(assetsCacheMock.disposedCount, 0);
assetsCache.clearCache();
assetsCacheMock.dispose();
expect(assetsCacheMock.disposedCount, 1);

/// If all file was not clear from cache then it will not readBinaryFile
final fileTxtAsBinary = await assetsCache.readBinaryFile(fileName);
expect(fileTxtAsBinary, isA<Uint8List>());
});

testWithFlameGame(
'prefix on assets can not be changed',
(game) async {
game.assets = AssetsCache();
expect(game.assets.prefix, 'assets/');
},
);

testWithFlameGame(
'Game.assets is same as Flame.assets',
(game) async {
expect(game.assets, equals(Flame.assets));
},
);
});
}
12 changes: 12 additions & 0 deletions packages/flame/test/fixtures/fixture_reader.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import 'dart:io';

File fixture(String name) {
var dir = Directory.current.path;
if (dir.endsWith('/test')) {
dir = dir.replaceAll('/test', '');
}
return File('$dir/test/_resources/$name');
}

String fixtureForString(String name) =>
File('test/fixtures/$name').readAsStringSync();

0 comments on commit 0006ff7

Please sign in to comment.