diff --git a/analysis_options.yaml b/analysis_options.yaml index c63a3f7..5255ea5 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -2,9 +2,14 @@ include: package:lints/recommended.yaml linter: rules: - - camel_case_types - - prefer_single_quotes - - unawaited_futures - - cancel_subscriptions - - require_trailing_commas - - always_declare_return_types \ No newline at end of file + always_declare_return_types: true + camel_case_types: true + cancel_subscriptions: true + constant_identifier_names: true + noop_primitive_operations: true + prefer_const_constructors: true + # prefer_final_locals: true # todo: there are like 500 of these lol + prefer_single_quotes: true + require_trailing_commas: true + unawaited_futures: true + unnecessary_to_list_in_spreads: true \ No newline at end of file diff --git a/example/json.dart b/example/json.dart index 89b7482..af05547 100644 --- a/example/json.dart +++ b/example/json.dart @@ -40,7 +40,7 @@ void main(List args) { final variant = Variant( name: 'Example', description: 'An example variant for JSON serialisation', - boardSize: BoardSize(3, 5), + boardSize: const BoardSize(3, 5), startPosition: 'nkn/ppp/3/PPP/NKN w - - 0 1', castlingOptions: CastlingOptions.none, enPassant: false, diff --git a/lib/src/actions/actions/checks.dart b/lib/src/actions/actions/checks.dart index 3d28c58..c181f3d 100644 --- a/lib/src/actions/actions/checks.dart +++ b/lib/src/actions/actions/checks.dart @@ -27,16 +27,20 @@ class ActionCheckRoyalsAlive extends Action { return kingsAlive[Bishop.black] ? [] : [ - EffectSetGameResult( + const EffectSetGameResult( WonGameRoyalDead(winner: Bishop.white), ), ]; } return kingsAlive[Bishop.black] - ? [EffectSetGameResult(WonGameRoyalDead(winner: Bishop.black))] + ? [ + const EffectSetGameResult( + WonGameRoyalDead(winner: Bishop.black), + ), + ] : (allowDraw - ? [EffectSetGameResult(DrawnGameBothRoyalsDead())] - : [EffectInvalidateMove()]); + ? [const EffectSetGameResult(DrawnGameBothRoyalsDead())] + : [const EffectInvalidateMove()]); }, ); } @@ -56,7 +60,9 @@ class CheckRoyalsAliveAdapter @override Map export(ActionCheckRoyalsAlive e) { if (e.condition != null || e.precondition != null) { - throw BishopException('Unsupported export of condition or precondition'); + throw const BishopException( + 'Unsupported export of condition or precondition', + ); } return { if (e.event != ActionEvent.afterMove) 'event': e.event.export(), @@ -99,8 +105,8 @@ class ActionCheckPieceCount extends Action { if (white && black) return []; if (draw || (!white && !black)) { return drawsInvalidate - ? [EffectInvalidateMove()] - : [EffectSetGameResult(DrawnGameElimination())]; + ? [const EffectInvalidateMove()] + : [const EffectSetGameResult(DrawnGameElimination())]; } return [ EffectSetGameResult( @@ -132,7 +138,9 @@ class CheckPieceCountAdapter extends BishopTypeAdapter { @override Map? export(ActionCheckPieceCount e) { if (e.condition != null || e.precondition != null) { - throw BishopException('Unsupported export of condition or precondition'); + throw const BishopException( + 'Unsupported export of condition or precondition', + ); } return { 'pieceType': e.pieceType, diff --git a/lib/src/actions/actions/hands.dart b/lib/src/actions/actions/hands.dart index 08187cc..089c46e 100644 --- a/lib/src/actions/actions/hands.dart +++ b/lib/src/actions/actions/hands.dart @@ -61,7 +61,9 @@ class AddToHandAdapter extends BishopTypeAdapter { @override Map export(ActionAddToHand e) { if (e.condition != null || e.precondition != null) { - throw BishopException('Unsupported export of condition or precondition'); + throw const BishopException( + 'Unsupported export of condition or precondition', + ); } return { 'piece': e.piece, @@ -88,7 +90,9 @@ class RemoveFromHandAdapter extends BishopTypeAdapter { @override Map export(ActionRemoveFromHand e) { if (e.condition != null || e.precondition != null) { - throw BishopException('Unsupported export of condition or precondition'); + throw const BishopException( + 'Unsupported export of condition or precondition', + ); } return { 'piece': e.piece, diff --git a/lib/src/actions/actions/immortality.dart b/lib/src/actions/actions/immortality.dart index e348421..3a10525 100644 --- a/lib/src/actions/actions/immortality.dart +++ b/lib/src/actions/actions/immortality.dart @@ -51,7 +51,7 @@ class ImmortalityAdapter extends BishopTypeAdapter { @override Map? export(ActionImmortality e) { if (e.condition != null) { - throw BishopException('Unsupported export of condition'); + throw const BishopException('Unsupported export of condition'); } return { if (e.event != ActionEvent.afterMove) 'event': e.event.export(), diff --git a/lib/src/actions/actions/region.dart b/lib/src/actions/actions/region.dart index b61319e..ffd5f83 100644 --- a/lib/src/actions/actions/region.dart +++ b/lib/src/actions/actions/region.dart @@ -57,7 +57,9 @@ class ExitRegionEndingAdapter @override Map export(ActionExitRegionEnding e) { if (e.condition != null || e.precondition != null) { - throw BishopException('Unsupported export of condition or precondition'); + throw const BishopException( + 'Unsupported export of condition or precondition', + ); } return { 'region': e.region.toJson(), diff --git a/lib/src/actions/actions/transfer.dart b/lib/src/actions/actions/transfer.dart index 6b69c8b..10f7919 100644 --- a/lib/src/actions/actions/transfer.dart +++ b/lib/src/actions/actions/transfer.dart @@ -41,7 +41,7 @@ class TransferOwnershipAdapter @override Map? export(ActionTransferOwnership e) { if (e.condition != null) { - throw BishopException('Unsupported export of condition'); + throw const BishopException('Unsupported export of condition'); } return { if (!e.capture) 'capture': e.capture, diff --git a/lib/src/engine.dart b/lib/src/engine.dart index 8539008..d76b7d2 100644 --- a/lib/src/engine.dart +++ b/lib/src/engine.dart @@ -16,7 +16,7 @@ class Engine { }) async { if (game.gameOver) { print(game.drawn ? 'Draw' : 'Checkmate'); - return EngineResult(); + return const EngineResult(); } int endTime = DateTime.now().millisecondsSinceEpoch + timeLimit; int endBuffer = endTime + timeBuffer; diff --git a/lib/src/game/game.dart b/lib/src/game/game.dart index 26854de..b6d49b0 100644 --- a/lib/src/game/game.dart +++ b/lib/src/game/game.dart @@ -141,7 +141,7 @@ class Game { if (!variant.canPass(state: state, colour: colour)) { return null; } - PassMove m = PassMove(); + PassMove m = const PassMove(); if (legal) { bool valid = makeMove(m, false); if (lostBy(colour, ignoreSoftResults: true) || kingAttacked(colour)) { diff --git a/lib/src/game/game_endings.dart b/lib/src/game/game_endings.dart index c5d306e..e36c7c6 100644 --- a/lib/src/game/game_endings.dart +++ b/lib/src/game/game_endings.dart @@ -28,7 +28,7 @@ extension GameEndings on Game { final elimCond = variant.gameEndConditions[state.turn].elimination; if (elimCond.isNotNone) { if (eliminated) { - if (elimCond.isDraw) return DrawnGameElimination(); + if (elimCond.isDraw) return const DrawnGameElimination(); return WonGameElimination( winner: elimCond.isWin ? state.turn : state.turn.opponent, ); @@ -37,12 +37,12 @@ extension GameEndings on Game { final stalemateCond = variant.gameEndConditions[state.turn].stalemate; if (stalemateCond.isNotNone && stalemate) { return stalemateCond.isDraw - ? DrawnGameStalemate() + ? const DrawnGameStalemate() : WonGameStalemate( winner: stalemateCond.isWin ? state.turn : state.turn.opponent, ); } - if (insufficientMaterial) return DrawnGameInsufficientMaterial(); + if (insufficientMaterial) return const DrawnGameInsufficientMaterial(); if (repetition) return DrawnGameRepetition(repeats: hashHits); if (halfMoveRule) return DrawnGameLength(halfMoves: state.halfMoves); return null; diff --git a/lib/src/piece_type.dart b/lib/src/piece_type.dart index db088fb..1332bbf 100644 --- a/lib/src/piece_type.dart +++ b/lib/src/piece_type.dart @@ -195,7 +195,7 @@ class PieceType { PieceType withRoyal() => copyWith(royal: true, promoOptions: PiecePromoOptions.none); - factory PieceType.empty() => PieceType( + factory PieceType.empty() => const PieceType( moves: [], promoOptions: PiecePromoOptions.none, ); diff --git a/lib/src/regions/area.dart b/lib/src/regions/area.dart index 7d52571..41efd08 100644 --- a/lib/src/regions/area.dart +++ b/lib/src/regions/area.dart @@ -29,7 +29,7 @@ class Area implements Region { (x) => List.generate(height, (y) => Direction(x + xStart, y + yStart)), ).expand((e) => e).toList(); if (omitCentre) { - dirs.remove(Direction(0, 0)); + dirs.remove(const Direction(0, 0)); } return Area(directions: dirs); } diff --git a/lib/src/serialisation/serialisation.dart b/lib/src/serialisation/serialisation.dart index 79082de..5dab198 100644 --- a/lib/src/serialisation/serialisation.dart +++ b/lib/src/serialisation/serialisation.dart @@ -24,7 +24,7 @@ class BishopSerialisation { static List? _baseAdapters; static List get basePromoAdapters => [ - NoPromotionAdapter(), + const NoPromotionAdapter(), RegionPromotionAdapter(), StandardPromotionAdapter(), OptionalPromotionAdapter(), @@ -32,13 +32,13 @@ class BishopSerialisation { static List get baseDropAdapters => [ RegionDropAdapter(), - StandardDropAdapter(), - UnrestrictedDropAdapter(), + const StandardDropAdapter(), + const UnrestrictedDropAdapter(), ]; static List get basePassAdapters => [ - NoPassAdapter(), - StandardPassAdapter(), + const NoPassAdapter(), + const StandardPassAdapter(), ]; static List get baseStartPosAdapters => [ @@ -65,7 +65,7 @@ class BishopSerialisation { FirstMovePairAdapter(), FirstMoveSetAdapter(), RanksFirstMoveAdapter(), - InitialFirstMoveAdapter(), + const InitialFirstMoveAdapter(), ]; static List get baseStateTransformAdapters => [ diff --git a/lib/src/variant/options/material_conditions.dart b/lib/src/variant/options/material_conditions.dart index 5adab66..bfcc282 100644 --- a/lib/src/variant/options/material_conditions.dart +++ b/lib/src/variant/options/material_conditions.dart @@ -93,7 +93,7 @@ extension ConvertMaterialConditions on MaterialConditions { List pieceIndices(List symbols) => symbols.map((p) => pieceIndex(p)).where((p) => p >= 0).toList(); if (!enabled) { - return MaterialConditions(enabled: false); + return const MaterialConditions(enabled: false); } else { return MaterialConditions( enabled: true, diff --git a/lib/src/variant/variants/common.dart b/lib/src/variant/variants/common.dart index 918fc64..f8babda 100644 --- a/lib/src/variant/variants/common.dart +++ b/lib/src/variant/variants/common.dart @@ -48,7 +48,7 @@ class CommonVariants { ) .withRegion( 'hill', - RectRegion( + const RectRegion( startFile: Bishop.fileD, endFile: Bishop.fileE, startRank: Bishop.rank4, @@ -128,6 +128,6 @@ class CommonVariants { materialConditions: MaterialConditions.none, enPassant: false, gameEndConditions: - GameEndConditions(stalemate: EndType.lose).symmetric(), + const GameEndConditions(stalemate: EndType.lose).symmetric(), ); } diff --git a/lib/src/variant/variants/fairy.dart b/lib/src/variant/variants/fairy.dart index 69cec56..585181a 100644 --- a/lib/src/variant/variants/fairy.dart +++ b/lib/src/variant/variants/fairy.dart @@ -46,7 +46,7 @@ class FairyVariants { /// https://en.wikipedia.org/wiki/Wolf_chess static Variant wolf() => Variant( name: 'Wolf Chess', - boardSize: BoardSize(8, 10), + boardSize: const BoardSize(8, 10), startPosition: 'qwfrbbnk/pssppssp/1pp2pp1/8/8' '/8/8/1PP2PP1/PSSPPSSP/KNBBRFWQ w - - 0 1', pieceTypes: { diff --git a/lib/src/variant/variants/large.dart b/lib/src/variant/variants/large.dart index 0ebbc5d..2b3b393 100644 --- a/lib/src/variant/variants/large.dart +++ b/lib/src/variant/variants/large.dart @@ -6,7 +6,7 @@ abstract class LargeVariants { final standard = Variant.standard(); return standard.copyWith( name: 'Capablanca Chess', - boardSize: BoardSize(10, 8), + boardSize: const BoardSize(10, 8), startPosition: 'rnabqkbcnr/pppppppppp/10/10/10/10/PPPPPPPPPP' '/RNABQKBCNR w KQkq - 0 1', castlingOptions: CastlingOptions.capablanca, @@ -22,7 +22,7 @@ abstract class LargeVariants { final standard = Variant.standard(); return standard.copyWith( name: 'Grand Chess', - boardSize: BoardSize(10, 10), + boardSize: const BoardSize(10, 10), startPosition: 'r8r/1nbqkcabn1/pppppppppp/10/10/10/10/PPPPPPPPPP' '/1NBQKCABN1/R8R w - - 0 1', castlingOptions: CastlingOptions.none, @@ -65,7 +65,7 @@ abstract class LargeVariants { final standard = Variant.standard(); return standard.copyWith( name: 'Shako', - boardSize: BoardSize(10, 10), + boardSize: const BoardSize(10, 10), startPosition: 'c8c/ernbqkbnre/pppppppppp/10/10/10/10/PPPPPPPPPP' '/ERNBQKBNRE/C8C w KQkq - 0 1', pieceTypes: { @@ -73,7 +73,7 @@ abstract class LargeVariants { 'E': PieceType.fromBetza('FA'), 'C': Xiangqi.cannon(), }, - castlingOptions: CastlingOptions( + castlingOptions: const CastlingOptions( enabled: true, kTarget: Bishop.fileH, qTarget: Bishop.fileD, @@ -88,7 +88,7 @@ abstract class LargeVariants { /// https://www.chessvariants.com/contests/10/tencubedchess.html static Variant tenCubed() => Variant( name: 'TenCubed', - boardSize: BoardSize(10, 10), + boardSize: const BoardSize(10, 10), startPosition: '2cwamwc2/1rnbqkbnr1/pppppppppp/10/10/10/10' '/PPPPPPPPPP/1RNBQKBNR1/2CWAMWC2 w - - 0 1', pieceTypes: { diff --git a/lib/src/variant/variants/misc.dart b/lib/src/variant/variants/misc.dart index f70cc37..7a16039 100644 --- a/lib/src/variant/variants/misc.dart +++ b/lib/src/variant/variants/misc.dart @@ -74,7 +74,7 @@ class MiscVariants { // https://www.chessvariants.com/diffobjective.dir/utchess.html#domination // todo: make this serialisable, break action down static Variant domination({int scoreLimit = 15}) { - final region = RectRegion( + final region = const RectRegion( startFile: Bishop.fileD, endFile: Bishop.fileE, startRank: Bishop.rank4, @@ -109,7 +109,7 @@ class MiscVariants { } static Variant dart() { - final dropRegion = RectRegion( + final dropRegion = const RectRegion( startFile: Bishop.fileB, endFile: Bishop.fileE, startRank: Bishop.rank2, @@ -117,7 +117,7 @@ class MiscVariants { ); return Variant( name: 'Dart', - boardSize: BoardSize(6, 6), + boardSize: const BoardSize(6, 6), startPosition: 'knrppp/nbp3/rp3P/p3PR/3PBN/PPPRNK[XXXxxx] w - - 0 1', enPassant: false, handOptions: HandOptions( @@ -153,7 +153,7 @@ class MiscVariants { ...Variant.standard().pieceTypes, 'P': PieceType.fromBetza('mlfFcflW', noSanSymbol: true).promotable(), }, - promotionOptions: RegionPromotion(whiteId: 'wp', blackId: 'bp'), + promotionOptions: const RegionPromotion(whiteId: 'wp', blackId: 'bp'), regions: { 'wp': RectRegion.lrbt(0, 0, 4, 7) + RectRegion.lrbt(0, 3, 7, 7), 'bp': RectRegion.lrbt(7, 7, 0, 3) + RectRegion.lrbt(4, 7, 0, 0), diff --git a/lib/src/variant/variants/other.dart b/lib/src/variant/variants/other.dart index cd673f0..8f29547 100644 --- a/lib/src/variant/variants/other.dart +++ b/lib/src/variant/variants/other.dart @@ -10,7 +10,7 @@ abstract class OtherGames { description: 'Knights only. Move a knight onto the central square and off' ' it again to win.', - boardSize: BoardSize(9, 9), + boardSize: const BoardSize(9, 9), startPosition: 'nnnnnnnnn/9/9/9/9/9/9/9/NNNNNNNNN w - - 0 1', pieceTypes: {'N': PieceType.knight()}, promotionOptions: PromotionOptions.none, @@ -26,17 +26,17 @@ abstract class OtherGames { static Variant clobber() => Variant( name: 'Clobber', startPosition: 'PpPpP/pPpPp/PpPpP/pPpPp/PpPpP/pPpPp w - - 0 1', - boardSize: BoardSize(5, 6), + boardSize: const BoardSize(5, 6), pieceTypes: {'P': PieceType.fromBetza('cW')}, gameEndConditions: - GameEndConditions(stalemate: EndType.lose).symmetric(), + const GameEndConditions(stalemate: EndType.lose).symmetric(), promotionOptions: PromotionOptions.none, ); /// https://en.wikipedia.org/wiki/Clobber#Variants static Variant clobber10() => clobber().copyWith( name: 'Clobber10', - boardSize: BoardSize(10, 10), + boardSize: const BoardSize(10, 10), startPosition: 'PpPpPpPpPp/pPpPpPpPpP/PpPpPpPpPp/pPpPpPpPpP/PpPpPpPpPp/' 'pPpPpPpPpP/PpPpPpPpPp/pPpPpPpPpP' '/PpPpPpPpPp/pPpPpPpPpP w - - 0 1', @@ -52,7 +52,7 @@ abstract class OtherGames { /// https://en.wikipedia.org/wiki/Five_Field_Kono static Variant kono() => Variant( name: 'Five Field Kono', - boardSize: BoardSize(5, 5), + boardSize: const BoardSize(5, 5), startPosition: 'ppppp/p3p/5/P3P/PPPPP w - - 0 1', // startPosition: 'PPPPP/4P/1P3/5/4p w - - 0 1', pieceTypes: {'P': PieceType.fromBetza('mF')}, @@ -71,7 +71,7 @@ abstract class OtherGames { startPosition: '8/8/8/4n3/3N4/8/8/8 w - - 0 1', pieceTypes: {'N': PieceType.fromBetza('mN')}, gameEndConditions: - GameEndConditions(stalemate: EndType.lose).symmetric(), + const GameEndConditions(stalemate: EndType.lose).symmetric(), promotionOptions: PromotionOptions.none, ).withBlocker().withAction(ActionBlockOrigin()); } diff --git a/lib/src/variant/variants/shape.dart b/lib/src/variant/variants/shape.dart index 6079cf1..352d3d5 100644 --- a/lib/src/variant/variants/shape.dart +++ b/lib/src/variant/variants/shape.dart @@ -5,11 +5,11 @@ abstract class ShapeVariants { /// Variant with a circular shaped board. static Variant troitzky() => Variant( name: 'Troitzky Chess', - boardSize: BoardSize(10, 10), + boardSize: const BoardSize(10, 10), startPosition: '****qk****/**rnbbnr**/*pppppppp*/*8*/10' '/10/*8*/*PPPPPPPP*/**RNBBNR**/****QK**** w - - 0 1', pieceTypes: Bishop.chessPieces, - promotionOptions: RegionPromotion(whiteId: 'wp', blackId: 'bp'), + promotionOptions: const RegionPromotion(whiteId: 'wp', blackId: 'bp'), regions: { 'wp': SetRegion( ['a6', 'b8', 'c9', 'd9', 'e10', 'f10', 'g9', 'h9', 'i8', 'j6'], @@ -24,7 +24,7 @@ abstract class ShapeVariants { /// Not fully working yet - en passant is broken in most cases. static Variant omega() => Variant( name: 'Omega Chess', - boardSize: BoardSize(12, 12), + boardSize: const BoardSize(12, 12), startPosition: 'w**********w/*crnbqkbnrc*/*pppppppppp*/*10*/*10*/*10*' '/*10*/*10*/*10*/*PPPPPPPPPP*/*CRNBQKBNRC*/W**********W w - - 0 1', pieceTypes: { @@ -34,7 +34,7 @@ abstract class ShapeVariants { 'W': PieceType.fromBetza('FC', value: 400), // Wizard }, enPassant: true, - castlingOptions: CastlingOptions( + castlingOptions: const CastlingOptions( enabled: true, kTarget: Bishop.fileI, qTarget: Bishop.fileE, diff --git a/lib/src/variant/variants/shogi.dart b/lib/src/variant/variants/shogi.dart index 18aafba..c988291 100644 --- a/lib/src/variant/variants/shogi.dart +++ b/lib/src/variant/variants/shogi.dart @@ -35,7 +35,7 @@ class Shogi { static Variant shogi() => Variant( name: 'Shogi', - boardSize: BoardSize(9, 9), + boardSize: const BoardSize(9, 9), pieceTypes: { 'K': PieceType.king(), 'N': knight(), @@ -73,7 +73,7 @@ class Dobutsu { static Variant dobutsu() => Variant( name: 'Dobutsu Shogi', description: 'A simple Shogi variant aimed at children.', - boardSize: BoardSize(3, 4), + boardSize: const BoardSize(3, 4), startPosition: defaultFen, pieceTypes: { 'L': lion(), @@ -82,7 +82,7 @@ class Dobutsu { 'C': chick(), 'H': hen(), }, - handOptions: HandOptions( + handOptions: const HandOptions( enableHands: true, addCapturesToHand: true, dropBuilder: DropBuilder.unrestricted, diff --git a/lib/src/variant/variants/small.dart b/lib/src/variant/variants/small.dart index 9d8958d..880b6df 100644 --- a/lib/src/variant/variants/small.dart +++ b/lib/src/variant/variants/small.dart @@ -19,7 +19,7 @@ class SmallVariants { Variant mini = Variant.mini(); return mini.copyWith( name: 'Mini Random', - startPosBuilder: RandomChessStartPosBuilder(size: BoardSize.mini), + startPosBuilder: const RandomChessStartPosBuilder(size: BoardSize.mini), castlingOptions: CastlingOptions.miniRandom, outputOptions: OutputOptions.chess960, ); @@ -29,7 +29,7 @@ class SmallVariants { Variant standard = Variant.standard(); return standard.copyWith( name: 'Micro Chess', - boardSize: BoardSize(5, 5), + boardSize: const BoardSize(5, 5), startPosition: 'rnbqk/ppppp/5/PPPPP/RNBQK w Qq - 0 1', castlingOptions: CastlingOptions.micro, ); @@ -39,7 +39,7 @@ class SmallVariants { Variant standard = Variant.standard(); return standard.copyWith( name: 'Nano Chess', - boardSize: BoardSize(4, 5), + boardSize: const BoardSize(4, 5), startPosition: 'knbr/p3/4/3P/RBNK w Qk - 0 1', castlingOptions: CastlingOptions.nano, ); diff --git a/lib/src/variant/variants/xiangqi.dart b/lib/src/variant/variants/xiangqi.dart index 62d0ee2..d2fa95c 100644 --- a/lib/src/variant/variants/xiangqi.dart +++ b/lib/src/variant/variants/xiangqi.dart @@ -85,7 +85,7 @@ class Xiangqi { name: 'Mini Xiangqi', description: 'A miniature variant of Xiangqi, played on a 7x7 board with no river.', - boardSize: BoardSize(7, 7), + boardSize: const BoardSize(7, 7), pieceTypes: { 'K': general(), 'N': horse(), diff --git a/test/comparison_test.dart b/test/comparison_test.dart index d7ef2cc..12f8c4c 100644 --- a/test/comparison_test.dart +++ b/test/comparison_test.dart @@ -72,7 +72,7 @@ void main() { } } List p2 = g2.state.pieces; - if (!ListEquality().equals(p1, p2)) { + if (!const ListEquality().equals(p1, p2)) { print(' --- Failure details --- '); print('Pieces: $p1, $p2'); print('FEN 1: ${g1.fen}'); diff --git a/test/ending_test.dart b/test/ending_test.dart index babe75e..38a58a5 100644 --- a/test/ending_test.dart +++ b/test/ending_test.dart @@ -18,7 +18,7 @@ void main() { final g = Game( variant: Variant.standard().copyWith( gameEndConditions: GameEndConditionSet.symmetric( - GameEndConditions(stalemate: EndType.lose), + const GameEndConditions(stalemate: EndType.lose), ), ), fen: 'k7/8/8/1Q6/8/4K3/8/8 w - - 0 1', diff --git a/test/hopper_test.dart b/test/hopper_test.dart index ceb668a..49db062 100644 --- a/test/hopper_test.dart +++ b/test/hopper_test.dart @@ -5,45 +5,45 @@ import 'package:test/scaffolding.dart'; void main() { group('Hopper Pieces', () { List tests = [ - HopperTest( + const HopperTest( name: 'Cannon - Simple', fen: '4c3/8/1k6/8/8/2K1c3/8/4C3 w - - 0 1', numMoves: 9, ), - HopperTest( + const HopperTest( name: 'Cannon - Simple, Mate', fen: '4c3/8/2k5/8/8/2K1c3/8/4C3 w - - 0 1', numMoves: 9, checkmate: true, ), - HopperTest( + const HopperTest( name: 'Cannon - Complex', fen: '4c3/8/1k1C4/8/8/2K1c3/8/4C3 w - - 0 1', numMoves: 20, // Cd3 mates yourself ), - HopperTest( + const HopperTest( name: 'Cannon - Complex, Mate', fen: '8/8/1k1Cc3/8/8/2K1c3/8/4C3 w - - 0 1', numMoves: 16, checkmate: true, ), - HopperTest( + const HopperTest( name: 'Grasshopper - Simple', fen: '8/8/2k5/4g3/8/2K5/8/4G3 w - - 0 1', numMoves: 2, ), - HopperTest( + const HopperTest( name: 'Grasshopper - Simple, Mate', fen: '8/8/2kG4/4g3/8/2K5/8/4G3 w - - 0 1', numMoves: 4, checkmate: true, ), - HopperTest( + const HopperTest( name: 'Grasshopper - Complex', fen: '4g3/8/8/2k5/4g3/2K5/8/2gGG3 w - - 0 1', numMoves: 5, ), - HopperTest( + const HopperTest( name: 'Grasshopper - Complex, Mate', fen: '4g3/8/8/2kG4/4g3/2K5/8/2gGG3 w - - 0 1', numMoves: 8, diff --git a/test/pieces_test.dart b/test/pieces_test.dart index a501ef8..8d8a9c1 100644 --- a/test/pieces_test.dart +++ b/test/pieces_test.dart @@ -3,35 +3,35 @@ import 'package:test/test.dart'; void main() { List countMoveTests = [ - CountMovesTest('N', 8), - CountMovesTest('Q', 8), - CountMovesTest('B', 4), - CountMovesTest('fmWfceFifmnD', 4), // pawn - CountMovesTest('BN', 12), - CountMovesTest('FWDA', 16), // musketeer elephant - CountMovesTest('B2ND', 16), // musketeer spider - CountMovesTest('FWDsN', 16), // musketeer cannon - CountMovesTest('rbB', 1), - CountMovesTest('fR', 1), - CountMovesTest('bB', 2), - CountMovesTest('fsN', 2), - CountMovesTest('vZ', 4), - CountMovesTest('lfC', 1), - CountMovesTest('flrbN', 2), // works but should it? + const CountMovesTest('N', 8), + const CountMovesTest('Q', 8), + const CountMovesTest('B', 4), + const CountMovesTest('fmWfceFifmnD', 4), // pawn + const CountMovesTest('BN', 12), + const CountMovesTest('FWDA', 16), // musketeer elephant + const CountMovesTest('B2ND', 16), // musketeer spider + const CountMovesTest('FWDsN', 16), // musketeer cannon + const CountMovesTest('rbB', 1), + const CountMovesTest('fR', 1), + const CountMovesTest('bB', 2), + const CountMovesTest('fsN', 2), + const CountMovesTest('vZ', 4), + const CountMovesTest('lfC', 1), + const CountMovesTest('flrbN', 2), // works but should it? ]; List moveTests = [ - MoveTest('ffN', ['c6', 'e6']), - MoveTest('lfN', ['c6']), - MoveTest('lhN', ['c6', 'b5', 'b3', 'c2']), - MoveTest('rfZ', ['f7']), - MoveTest('bhC', ['c1', 'e1', 'g3', 'a3']), - MoveTest('rbF1', ['e3']), - MoveTest('vN', ['c2', 'c6', 'e2', 'e6']), - MoveTest('fslbC', ['a5', 'g5', 'c1']), - MoveTest('(4,1)', ['c8', 'e8', 'h3', 'h5']), - MoveTest('r(4,3)', ['h1', 'h7']), - MoveTest('frN2rfN', ['f5', 'h6', 'e6']), - MoveTest( + const MoveTest('ffN', ['c6', 'e6']), + const MoveTest('lfN', ['c6']), + const MoveTest('lhN', ['c6', 'b5', 'b3', 'c2']), + const MoveTest('rfZ', ['f7']), + const MoveTest('bhC', ['c1', 'e1', 'g3', 'a3']), + const MoveTest('rbF1', ['e3']), + const MoveTest('vN', ['c2', 'c6', 'e2', 'e6']), + const MoveTest('fslbC', ['a5', 'g5', 'c1']), + const MoveTest('(4,1)', ['c8', 'e8', 'h3', 'h5']), + const MoveTest('r(4,3)', ['h1', 'h7']), + const MoveTest('frN2rfN', ['f5', 'h6', 'e6']), + const MoveTest( 'N0', ['b8', 'f8', 'c6', 'e6', 'h6', 'b5', 'f5', 'b3', 'f3', 'c2', 'e2', 'h2'], ), diff --git a/test/region_test.dart b/test/region_test.dart index 8f8717f..c05e3a7 100644 --- a/test/region_test.dart +++ b/test/region_test.dart @@ -29,22 +29,22 @@ void main() { }, ); List tests = [ - InRegionTest( + const InRegionTest( region: 'redPalace', square: 'd1', inRegion: true, ), - InRegionTest( + const InRegionTest( region: 'redPalace', square: 'f6', inRegion: false, ), - InRegionTest( + const InRegionTest( region: 'blackSide', square: 'h7', inRegion: true, ), - InRegionTest( + const InRegionTest( region: 'redSide', square: 'h7', inRegion: false, diff --git a/test/state_transform_test.dart b/test/state_transform_test.dart index 86129f7..4b501be 100644 --- a/test/state_transform_test.dart +++ b/test/state_transform_test.dart @@ -5,7 +5,7 @@ void main() { group('State Transform', () { test('Vision Area', () { final v = Variant.standard().copyWith( - stateTransformer: VisionAreaStateTransformer(), + stateTransformer: const VisionAreaStateTransformer(), ); final g = Game( variant: v, diff --git a/test/teleport_test.dart b/test/teleport_test.dart index 357e742..413259f 100644 --- a/test/teleport_test.dart +++ b/test/teleport_test.dart @@ -6,7 +6,7 @@ void main() { final v = Variant( name: 'Pseudo-duck', startPosition: 'b3/4/4/3B w - - 0 1', - boardSize: BoardSize(4, 4), + boardSize: const BoardSize(4, 4), pieceTypes: { 'M': PieceType.fromBetza('m*'), 'C': PieceType.fromBetza('c*'),