78 lines
2.6 KiB
Java
78 lines
2.6 KiB
Java
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()));
|
|
}
|
|
}
|