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 8b26ecd commit 9a1a082
Show file tree
Hide file tree
Showing 5 changed files with 224 additions and 0 deletions.
Binary file added packages/flame/test/_resources/caveace.fa
Binary file not shown.
120 changes: 120 additions & 0 deletions packages/flame/test/_resources/chopper.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
{
"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.
91 changes: 91 additions & 0 deletions packages/flame/test/cache/assets_cache_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
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 {}

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();
assetsCacheMock.clear(fileName);
verify(() => assetsCacheMock.clear(fileName)).called(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();
assetsCacheMock.clearCache();
verify(assetsCacheMock.clearCache).called(1);

// If all file was not clear from cache then it will not readBinaryFile
assetsCache.clearCache();
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 9a1a082

Please sign in to comment.