Код:
abz.setA(cpu, 1); // A: 0 -> 1
executeBlock(cpu);
assertEquals(abz.getCounter(cpu), 1, "counter");
assertEquals(abz.getPosition(cpu), ((-1) & 0xffff), "position");
assertEquals(abz.getZeroDetected(cpu), 0, "zero detected");
executeBlock(cpu); // Если входы не менялись, выходы меняться не должны
assertEquals(abz.getCounter(cpu), 1, "counter");
assertEquals(abz.getPosition(cpu), ((-1) & 0xffff), "position");
assertEquals(abz.getZeroDetected(cpu), 0, "zero detected");
abz.setB(cpu, 1); // B: 0 -> 1
executeBlock(cpu);
assertEquals(abz.getCounter(cpu), 2, "counter");
assertEquals(abz.getPosition(cpu), ((-2) & 0xffff), "position");
assertEquals(abz.getZeroDetected(cpu), 0, "zero detected");
abz.setA(cpu, 0); // A: 1 -> 0
executeBlock(cpu);
assertEquals(abz.getCounter(cpu), 3, "counter");
assertEquals(abz.getPosition(cpu), ((-3) & 0xffff), "position");
assertEquals(abz.getZeroDetected(cpu), 0, "zero detected");
// Теперь крутим обратно
abz.setA(cpu, 1); // A: 0 -> 1
executeBlock(cpu);
assertEquals(abz.getCounter(cpu), 4, "counter");
assertEquals(abz.getPosition(cpu), ((-2) & 0xffff), "position");
assertEquals(abz.getZeroDetected(cpu), 0, "zero detected");
abz.setB(cpu, 0); // B: 1 -> 0
executeBlock(cpu); // Если входы не менялись, выходы меняться не должны
assertEquals(abz.getCounter(cpu), 5, "counter");
assertEquals(abz.getPosition(cpu), ((-1) & 0xffff), "position");
assertEquals(abz.getZeroDetected(cpu), 0, "zero detected");
// Теперь снова меняем направление
abz.setB(cpu, 1); // B: 0 -> 1
executeBlock(cpu); // Если входы не менялись, выходы меняться не должны
assertEquals(abz.getCounter(cpu), 6, "counter");
assertEquals(abz.getPosition(cpu), ((-2) & 0xffff), "position");
assertEquals(abz.getZeroDetected(cpu), 0, "zero detected");
abz.setA(cpu, 0); // A: 1 -> 0
executeBlock(cpu);
assertEquals(abz.getCounter(cpu), 7, "counter");
assertEquals(abz.getPosition(cpu), ((-3) & 0xffff), "position");
assertEquals(abz.getZeroDetected(cpu), 0, "zero detected");