package puzzle; import lombok.AccessLevel; import lombok.experimental.FieldDefaults; import org.junit.jupiter.api.Test; import puzzle.Export.Clue; import puzzle.Masker.Clues; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import static precomp.Const9x8.*; import static precomp.Const9x8.Cell.*; public class CornerClueTest { @Test void testCornerDownSlot() { var clues = Clues.createEmpty().setClue(r0c0d4); // Clue op (0,0), type 4 (Corner Down) assertEquals(r0c0d4.d, clues.getDir(r0c0d4.index)); // Controleer of forEachSlot het slot vindt final var found = new boolean[]{ false }; clues.forEachSlot((key, lo, hi) -> { if (key == r0c0d4.slotKey) { found[0] = true; // Woord zou moeten starten op (0,1) assertTrue((lo & (1L << OFF_0_1)) != 0, "Slot should start at (0,1)"); // En omlaag gaan assertTrue((lo & (1L << OFF_1_1)) != 0, "Slot should continue to (1,1)"); // Lengte van het slot zou 8 moeten zijn (van rij 0 t/m 7 in kolom 1) assertEquals(8, Masker.Slot.length(lo, hi)); } }); assertTrue(found[0], "Corner Down slot should be found"); } @Test void testCornerDownExtraction() { var slots = Masker.slots(Clues.createEmpty().setClue(r0c0d4), DictData.DICT.index()); assertEquals(1, slots.length); assertEquals(r0c0d4.d, Masker.Slot.dir(slots[0].key())); } @Test void testCornerDownLeftSlot() { var clues = Clues.createEmpty().setClue(r0c1d5); assertEquals(r0c1d5.d, clues.getDir(r0c1d5.index)); // Controleer of forEachSlot het slot vindt final var found = new boolean[]{ false }; clues.forEachSlot((key, lo, hi) -> { if (key == r0c1d5.slotKey) { found[0] = true; // Woord zou moeten starten op (0,0) assertTrue((lo & (1L << OFF_0_0)) != 0, "Slot should start at (0,0)"); // En omlaag gaan assertTrue((lo & (1L << OFF_1_0)) != 0, "Slot should continue to (1,0)"); // Lengte van het slot zou 8 moeten zijn (van rij 0 t/m 7 in kolom 0) assertEquals(8, Masker.Slot.length(lo, hi)); } }); assertTrue(found[0], "Corner Down Left slot should be found"); } @Test void testCornerDownLeftExtraction() { var slots = Masker.slots(Clues.createEmpty().setClue(r0c1d5), DictData.DICT.index()); assertEquals(1, slots.length); assertEquals(r0c1d5.d, Masker.Slot.dir(slots[0].key())); } }