This commit is contained in:
mike
2026-01-23 20:33:36 +01:00
parent fa3e8ef1ed
commit 73192f5905
8 changed files with 132 additions and 116 deletions

View File

@@ -4,9 +4,8 @@ import lombok.val;
import org.junit.jupiter.api.Test;
import puzzle.Export.Signa;
import puzzle.Export.Puzzle;
import puzzle.Export.Placed;
import puzzle.Export.PuzzleResult;
import puzzle.Export.Rewards;
import puzzle.Riddle.Rewards;
import puzzle.SwedishGenerator.Assign;
import puzzle.SwedishGenerator.FillResult;
import puzzle.SwedishGenerator.Lemma;
@@ -27,10 +26,13 @@ import static puzzle.Masker.STACK_SIZE;
public class MarkerTest {
private static Masker emptyMasker() {
return new Masker(new Rng(42), new int[STACK_SIZE], Clues.createEmpty());
}
@Test
void testValidRandomMask() {
var rng = new Rng(42);
var masker = new Masker(rng, new int[STACK_SIZE], Clues.createEmpty());
var masker = emptyMasker();
for (var i = 0; i < 200; i++) {
for (var j = 19; j < 24; j++) {
var clues = masker.randomMask(j);
@@ -40,15 +42,13 @@ public class MarkerTest {
}
@Test
void testValidMutate() {
var rng = new Rng(42);
var cache = Clues.createEmpty();
var masker = new Masker(rng, new int[STACK_SIZE], cache);
var masker = emptyMasker();
var sim = 0.0;
var simCount = 0.0;
for (var i = 0; i < 200; i++) {
for (var j = 19; j < 24; j++) {
var clues = masker.randomMask(j);
val orig = cache.from(clues);
val orig = masker.cache(clues);
simCount++;
masker.mutate(clues);
sim += Masker.similarity(orig, clues);
@@ -59,9 +59,7 @@ public class MarkerTest {
}
@Test
void testCross() {
var rng = new Rng(42);
var cache = Clues.createEmpty();
var masker = new Masker(rng, new int[STACK_SIZE], cache);
var masker = emptyMasker();
var sim = 0.0;
var simCount = 0.0;
for (var i = 0; i < 200; i++) {
@@ -97,7 +95,7 @@ public class MarkerTest {
@Test
void testIsValid() {
var masker = new Masker(new Rng(42), new int[STACK_SIZE], Clues.createEmpty());
var masker = emptyMasker();
assertTrue(masker.isValid(Clues.createEmpty()));
// Valid clue: Right from (0,0) in 9x8 grid. Length is 8.
@@ -132,7 +130,7 @@ public class MarkerTest {
@Test
void testIntersectionConstraint() {
var masker = new Masker(new Rng(42), new int[STACK_SIZE], Clues.createEmpty());
var masker = emptyMasker();
// Clue 1: (0,0) Right. Slot cells: (0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8)
// Clue 2: (1,2) Up. Slot cells: (0,2)
// Intersection is exactly 1 cell (0,2). Valid.
@@ -152,7 +150,7 @@ public class MarkerTest {
@Test
void testInvalidDirectionBits() {
var masker = new Masker(new Rng(42), new int[STACK_SIZE], Clues.createEmpty());
var masker = emptyMasker();
var g = Clues.createEmpty();
// Dir 6 (x=1, r=1, v=0) is invalid
g.setClueLo(1L << 0, (byte) 6);
@@ -165,8 +163,7 @@ public class MarkerTest {
}
@Test
void testConnectivityPenalty() {
var rng = new Rng(42);
var masker = new Masker(rng, new int[STACK_SIZE], Clues.createEmpty());
var masker = emptyMasker();
// 1. Maak een masker met één component van clues (bijv. 2 clues die elkaar kruisen)
var singleComp = Clues.createEmpty().setClue(r0c0d1).setClue(r2c2d2);
@@ -209,8 +206,7 @@ public class MarkerTest {
@Test
void testCornerClueConnectivity() {
var rng = new Rng(42);
var masker = new Masker(rng, new int[STACK_SIZE], Clues.createEmpty());
var masker = emptyMasker();
// Clue A: (2,0) Right. Slot: (2,1), (2,2), (2,3), ...
// Clue B: (1,2) Corner Down. Word starts at (1,3) en gaat omlaag: (1,3), (2,3), (3,3)...
@@ -316,7 +312,7 @@ public class MarkerTest {
assertEquals(1, exported.words().length);
var w = exported.words()[0];
assertEquals("TEST", w.word());
assertEquals(Placed.HORIZONTAL, w.direction());
assertEquals(Riddle.Placed.HORIZONTAL, w.direction());
// The bounding box should include (0,0) for the arrow and (0,1)-(0,4) for the word.
// minR=0, maxR=0, minC=0, maxC=4