Tue, 28 Jul 2020 13:48:59 +0200
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 | } |