Gather data
This commit is contained in:
@@ -47,11 +47,11 @@ public class MainTest {
|
||||
|
||||
@Test
|
||||
void testStaticSlotMethods() {
|
||||
// Test static r and c extraction
|
||||
// packedRs: 1 at index 0, 2 at index 1
|
||||
var packedRs = (1L << 0) | (2L << 4);
|
||||
assertEquals(1, Slot.r(packedRs, 0));
|
||||
assertEquals(2, Slot.r(packedRs, 1));
|
||||
// Test static offset extraction
|
||||
// packedPos: offset(1, 1) at index 0, offset(2, 2) at index 1
|
||||
var packedPos = ((long) SwedishGenerator.Grid.offset(1, 1)) | (((long) SwedishGenerator.Grid.offset(2, 2)) << 7);
|
||||
assertEquals(SwedishGenerator.Grid.offset(1, 1), Slot.offset(packedPos, 0));
|
||||
assertEquals(SwedishGenerator.Grid.offset(2, 2), Slot.offset(packedPos, 1));
|
||||
|
||||
// Test static horiz
|
||||
// dir 2 (right) is horizontal
|
||||
@@ -67,21 +67,21 @@ public class MainTest {
|
||||
grid.setCharAt(0, 0, '2'); // right
|
||||
|
||||
var count = new AtomicInteger(0);
|
||||
generator.forEachSlot(grid, (key, rs, cs, len) -> {
|
||||
generator.forEachSlot(grid, (key, packedPos, len) -> {
|
||||
count.incrementAndGet();
|
||||
assertEquals(8, len);
|
||||
assertEquals(0, Slot.r(rs, 0));
|
||||
assertEquals(1, Slot.c(cs, 0));
|
||||
assertEquals(0, SwedishGenerator.Grid.r(Slot.offset(packedPos, 0)));
|
||||
assertEquals(1, SwedishGenerator.Grid.c(Slot.offset(packedPos, 0)));
|
||||
});
|
||||
assertEquals(1, count.get());
|
||||
}
|
||||
@Test
|
||||
public void testHoriz() {
|
||||
assertTrue(new Slot(2, 0L, 0L, 1).horiz());
|
||||
assertTrue(new Slot(4, 0L, 0L, 1).horiz());
|
||||
assertFalse(new Slot(1, 0L, 3L, 1).horiz());
|
||||
assertFalse(new Slot(3, 0L, 3L, 1).horiz());
|
||||
assertFalse(new Slot(5, 0L, 3L, 1).horiz());
|
||||
assertTrue(Slot.from(2, 0L, 1).horiz());
|
||||
assertTrue(Slot.from(4, 0L, 1).horiz());
|
||||
assertFalse(Slot.from(1, 0L, 1).horiz());
|
||||
assertFalse(Slot.from(3, 0L, 1).horiz());
|
||||
assertFalse(Slot.from(5, 0L, 1).horiz());
|
||||
}
|
||||
@Test
|
||||
public void testGridBasics() {
|
||||
|
||||
@@ -12,6 +12,45 @@ import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
public class SwedishGeneratorTest {
|
||||
|
||||
@Test
|
||||
void testPatternForSlotAllLetters() {
|
||||
var grid = new Grid(new byte[]{ 65, 66, 67 }); // A B C
|
||||
var slot = Slot.from(0 << 8 | 1 << 4 | 2, ((long) 0) | ((long) 1 << 7) | ((long) 2 << 14), 3);
|
||||
var pattern = new char[3];
|
||||
SwedishGenerator.patternForSlot(grid, slot, pattern);
|
||||
|
||||
assertArrayEquals(new char[]{ 'A', 'B', 'C' }, pattern);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPatternForSlotMixed() {
|
||||
var grid = new Grid(new byte[]{ 65, (byte) ('0' + 1), 67 }); // A - C
|
||||
var slot = Slot.from(0 << 8 | 1 << 4 | 2, ((long) 0) | ((long) 1 << 7) | ((long) 2 << 14), 3);
|
||||
var pattern = new char[3];
|
||||
SwedishGenerator.patternForSlot(grid, slot, pattern);
|
||||
|
||||
assertArrayEquals(new char[]{ 'A', SwedishGenerator.C_DASH, 'C' }, pattern);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPatternForSlotAllDashes() {
|
||||
var grid = new Grid(new byte[]{ (byte) ('0' + 1), (byte) ('0' + 1), (byte) ('0' + 1) }); // - - -
|
||||
var slot = Slot.from(0 << 8 | 1 << 4 | 2, ((long) 0) | ((long) 1 << 7) | ((long) 2 << 14), 3);
|
||||
var pattern = new char[3];
|
||||
SwedishGenerator.patternForSlot(grid, slot, pattern);
|
||||
|
||||
assertArrayEquals(new char[]{ SwedishGenerator.C_DASH, SwedishGenerator.C_DASH, SwedishGenerator.C_DASH }, pattern);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPatternForSlotSingleLetter() {
|
||||
var grid = new Grid(new byte[]{ 65, (byte) ('0' + 1), (byte) ('0' + 1) }); // A - -
|
||||
var slot = Slot.from(0 << 8 | 1 << 4 | 2, ((long) 0) | ((long) 1 << 7) | ((long) 2 << 14), 3);
|
||||
var pattern = new char[3];
|
||||
SwedishGenerator.patternForSlot(grid, slot, pattern);
|
||||
|
||||
assertArrayEquals(new char[]{ 'A', SwedishGenerator.C_DASH, SwedishGenerator.C_DASH }, pattern);
|
||||
}
|
||||
@Test
|
||||
void testRng() {
|
||||
var rng = new Rng(123);
|
||||
@@ -92,19 +131,16 @@ public class SwedishGeneratorTest {
|
||||
@Test
|
||||
void testSlot() {
|
||||
// key = (r << 8) | (c << 4) | d
|
||||
var key = (2 << 8) | (3 << 4) | 5;
|
||||
long rs = 0;
|
||||
long cs = 0;
|
||||
// rs: [2, 3, 4] -> packed 4-bit: 2 | (3<<4) | (4<<8)
|
||||
rs |= 2L;
|
||||
rs |= 3L << 4;
|
||||
rs |= 4L << 8;
|
||||
// cs: [5, 5, 5]
|
||||
cs |= 5L;
|
||||
cs |= 5L << 4;
|
||||
cs |= 5L << 8;
|
||||
var key = (2 << 8) | (3 << 4) | 5;
|
||||
long packedPos = 0;
|
||||
// pos 0: (2, 5)
|
||||
packedPos |= (long) Grid.offset(2, 5) << 0;
|
||||
// pos 1: (3, 5)
|
||||
packedPos |= (long) Grid.offset(3, 5) << 7;
|
||||
// pos 2: (4, 5)
|
||||
packedPos |= (long) Grid.offset(4, 5) << 14;
|
||||
|
||||
var s = new Slot(key, rs, cs, 3);
|
||||
var s = Slot.from(key, packedPos, 3);
|
||||
assertEquals(2, s.clueR());
|
||||
assertEquals(3, s.clueC());
|
||||
assertEquals(5, s.dir());
|
||||
@@ -223,7 +259,8 @@ public class SwedishGeneratorTest {
|
||||
void testBacktrackingHelpers() {
|
||||
var grid = SwedishGenerator.makeEmptyGrid();
|
||||
// Slot at 0,1 length 2
|
||||
var s = new Slot((0 << 8) | (1 << 4) | 2, 0L, (1L | (2L << 4)), 2);
|
||||
var packedPos = ((long) Grid.offset(0, 1)) | (((long) Grid.offset(0, 2)) << 7);
|
||||
var s = Slot.from((0 << 8) | (1 << 4) | 2, packedPos, 2);
|
||||
var w = new Lemma("AZ", 1, "A to Z");
|
||||
var undoBuffer = new long[10];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user