src/test/java/de/uapcore/sudoku/DocumentHandlerTest.java

Tue, 28 Jul 2020 13:48:59 +0200

author
Mike Becker <universe@uap-core.de>
date
Tue, 28 Jul 2020 13:48:59 +0200
changeset 20
a95423d37588
child 21
11cb2d9413d4
permissions
-rw-r--r--

adds more tests

universe@20 1 package de.uapcore.sudoku;
universe@20 2
universe@20 3 import org.junit.jupiter.api.Test;
universe@20 4
universe@20 5 import java.io.File;
universe@20 6 import java.io.FileOutputStream;
universe@20 7 import java.io.IOException;
universe@20 8 import java.nio.file.Files;
universe@20 9
universe@20 10 import static org.junit.jupiter.api.Assertions.*;
universe@20 11
universe@20 12 class DocumentHandlerTest {
universe@20 13
universe@20 14 @Test
universe@20 15 void testFilenameManagement() {
universe@20 16 final var dh = new DocumentHandler();
universe@20 17 assertFalse(dh.isFilenameSet());
universe@20 18 dh.setFilename("foo");
universe@20 19 assertTrue(dh.isFilenameSet());
universe@20 20 dh.clearFilename();
universe@20 21 assertFalse(dh.isFilenameSet());
universe@20 22 }
universe@20 23
universe@20 24 private File extractFile(String name) throws IOException {
universe@20 25 final var f = File.createTempFile("sudoku-test", ".txt");
universe@20 26 try (var in = DocumentHandlerTest.class.getClassLoader().getResourceAsStream(name);
universe@20 27 var out = new FileOutputStream(f)) {
universe@20 28 in.transferTo(out);
universe@20 29 }
universe@20 30 return f;
universe@20 31 }
universe@20 32
universe@20 33 private int[] createTestdata() {
universe@20 34 return new int[]{0,1,0,9,0,0,8,0,0,
universe@20 35 0,0,0,0,0,8,0,0,4,
universe@20 36 6,0,5,0,0,0,7,0,0,
universe@20 37 0,9,0,0,6,0,0,0,8,
universe@20 38 0,0,0,2,0,7,0,0,0,
universe@20 39 8,0,0,0,3,0,0,6,0,
universe@20 40 0,0,2,0,0,0,5,0,3,
universe@20 41 1,0,0,4,0,0,0,0,0,
universe@20 42 0,0,6,0,0,2,0,1,0};
universe@20 43 }
universe@20 44
universe@20 45 @Test
universe@20 46 void load() throws IOException {
universe@20 47 final var f = extractFile("test-sudoku");
universe@20 48 final var dh = new DocumentHandler();
universe@20 49 final var field = new Field();
universe@20 50 dh.setFilename(f.getAbsolutePath());
universe@20 51 dh.load(field);
universe@20 52
universe@20 53 final var expected = createTestdata();
universe@20 54 for (int x = 0 ; x < 9 ; x++) {
universe@20 55 for (int y = 0 ; y < 9 ; y++) {
universe@20 56 assertEquals(expected[x+9*y], field.getCellValue(x, y));
universe@20 57 }
universe@20 58 }
universe@20 59 }
universe@20 60
universe@20 61 @Test
universe@20 62 void save() throws IOException {
universe@20 63 final var f = File.createTempFile("sudoku-test", ".txt");
universe@20 64 final var dh = new DocumentHandler();
universe@20 65
universe@20 66 final var field = new Field();
universe@20 67 final var testdata = createTestdata();
universe@20 68 for (int x = 0 ; x < 9 ; x++) {
universe@20 69 for (int y = 0 ; y < 9 ; y++) {
universe@20 70 field.setCellValue(x, y, testdata[x+9*y]);
universe@20 71 }
universe@20 72 }
universe@20 73
universe@20 74 dh.setFilename(f.getAbsolutePath());
universe@20 75 dh.save(field);
universe@20 76
universe@20 77 final String[] expected = {
universe@20 78 "_ 1 _ 9 _ _ 8 _ _",
universe@20 79 "_ _ _ _ _ 8 _ _ 4",
universe@20 80 "6 _ 5 _ _ _ 7 _ _",
universe@20 81 "_ 9 _ _ 6 _ _ _ 8",
universe@20 82 "_ _ _ 2 _ 7 _ _ _",
universe@20 83 "8 _ _ _ 3 _ _ 6 _",
universe@20 84 "_ _ 2 _ _ _ 5 _ 3",
universe@20 85 "1 _ _ 4 _ _ _ _ _",
universe@20 86 "_ _ 6 _ _ 2 _ 1 _"
universe@20 87 };
universe@20 88
universe@20 89 final var actual = Files.readAllLines(f.toPath());
universe@20 90
universe@20 91 assertEquals(expected.length, actual.size());
universe@20 92 for (int i = 0 ; i < expected.length ; i++) {
universe@20 93 assertEquals(expected[i], actual.get(i));
universe@20 94 }
universe@20 95 }
universe@20 96 }

mercurial