Initial flame_lua_runtime package
This commit is contained in:
84
test/runtime/packages/game_package_test.dart
Normal file
84
test/runtime/packages/game_package_test.dart
Normal file
@@ -0,0 +1,84 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flame_lua_runtime/runtime/packages/game_package.dart';
|
||||
import 'package:flame_lua_runtime/runtime/packages/game_package_manifest.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
void main() {
|
||||
group('GamePackage', () {
|
||||
test('resolves manifest resource keys', () {
|
||||
final package = _package();
|
||||
|
||||
expect(
|
||||
package.resolveResourcePath('board'),
|
||||
'example/assets/games/ludo/assets/board.png',
|
||||
);
|
||||
});
|
||||
|
||||
test('resolves package-relative paths and assetsBase fallback', () {
|
||||
final package = _package();
|
||||
|
||||
expect(
|
||||
package.resolveResourcePath('scripts/main.lua'),
|
||||
'example/assets/games/ludo/scripts/main.lua',
|
||||
);
|
||||
expect(
|
||||
package.resolveResourcePath('unknown.png'),
|
||||
'example/assets/games/ludo/assets/unknown.png',
|
||||
);
|
||||
expect(
|
||||
package.resolveResourcePath(
|
||||
'example/assets/games/ludo/assets/board.png',
|
||||
),
|
||||
'example/assets/games/ludo/assets/board.png',
|
||||
);
|
||||
});
|
||||
|
||||
test('keeps runtime Lua root configurable per package', () {
|
||||
final package = GamePackage.asset(
|
||||
rootPath: 'example/assets/games/ludo',
|
||||
manifest: _manifest(),
|
||||
runtimeLuaRoot: 'packages/flame_lua_runtime/assets/runtime/lua',
|
||||
);
|
||||
|
||||
expect(
|
||||
package.runtimeLuaRoot,
|
||||
'packages/flame_lua_runtime/assets/runtime/lua',
|
||||
);
|
||||
});
|
||||
|
||||
test('reads file package text and bytes', () async {
|
||||
final root = await Directory.systemTemp.createTemp('game_package_test_');
|
||||
addTearDown(() => root.deleteSync(recursive: true));
|
||||
Directory('${root.path}/scripts').createSync(recursive: true);
|
||||
File('${root.path}/scripts/main.lua').writeAsStringSync('return true');
|
||||
|
||||
final package = GamePackage.file(
|
||||
rootPath: root.path,
|
||||
manifest: _manifest(),
|
||||
);
|
||||
|
||||
expect(await package.readText('scripts/main.lua'), 'return true');
|
||||
expect((await package.readBytes('scripts/main.lua')).lengthInBytes, 11);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
GamePackage _package() {
|
||||
return GamePackage.asset(
|
||||
rootPath: 'example/assets/games/ludo',
|
||||
manifest: _manifest(),
|
||||
);
|
||||
}
|
||||
|
||||
GamePackageManifest _manifest() {
|
||||
return const GamePackageManifest(
|
||||
gameId: 'ludo',
|
||||
name: 'Ludo',
|
||||
version: '0.1.0',
|
||||
runtimeApiVersion: 1,
|
||||
entry: 'scripts/main.lua',
|
||||
assetsBase: 'assets',
|
||||
resources: {'board': GameResource(type: 'image', path: 'assets/board.png')},
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user