50 lines
1.4 KiB
Dart
50 lines
1.4 KiB
Dart
import 'package:block_seasons/game/engine/game_engine.dart';
|
|
import 'package:block_seasons/game/models/stage.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
StageConfig _stage() => StageConfig.fromJson({
|
|
'id': 'b_test',
|
|
'seed': 1,
|
|
'moveLimit': 20,
|
|
'preset': [
|
|
{'x': 0, 'y': 0, 't': 'filled', 'c': 3},
|
|
{'x': 1, 'y': 0, 't': 'filled', 'c': 4},
|
|
],
|
|
'objectives': [
|
|
{'type': 'reachScore', 'target': 100000},
|
|
],
|
|
'stars': {
|
|
'two': {'movesLeft': 5},
|
|
'three': {'movesLeft': 10},
|
|
},
|
|
});
|
|
|
|
void main() {
|
|
test('useHammer empties a filled cell without scoring or spending a move', () {
|
|
final e = GameEngine(_stage());
|
|
final score0 = e.score;
|
|
final moves0 = e.movesUsed;
|
|
|
|
expect(e.grid.isOccupied(0, 0), isTrue);
|
|
final ok = e.useHammer(0, 0);
|
|
|
|
expect(ok, isTrue);
|
|
expect(e.grid.isOccupied(0, 0), isFalse);
|
|
expect(e.score, score0, reason: 'no points from a booster');
|
|
expect(e.movesUsed, moves0, reason: 'no move spent');
|
|
});
|
|
|
|
test('useHammer on an empty cell returns false and changes nothing', () {
|
|
final e = GameEngine(_stage());
|
|
expect(e.grid.isOccupied(5, 5), isFalse);
|
|
expect(e.useHammer(5, 5), isFalse);
|
|
expect(e.grid.isOccupied(5, 5), isFalse);
|
|
});
|
|
|
|
test('useHammer is rejected once the stage is won or lost', () {
|
|
final e = GameEngine(_stage());
|
|
e.declineAndLose();
|
|
expect(e.useHammer(0, 0), isFalse);
|
|
});
|
|
}
|