feat(io): GameIO.choose numbered-menu primitive (console default)

This commit is contained in:
2026-06-01 14:26:43 +02:00
parent beba1c7e72
commit b73d0aaa82
2 changed files with 68 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
package thb.jeanluc.adventure.io;
import org.junit.jupiter.api.Test;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
class ChooseDefaultTest {
@Test
void returnsZeroBasedIndexOfValidChoice() {
TestIO io = new TestIO().enqueue("2");
int i = io.choose("Menu", List.of("A", "B", "C"));
assertThat(i).isEqualTo(1);
}
@Test
void rePromptsOnInvalidThenAccepts() {
TestIO io = new TestIO().enqueue("9").enqueue("x").enqueue("1");
int i = io.choose("Menu", List.of("A", "B"));
assertThat(i).isZero();
assertThat(io.allOutput()).contains("between 1 and 2");
}
@Test
void eofReturnsLastOption() {
TestIO io = new TestIO(); // empty queue → readLine() returns null
int i = io.choose("Menu", List.of("Play", "Quit"));
assertThat(i).isEqualTo(1);
}
}