introduce bitloops

This commit is contained in:
mike
2026-01-14 08:36:31 +01:00
parent 6e2ecae082
commit bd52bd0ef0
5 changed files with 24 additions and 29 deletions

View File

@@ -15,6 +15,9 @@ import java.io.IOException;
import java.nio.file.Paths;
import static org.junit.jupiter.api.Assertions.*;
import static puzzle.MainTest.*;
import static puzzle.MainTest.LETTER_E;
import static puzzle.MainTest.LETTER_T;
import static puzzle.SwedishGenerator.*;
public class ExportFormatTest {
@@ -42,10 +45,10 @@ public class ExportFormatTest {
clueMap[key] = SwedishGeneratorTest.TEST;
// Manually fill the grid letters for "TEST" at (0,1), (0,2), (0,3), (0,4)
grid.setLetter(Grid.offset(0, 1), (byte) 'T');
grid.setLetter(Grid.offset(0, 2), (byte) 'E');
grid.setLetter(Grid.offset(0, 3), (byte) 'S');
grid.setLetter(Grid.offset(0, 4), (byte) 'T');
grid.setLetter(Grid.offset(0, 1), LETTER_T);
grid.setLetter(Grid.offset(0, 2), LETTER_E);
grid.setLetter(Grid.offset(0, 3), LETTER_S);
grid.setLetter(Grid.offset(0, 4), LETTER_T);
var fillResult = new FillResult(true, new Gridded(grid), clueMap, new FillStats(0, 0, 0, 0));
var puzzleResult = new PuzzleResult(new Clued(clues), fillResult);

View File

@@ -21,6 +21,9 @@ public class MainTest {
static final byte LETTER_A = (byte) 'A';
static final byte LETTER_B = (byte) 'B';
static final byte LETTER_Z = (byte) 'Z';
static final byte LETTER_T = (byte) 'T';
static final byte LETTER_E = (byte) 'E';
static final byte LETTER_S = (byte) 'S';
static final byte CLUE_DOWN = 0;
static final byte CLUE_RIGHT = 1;
static final byte CLUE_UP = 2;

View File

@@ -132,7 +132,7 @@ public class SwedishGeneratorTest {
void testGrid() {
var grid = createEmpty();
grid.setLetter(OFF_0_0, LETTER_A);
assertEquals('A', grid.letter32At(OFF_0_0));
assertEquals(LETTER_A, grid.letter32At(OFF_0_0));
}
@Test
@@ -333,9 +333,9 @@ public class SwedishGeneratorTest {
// 1. Successful placement in empty grid
assertTrue(placeWord(grid, s, w1, undoBuffer, 0));
assertEquals('A', grid.letter32At(OFF_0_0));
assertEquals('B', grid.letter32At(OFF_0_1));
assertEquals('C', grid.letter32At(OFF_0_2));
assertEquals(LETTER_A, grid.letter32At(OFF_0_0));
assertEquals(LETTER_B, grid.letter32At(OFF_0_1));
assertEquals(LETTER_C, grid.letter32At(OFF_0_2));
assertEquals(lo, undoBuffer[0]);
// 2. Successful placement with partial overlap (same characters)
@@ -346,9 +346,9 @@ public class SwedishGeneratorTest {
var w2 = ABD;
assertFalse(placeWord(grid, s, w2, undoBuffer, 2));
// Verify grid is unchanged (still "ABC")
assertEquals('A', grid.letter32At(OFF_0_0));
assertEquals('B', grid.letter32At(OFF_0_1));
assertEquals('C', grid.letter32At(OFF_0_2));
assertEquals(LETTER_A, grid.letter32At(OFF_0_0));
assertEquals(LETTER_B, grid.letter32At(OFF_0_1));
assertEquals(LETTER_C, grid.letter32At(OFF_0_2));
// 4. Partial placement then conflict (rollback)
grid = createEmpty();
@@ -357,7 +357,7 @@ public class SwedishGeneratorTest {
// Verify grid is still empty (except for 'X')
assertEquals(DASH, grid.letter32At(OFF_0_0));
assertEquals(DASH, grid.letter32At(OFF_0_1));
assertEquals('X', grid.letter32At(OFF_0_2));
assertEquals(LETTER_X, grid.letter32At(OFF_0_2));
}
@Test
@@ -372,8 +372,8 @@ public class SwedishGeneratorTest {
var placed = placeWord(grid, s, w, undoBuffer, 0);
assertTrue(placed);
assertEquals('A', grid.letter32At(OFF_0_1));
assertEquals('Z', grid.letter32At(OFF_0_2));
assertEquals(LETTER_A, grid.letter32At(OFF_0_1));
assertEquals(LETTER_Z, grid.letter32At(OFF_0_2));
assertEquals(lo, undoBuffer[0]);
grid.undoPlace(undoBuffer[0], undoBuffer[1]);