Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package game;
- import org.testng.annotations.Test;
- import static game.BonusType.*;
- import static game.Move.*;
- @Test
- public class BestMoveFinderTest extends AbstractBMFTest {
- @Test
- void testWall() {
- board("" +
- ".....\n" +
- "Xm...\n" +
- "0....\n" +
- ".....\n" +
- "....."
- );
- check(move(2, 1));
- }
- @Test
- void movement() {
- board("" +
- "....0\n" +
- "Xm...\n" +
- "0....\n" +
- ".....\n" +
- "....."
- );
- check(move(2, 1));
- }
- @Test
- void bfs() {
- board("" +
- ".mX..\n" +
- "..X0.\n" +
- "..X..\n" +
- "..X..\n" +
- "....."
- );
- check(move(1, 1));
- }
- @Test
- void testBomb() {
- board("" +
- "0mX..\n" +
- ".....\n" +
- ".....\n" +
- "....0\n" +
- "...0."
- );
- check(bomb(1, 1));
- }
- @Test
- void testBug() {
- board("" +
- "m....\n" +
- "0....\n" +
- ".....\n" +
- ".....\n" +
- "0...."
- );
- addBomb(0, 0, 7);
- check(move(0, 1));
- }
- @Test
- void testBestTargetIsBlocked() {
- board("" +
- "mX...\n" +
- ".....\n" +
- "...0.\n" +
- "..0.0\n" +
- "...0."
- );
- check(move(1, 0));
- }
- @Test
- void avoidExplosion() {
- board("" +
- "b..0.\n" +
- "XmX..\n" +
- "..X..\n" +
- "..X..\n" +
- "..X.."
- );
- addBomb().timer(2);
- check(move(1, 1));
- }
- @Test
- void avoidExplosion2() {
- board("" +
- ".....\n" +
- "mX...\n" +
- ".0...\n" +
- "X....\n" +
- "....."
- );
- addBomb(1, 0, 3);
- check(move(0, 0));
- }
- @Test
- void cantGoThroughBomb() {
- board("" +
- "mX...\n" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- "....0"
- );
- addBomb(1, 0, 3);
- check(bomb(0, 0));
- }
- @Test
- void dontBlockYourself() {
- board("" +
- ".....\n" +
- "mX...\n" +
- ".0...\n" +
- "0....\n" +
- "....."
- );
- checkForbidden(bomb(2, 0));
- }
- @Test
- void bombChain() {
- board("" +
- "0.X..\n" +
- "X.X..\n" +
- ".mX..\n" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- "....."
- );
- addBomb(height() - 1, 1, 2);
- addBomb(height() - 2, 1, 8).range(20);
- checkForbidden(move(1, 1));
- }
- @Test
- void dontIdle() {
- board("" +
- "0mX..\n" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- "0...."
- );
- check(bomb(1, 1));
- }
- @Test
- void testBug2() {
- board("" +
- "...0\n" +
- "0.0.\n" +
- "X.X.\n" +
- "....\n" +
- ".0.."
- );
- me(1, 1);
- addBomb(2, 1, 8);
- check(bomb(0, 1));
- }
- @Test
- void stealScore() {
- board("" +
- "0...\n" +
- "....\n" +
- "....\n" +
- "....\n" +
- "0..."
- );
- me(0, 1);
- addBomb(0, 2, 8).ownerId(1);
- check(bomb(1, 1));
- }
- @Test
- void testBug3() {
- board("" +
- "...000.000...\n" +
- ".X.X0X.X0X.X.\n" +
- "00.00...00000\n" +
- "0X.X0X.X0X.X0\n" +
- "0...00.000.00\n" +
- ".X.X0X.X0X.X.\n" +
- ".....0.000.00\n" +
- ".X.X0X.X0X.X0\n" +
- "........00000\n" +
- ".X.X0X.X0X.X.\n" +
- "....00.000..."
- );
- me(6, 2);
- addBomb(6, 2, 4);
- addBomb(4, 3, 1);
- checkForbidden(move(6, 2));
- }
- @Test
- void dontIdle2() {
- round(0);
- board("" +
- "m.0..\n" +
- ".X...\n" +
- "0....\n" +
- ".....\n" +
- "....."
- );
- checkForbidden(move(0, 0));
- }
- @Test
- void dontIdle3() {
- board("" +
- "m....\n" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- "....."
- );
- addBomb(0, 0, 8);
- checkForbidden(move(0, 0));
- }
- @Test
- void dontIdle4() {
- board("" +
- "...00...00m..\n" +
- ".X.X.X0X.X.X.\n" +
- "..0.......0..\n" +
- ".X0X.X0X.X0X.\n" +
- "..0.......0..\n" +
- "0X.X.X.X.X.X0\n" +
- "..0.......0..\n" +
- ".X0X.X0X.X0X.\n" +
- "..0.......00.\n" +
- ".X.X.X0X.X.X.\n" +
- "..000...00..."
- );
- me(0, width() - 3).bombRange(3);
- addBomb(0, width() - 3, 5);
- checkForbidden(move(0, width() - 3));
- }
- @Test
- void considerBombsLeft() {
- board("" +
- "0m...\n" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- "0...."
- );
- me().bombsLeft(0);
- check(move(0, 1));
- }
- @Test
- void dontBlowUpBonuses() {
- board("" +
- "0Rm..\n" +
- "XX...\n" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- "0...."
- );
- checkForbidden(bomb(1, 2));
- }
- @Test
- void dontBlowUpBonuses2() {
- board("" +
- "0Rm..\n" +
- "XX...\n" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- "....."
- );
- check(move(0, 1));
- }
- @Test
- void bugWithBonuses() {
- board("" +
- ".0...\n" +
- "0m...\n" +
- "XRX..\n" +
- "X.X..\n" +
- "X.X..\n" +
- "....."
- );
- addBomb(1, 2, 3);
- checkForbidden(bomb(2, 1));
- }
- @Test
- void enemiesAreDangerous() {
- board("" +
- "0m0..\n" +
- ".e...\n" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- "....."
- );
- me().bombsLeft(0);
- check(move(1, 1));
- }
- @Test
- void goThrough() {
- board("" +
- ".me..\n" +
- ".X...\n" +
- ".....\n" +
- ".....\n" +
- "....0"
- );
- check(move(0, 2));
- }
- @Test
- void dontSuicide() {
- board("" +
- ".....\n" +
- ".X.X.\n" +
- ".....\n" +
- ".XXX0\n" +
- ".....\n" +
- "....."
- );
- me(2, 1);
- enemy(2, 2);
- addBomb(0, 2, 2).range(10);
- checkForbidden(move(2, 2));
- }
- @Test
- void testBug4() {
- board("" +
- ".............\n" +
- ".X.X.X.X.X.X.\n" +
- ".............\n" +
- ".X.X.X.X.X0X.\n" +
- ".............\n" +
- ".X.X.X.X.X.X.\n" +
- ".............\n" +
- ".X.X.X.X.X0X.\n" +
- ".............\n" +
- ".X.X.X.X.X.X.\n" +
- "............."
- );
- me(6, 6);
- addBomb(6, 10, 2).range(2);
- addBomb(6, 10, 2).range(5);
- checkForbidden(move(6, 6));
- }
- @Test
- void dontSuicide2() {
- board("" +
- "..0..\n" +
- ".0.0.\n" +
- ".X.X.\n" +
- "...0."
- );
- me(2, 2);
- addBomb(2, 2, 6);
- addBomb(3, 0, 3).range(5);
- checkForbidden(move(1, 2));
- }
- @Test
- void moveToExplosion() {
- board("" +
- ".....0\n" +
- "......\n" +
- "......\n" +
- "......"
- );
- me(0, 0);
- addBomb(1, 1, 1);
- check(move(0, 1));
- }
- @Test
- void enemyDiesRightNow() {
- board("" +
- "b...0.\n" +
- "...0.0\n" +
- "...X.X\n" +
- "...X.X\n" +
- "...X.X\n" +
- "...X.X\n" +
- "...X.X\n" +
- "...X.X\n" +
- "...XmX\n" +
- "...X.X\n" +
- "...X.X\n" +
- "...X.X\n" +
- "...0.0"
- );
- addBomb().timer(1);
- enemy(0, 1).bombRange(20);
- check(move(7, width() - 2));
- }
- @Test
- void anyLastWords() {
- board("" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- "....."
- );
- me(1, 1);
- addBomb(0, 1, 1);
- addBomb(2, 1, 1);
- addBomb(1, 0, 1);
- addBomb(1, 2, 1);
- check(bomb(1, 1));
- }
- @Test
- void dontSuicide3() {
- board("" +
- "....0\n" +
- "X.X..\n" +
- "XXX..\n" +
- "....."
- );
- me(1, 1);
- addBomb(0, 0, 2);
- enemy(0, 1);
- checkForbidden(move(0, 1));
- }
- @Test
- void dontSuicide4() {
- round(1);
- board("" +
- "..00.0.0.00..\n" +
- ".X.X.X0X.X.X.\n" +
- "00.000.000.0.\n" +
- ".X.X.X0X.X.X.\n" +
- "0..00...00..0\n" +
- ".X0X.X0X.X0X.\n" +
- "0..00...00..0\n" +
- ".X.X.X0X.X.X.\n" +
- ".0.000.000.0.\n" +
- ".X.X.X0X.X.X.\n" +
- "..00.0.0.00.."
- );
- me(3, 12).bombsLeft(0);
- addBomb(0, 12, 2);
- checkForbidden(move(2, 12));
- }
- @Test
- void trickyCaseWithBonus() {
- board("" +
- "X....\n" +
- "0.0.."
- );
- me(0, 1);
- addBomb(0, 1, 4);
- bonus(0, 2, RANGE);
- checkForbidden(move(0, 1));
- }
- @Test
- void efficientBombing() {
- board("" +
- ".0...\n" +
- "0.0..\n" +
- ".m...\n" +
- "....."
- );
- check(move(1, 1));
- }
- @Test
- void testBug5() {
- round(25);
- board("" +
- ".....0.0.....\n" +
- ".X.X0X.X0X.X.\n" +
- ".00..0.0..00.\n" +
- ".X.X0X0X0X.X.\n" +
- "00..0.0.0..00\n" +
- "0X0X0X.X0X0X0\n" +
- "00..0.0.0..00\n" +
- ".X.X0X0X0X.X.\n" +
- "00...0.0..00.\n" +
- ".X.X0X.X0X.X.\n" +
- ".......0....."
- );
- me(0, 10).bombRange(2).bombsLeft(1);
- checkForbidden(bomb(0, 9));
- }
- @Test
- void depthBug() {
- board("" +
- "0....\n" +
- ".....\n" +
- ".....\n" +
- "....."
- );
- depth(3);
- me(0, 1);
- checkForbidden(move(0, 1));
- }
- @Test
- void bombCooldownBug() {
- board("" +
- "0....\n" +
- ".0...\n" +
- ".....\n" +
- "....."
- );
- depth(2);
- me(0, 2).bombsLeft(0);
- addBomb(height() - 1, width() - 1, 1);
- check(move(0, 1));
- }
- @Test
- void boxDestruction() {
- board("" +
- "0X..0\n" +
- "bX...\n" +
- ".m...\n" +
- "....."
- );
- depth(2);
- addBomb().timer(1);
- checkForbidden(move(2, 0));
- }
- @Test
- void rangeBonus() {
- board("" +
- ".....0\n" +
- "0X....\n" +
- ".X....\n" +
- ".X0...\n" +
- ".X...."
- );
- depth(2);
- me(0, 1);
- bonus(0, 2, RANGE);
- check(move(0, 2));
- }
- @Test
- void avoidBombs() {
- board("" +
- "..\n" +
- ".."
- );
- depth(2);
- me(0, 1);
- addBomb(0, 0, 3);
- check(move(1, 1));
- }
- @Test
- void testBugWithBombsLeft() {
- round(8);
- board("" +
- ".....0.0.....\n" +
- ".X.X0X.X0X.X.\n" +
- "0000.....0000\n" +
- "0X.X.X.X.X.X0\n" +
- ".0.........0.\n" +
- "0X.X.X.X.X.X0\n" +
- ".0.........0.\n" +
- "0X.X.X.X.X.X0\n" +
- "0000.....0000\n" +
- ".X.X0X.X0X.X.\n" +
- ".....0.0....."
- );
- depth(3);
- me(0, 9).bombRange(2).bombsLeft(0);
- addBomb(0, 12, 1).range(2);
- check(move(0, 8));
- }
- @Test(enabled = false)
- void enemyCanMove() {
- board("" +
- "bem...\n" +
- ".X.X..\n" +
- ".X.X..\n" +
- ".X.X..\n" +
- ".X.X..\n" +
- "..0..."
- );
- addBomb().timer(5);
- enemy().bombRange(20);
- check(move(0, 3));
- }
- @Test
- void testBug862954821() {
- round(17);
- board("" +
- ".............\n" +
- ".X.X0X0X.X.X.\n" +
- "..0.00.00.0.0\n" +
- "0X0X0X.X0X0X0\n" +
- "0.0..0.0..0.0\n" +
- ".X0X.X.X.X0X.\n" +
- "0.0..0.0..0.0\n" +
- "0X0X0X.X0X0X0\n" +
- "0.0.00.00.0.0\n" +
- ".X.X.X0X.X.X.\n" +
- "............."
- );
- me(1, 0).bombRange(2).bombsLeft(0);
- enemy(10, 9).bombRange(2).bombsLeft(0);
- enemy(1, 8).bombRange(2).bombsLeft(1);
- enemy(10, 5).bombRange(2).bombsLeft(0);
- addBomb(0, 4, 1).range(2).ownerId(0);
- addBomb(9, 12, 5).range(2).ownerId(1);
- addBomb(9, 2, 5).range(2).ownerId(3);
- bonus(2, 0, RANGE);
- bonus(10, 6, COUNT);
- bonus(0, 6, COUNT);
- checkForbidden(move(1, 0));
- }
- @Test
- void collectBonuses() {
- board("" +
- "Rm....\n" +
- ".X....\n" +
- "......\n" +
- "......\n" +
- ".....0"
- );
- check(move(0, 0));
- }
- @Test
- void enemyDoesntSuicide() {
- board("" +
- "b..X..\n" +
- ".X.X..\n" +
- ".X.X..\n" +
- ".X.X..\n" +
- ".....0"
- );
- me(0, 2);
- addBomb().timer(3);
- enemy(0, 2).bombRange(20);
- check(move(1, 2));
- }
- @Test
- void testBug1550130457() {
- round(43);
- board("" +
- ".......0.....\n" +
- ".X.X.X.X0X.X.\n" +
- ".....0.000.0.\n" +
- ".X.X0X0X0X.X.\n" +
- "....00.000...\n" +
- ".X.X.X0X.X.X.\n" +
- "..0000.00....\n" +
- ".X.X0X0X0X.X.\n" +
- ".0.000.0.....\n" +
- ".X.X0X.X.X.X.\n" +
- ".....0......."
- );
- enemy(4, 3).bombRange(4).bombsLeft(1).id(0);
- me(8, 8).bombRange(3).bombsLeft(3).id(1);
- addBomb(0, 4, 2).range(3).ownerId(0);
- addBomb(2, 2, 6).range(3).ownerId(0);
- addBomb(10, 8, 6).range(3).ownerId(1);
- bonus(3, 0, COUNT);
- bonus(7, 0, COUNT);
- bonus(3, 12, COUNT);
- bonus(4, 10, RANGE);
- bonus(5, 2, RANGE);
- bonus(5, 10, RANGE);
- bonus(6, 9, RANGE);
- check(bomb(8, 9));
- }
- @Test
- void testBug1227684981() {
- round(65);
- board("" +
- ".........00..\n" +
- ".X.X.X.X.X0X.\n" +
- "..........0..\n" +
- ".X.X.X.X.X.X.\n" +
- ".............\n" +
- ".X.X.X.X.X.X.\n" +
- "....0........\n" +
- ".X.X.X.X.X.X.\n" +
- "..0..........\n" +
- ".X0X.X.X.X.X.\n" +
- "..00..0......"
- );
- enemy(4, 2).bombRange(8).bombsLeft(3).id(0);
- me(4, 6).bombRange(8).bombsLeft(5).id(1);
- addBomb(3, 4, 6).range(8).ownerId(0);
- addBomb(6, 6, 6).range(8).ownerId(1);
- addBomb(4, 4, 7).range(8).ownerId(0);
- bonus(10, 9, COUNT);
- bonus(0, 3, COUNT);
- bonus(3, 10, RANGE);
- bonus(7, 2, RANGE);
- bonus(7, 4, COUNT);
- bonus(8, 3, RANGE);
- bonus(2, 9, RANGE);
- bonus(3, 8, COUNT);
- checkForbidden(bomb(4, 7));
- }
- @Test
- void scoreCalculationBug() {
- board("" +
- ".m....\n" +
- "0.....\n" +
- "......\n" +
- "......\n" +
- "......"
- );
- depth(1);
- addBomb(0, 0, 5).ownerId(1);
- addBomb(1, 1, 5).ownerId(0);
- check(move(0, 2));
- }
- @Test
- void preventEnemyFromScoring() {
- board("" +
- ".m0...\n" +
- "......\n" +
- "......\n" +
- "......\n" +
- "......"
- );
- depth(1);
- addBomb(0, 0, 5).ownerId(1);
- addBomb(0, 3, 5).ownerId(0);
- check(bomb(1, 1));
- }
- @Test
- void scoreCalculationBug2() {
- board("" +
- "b0mX..\n" +
- "......\n" +
- "......\n" +
- "......\n" +
- ".....0"
- );
- depth(1);
- addBomb().timer(3).ownerId(1);
- check(move(1, 2));
- }
- @Test
- void collectBonuses2() {
- board("" +
- "m.....\n" +
- "......\n" +
- "......\n" +
- "......\n" +
- "R....."
- );
- depth(1);
- check(move(1, 0));
- }
- @Test
- void testBug391438578() {
- round(25);
- board("" +
- ".............\n" +
- ".X.X.X0X.X.X.\n" +
- ".0.....0....0\n" +
- ".X.X.X0X.X.X.\n" +
- ".00..0.00..0.\n" +
- ".X0X.X.X.X0X.\n" +
- ".00.00.00..0.\n" +
- ".X.X.X0X.X.X.\n" +
- "00...0.0....0\n" +
- ".X.X.X0X.X.X.\n" +
- "............."
- );
- me(4, 4).bombRange(3).bombsLeft(0).id(0);
- enemy(9, 8).bombRange(2).bombsLeft(0).id(1);
- enemy(0, 9).bombRange(2).bombsLeft(0).id(2);
- addBomb(2, 11, 1).range(2).ownerId(2);
- addBomb(2, 2, 2).range(2).ownerId(0);
- addBomb(6, 10, 2).range(2).ownerId(1);
- addBomb(4, 10, 4).range(2).ownerId(2);
- addBomb(8, 10, 6).range(2).ownerId(1);
- bonus(2, 0, COUNT);
- checkForbidden(move(4, 3));
- }
- @Test
- void testBug166046037() {
- round(44);
- board("" +
- ".............\n" +
- ".X.X.X.X.X.X.\n" +
- ".......0.....\n" +
- ".X.X.X0X.X.X.\n" +
- ".......0.....\n" +
- ".X.X.X.X.X.X.\n" +
- ".0...0.0.....\n" +
- ".X.X.X0X.X.X.\n" +
- "0......0.....\n" +
- ".X.X.X.X.X.X.\n" +
- "............."
- );
- me(4, 3).bombRange(3).bombsLeft(3).id(0).maxBombs(4);
- enemy(7, 4).bombRange(2).bombsLeft(2).id(1);
- enemy(6, 6).bombRange(3).bombsLeft(1).id(2);
- addBomb(2, 6, 1).range(2).ownerId(2);
- addBomb(6, 0, 4).range(3).ownerId(0);
- bonus(2, 12, COUNT);
- bonus(6, 11, COUNT);
- bonus(8, 12, COUNT);
- bonus(6, 8, RANGE);
- bonus(4, 11, COUNT);
- bonus(4, 8, RANGE);
- bonus(6, 4, RANGE);
- bonus(9, 6, RANGE);
- bonus(1, 6, RANGE);
- bonus(5, 2, COUNT);
- bonus(8, 1, COUNT);
- checkForbidden(move(4, 2));
- }
- @Test
- void testBug1789771412() {
- round(25);
- board("" +
- ".............\n" +
- ".X.X.X0X.X.X.\n" +
- ".0.....0....0\n" +
- ".X.X.X0X.X.X.\n" +
- ".00..0.00..0.\n" +
- ".X0X.X.X.X0X.\n" +
- ".00..0.00..0.\n" +
- ".X.X.X0X.X.X.\n" +
- "00.....0....0\n" +
- ".X.X.X0X.X.X.\n" +
- "............."
- );
- me(6, 4).bombRange(4).bombsLeft(0).maxBombs(1).id(0);
- enemy(8, 4).bombRange(2).bombsLeft(1).maxBombs(1).id(1);
- enemy(0, 9).bombRange(2).bombsLeft(0).maxBombs(2).id(2);
- addBomb(2, 11, 1).range(2).ownerId(2);
- addBomb(2, 2, 2).range(2).ownerId(0);
- addBomb(4, 10, 4).range(2).ownerId(2);
- bonus(2, 0, COUNT);
- bonus(8, 11, COUNT);
- checkForbidden(move(6, 3));
- }
- @Test
- void testBug1480314834() {
- round(12);
- board("" +
- "...0.....0...\n" +
- ".X0X.X.X.X0X.\n" +
- "000..000..000\n" +
- ".X0X0X.X0X0X.\n" +
- "000000.000000\n" +
- ".X.X.X.X.X.X.\n" +
- "000000.000000\n" +
- ".X0X0X.X0X0X.\n" +
- "000..000..000\n" +
- ".X0X.X.X.X0X.\n" +
- "..00.....0..."
- );
- me(0, 1).bombRange(2).bombsLeft(0).maxBombs(1).id(0);
- enemy(10, 10).bombRange(2).bombsLeft(2).maxBombs(2).id(1);
- enemy(0, 10).bombRange(2).bombsLeft(2).maxBombs(2).id(2);
- addBomb(1, 0, 4).range(2).ownerId(0);
- bonus(0, 2, COUNT);
- check(move(0, 2));
- }
- @Test
- void moveThroughExplodedBomb() {
- board("" +
- ".m0\n" +
- "bX.\n" +
- "X.."
- );
- depth(1);
- addBomb().timer(2);
- check(bomb(0, 1));
- }
- @Test
- void moveThroughExplodedBomb2() {
- board("" +
- ".m0\n" +
- "bX.\n" +
- "X.."
- );
- depth(1);
- addBomb().timer(8);
- check(move(0, 1));
- }
- @Test
- void moveThroughExplodedBomb3() {
- board("" +
- ".m0\n" +
- "bX.\n" +
- "X.."
- );
- depth(1);
- addBomb().timer(7);
- check(bomb(0, 1));
- }
- @Test
- void testBug247272092() {
- round(27);
- board("" +
- ".............\n" +
- ".X.X.X.X.X.X.\n" +
- ".00..000..000\n" +
- ".X0X0X.X0X0X.\n" +
- "000000.000000\n" +
- ".X.X.X.X.X.X.\n" +
- "000000.000000\n" +
- ".X0X0X.X0X0X.\n" +
- "000..000..00.\n" +
- ".X0X.X.X.X.X.\n" +
- "..00........."
- );
- me(1, 2).bombRange(3).bombsLeft(2).maxBombs(3).id(0);
- addBomb(2, 0, 3).range(3).ownerId(0);
- checkForbidden(bomb(1, 2));
- }
- @Test
- void moveYourAss() {
- board("" +
- ".0....\n" +
- "mX....\n" +
- "......\n" +
- "......\n" +
- ".....b"
- );
- depth(3);
- me().bombsLeft(0);
- addBomb().timer(8);
- check(move(0, 0));
- }
- @Test
- void preferBoxWithBonus() {
- board("" +
- "m.0...\n" +
- ".X....\n" +
- "2.....\n" +
- "......\n" +
- "......"
- );
- depth(3);
- check(move(1, 0));
- }
- @Test
- void testBug1808556513() {
- round(14);
- board("" +
- "...2.0.0.21..\n" +
- ".X1X0X.X0X1X.\n" +
- ".211.....11..\n" +
- "0X1X2X.X2X1X.\n" +
- "..022...220..\n" +
- ".X.X1X.X1X.X.\n" +
- "..022...220..\n" +
- ".X1X2X.X2X1X.\n" +
- "..11.....11..\n" +
- ".X1X0X.X0X1X.\n" +
- "..12.0.0.21.."
- );
- enemy(0, 2).bombRange(3).bombsLeft(0).maxBombs(1).id(0);
- enemy(8, 11).bombRange(2).bombsLeft(1).maxBombs(2).id(1);
- enemy(2, 11).bombRange(2).bombsLeft(1).maxBombs(2).id(2);
- me(8, 1).bombRange(2).bombsLeft(1).maxBombs(2).id(3);
- addBomb(2, 0, 5).range(2).ownerId(0);
- addBomb(10, 12, 6).range(2).ownerId(1);
- addBomb(0, 12, 6).range(2).ownerId(2);
- addBomb(10, 0, 6).range(2).ownerId(3);
- check(move(8, 0));
- }
- @Test
- void enemyWontPlaceBombForYou() {
- round(9);
- board("" +
- ".............\n" +
- ".X.X2X1X2X.X.\n" +
- ".11210.01211.\n" +
- "1X.X.X2X.X.X1\n" +
- "012.20.02.210\n" +
- ".X.X0X.X0X.X.\n" +
- "012.20.02.210\n" +
- "1X.X.X2X.X.X1\n" +
- "211210.01211.\n" +
- ".X.X2X1X2X.X.\n" +
- "............."
- );
- enemy(0, 3).bombRange(2).bombsLeft(1).maxBombs(1).id(0);
- enemy(9, 10).bombRange(2).bombsLeft(1).maxBombs(1).id(1);
- me(0, 8).bombRange(2).bombsLeft(1).maxBombs(1).id(2);
- bonus(2, 0, COUNT);
- bonus(2, 12, COUNT);
- bonus(8, 12, COUNT);
- checkForbidden(move(0, 7));
- }
- @Test
- void testBug1593516110() {
- round(89);
- board("" +
- ".............\n" +
- ".X.X.X.X.X.X.\n" +
- ".............\n" +
- ".X.X.X.X.X.X.\n" +
- "01...........\n" +
- ".X.X.X.X.X.X.\n" +
- "0....0.......\n" +
- ".X.X.X.X.X.X.\n" +
- ".............\n" +
- ".X.X.X.X.X.X.\n" +
- "............."
- );
- enemy(8, 6).bombRange(4).bombsLeft(7).maxBombs(7).id(0);
- enemy(5, 2).bombRange(7).bombsLeft(3).maxBombs(5).id(1);
- me(6, 3).bombRange(9).bombsLeft(8).maxBombs(9).id(2);
- addBomb(6, 1, 3).range(7).ownerId(1);
- addBomb(6, 2, 4).range(7).ownerId(1);
- addBomb(4, 2, 4).range(9).ownerId(2);
- bonus(2, 1, RANGE);
- bonus(3, 0, RANGE);
- bonus(9, 6, RANGE);
- bonus(7, 6, COUNT);
- bonus(7, 0, RANGE);
- checkForbidden(move(6, 4));
- }
- @Test
- void scoreCalculationBug3() {
- board("" +
- "bm0\n" +
- "..."
- );
- depth(3);
- addBomb().timer(3).ownerId(1);
- check(bomb(1, 1));
- }
- @Test
- void testBoxDestruction() {
- board("" +
- "00m..\n" +
- ".bX..\n" +
- "..X..\n" +
- "..X.."
- );
- depth(3);
- addBomb().timer(8);
- check(bomb(0, 3));
- }
- @Test
- void testBoxWithBonusDestruction() {
- board("" +
- "01m..\n" +
- ".bX..\n" +
- "..X..\n" +
- "..X.."
- );
- depth(3);
- addBomb().timer(8);
- checkForbidden(bomb(0, 3));
- }
- @Test
- void boxWithBonusDestruction() {
- board("" +
- "Xm1b.\n" +
- "..X..\n" +
- "..X..\n" +
- "..X..\n" +
- "0...."
- );
- depth(3);
- addBomb().timer(1);
- check(move(0, 1));
- }
- @Test
- void testBug1790060502() {
- round(63);
- board("" +
- ".............\n" +
- ".X.X.X.X.X.X.\n" +
- ".............\n" +
- ".X.X.X.X.X.X2\n" +
- ".............\n" +
- ".X.X1X.X.X.X.\n" +
- ".............\n" +
- "2X.X0X.X.X.X2\n" +
- "020.2........\n" +
- ".X.X.X.X.X.X.\n" +
- "..1.12......."
- );
- enemy(4, 2).bombRange(5).bombsLeft(2).maxBombs(4).id(0);
- enemy(8, 6).bombRange(5).bombsLeft(4).maxBombs(6).id(1);
- me(2, 12).bombRange(5).bombsLeft(4).maxBombs(5).id(2);
- addBomb(10, 7, 2).range(5).ownerId(1);
- addBomb(3, 0, 4).range(5).ownerId(0);
- addBomb(4, 0, 7).range(5).ownerId(0);
- addBomb(0, 12, 7).range(5).ownerId(2);
- addBomb(8, 5, 8).range(5).ownerId(1);
- bonus(6, 6, RANGE);
- bonus(7, 6, RANGE);
- bonus(6, 2, RANGE);
- bonus(0, 5, COUNT);
- bonus(3, 6, RANGE);
- checkForbidden(move(2, 12));
- }
- @Test
- void collectCountBonus() {
- board("" +
- "....C\n" +
- "...mX\n" +
- "....0\n" +
- "....."
- );
- depth(3);
- check(move(0, 3));
- }
- @Test
- void collectCountBonus2() {
- board("" +
- "....0\n" +
- "...mX\n" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- ".....\n" +
- "....C"
- );
- depth(3);
- check(move(2, 3));
- }
- @Test
- void collectCountBonus3() {
- board("" +
- "2XX1\n" +
- "..m.\n" +
- "....\n" +
- "...."
- );
- depth(3);
- check(move(1, 1));
- }
- @Test
- void testBug1114226226() {
- round(79);
- board("" +
- "..........1..\n" +
- ".X.X.X.X.X.X.\n" +
- ".........22.0\n" +
- ".X.X.X.X.X.X2\n" +
- "..........120\n" +
- "2X.X.X.X.X.X2\n" +
- ".............\n" +
- "2X.X.X.X.X.X.\n" +
- ".............\n" +
- ".X.X.X.X.X.X.\n" +
- "............."
- );
- me(4, 2).bombRange(7).bombsLeft(5).maxBombs(6).id(0);
- enemy(6, 11).bombRange(11).bombsLeft(2).maxBombs(4).id(1);
- addBomb(8, 10, 3).range(11).ownerId(1);
- addBomb(6, 0, 5).range(7).ownerId(0);
- addBomb(8, 12, 5).range(11).ownerId(1);
- bonus(3, 0, COUNT);
- bonus(2, 7, RANGE);
- bonus(4, 9, RANGE);
- bonus(10, 2, RANGE);
- checkForbidden(move(4, 1));
- }
- @Test
- void cooldownFactorBug() {
- board("" +
- "C...\n" +
- "Xm..\n" +
- "....\n" +
- "....\n" +
- "....\n" +
- "....\n" +
- "0..."
- );
- depth(3);
- me().bombsLeft(10);
- check(move(2, 1));
- }
- @Test
- void dontIdleWithBombs() {
- board("" +
- "0X..\n" +
- "mX..\n" +
- ".X..\n" +
- ".X..\n" +
- "....\n" +
- "....\n" +
- "...."
- );
- depth(3);
- me().bombsLeft(10).bombRange(20);
- check(bomb(2, 0));
- }
- @Test
- void scoreIdleFactor() {
- board("" +
- "mX..\n" +
- ".0..\n" +
- "....\n" +
- "....\n" +
- "....\n" +
- "....\n" +
- "...."
- );
- depth(3);
- me().bombsLeft(10);
- check(bomb(1, 0));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment