1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/test/java/de/uapcore/sudoku/DocumentHandlerTest.java Tue Jul 28 13:48:59 2020 +0200 1.3 @@ -0,0 +1,96 @@ 1.4 +package de.uapcore.sudoku; 1.5 + 1.6 +import org.junit.jupiter.api.Test; 1.7 + 1.8 +import java.io.File; 1.9 +import java.io.FileOutputStream; 1.10 +import java.io.IOException; 1.11 +import java.nio.file.Files; 1.12 + 1.13 +import static org.junit.jupiter.api.Assertions.*; 1.14 + 1.15 +class DocumentHandlerTest { 1.16 + 1.17 + @Test 1.18 + void testFilenameManagement() { 1.19 + final var dh = new DocumentHandler(); 1.20 + assertFalse(dh.isFilenameSet()); 1.21 + dh.setFilename("foo"); 1.22 + assertTrue(dh.isFilenameSet()); 1.23 + dh.clearFilename(); 1.24 + assertFalse(dh.isFilenameSet()); 1.25 + } 1.26 + 1.27 + private File extractFile(String name) throws IOException { 1.28 + final var f = File.createTempFile("sudoku-test", ".txt"); 1.29 + try (var in = DocumentHandlerTest.class.getClassLoader().getResourceAsStream(name); 1.30 + var out = new FileOutputStream(f)) { 1.31 + in.transferTo(out); 1.32 + } 1.33 + return f; 1.34 + } 1.35 + 1.36 + private int[] createTestdata() { 1.37 + return new int[]{0,1,0,9,0,0,8,0,0, 1.38 + 0,0,0,0,0,8,0,0,4, 1.39 + 6,0,5,0,0,0,7,0,0, 1.40 + 0,9,0,0,6,0,0,0,8, 1.41 + 0,0,0,2,0,7,0,0,0, 1.42 + 8,0,0,0,3,0,0,6,0, 1.43 + 0,0,2,0,0,0,5,0,3, 1.44 + 1,0,0,4,0,0,0,0,0, 1.45 + 0,0,6,0,0,2,0,1,0}; 1.46 + } 1.47 + 1.48 + @Test 1.49 + void load() throws IOException { 1.50 + final var f = extractFile("test-sudoku"); 1.51 + final var dh = new DocumentHandler(); 1.52 + final var field = new Field(); 1.53 + dh.setFilename(f.getAbsolutePath()); 1.54 + dh.load(field); 1.55 + 1.56 + final var expected = createTestdata(); 1.57 + for (int x = 0 ; x < 9 ; x++) { 1.58 + for (int y = 0 ; y < 9 ; y++) { 1.59 + assertEquals(expected[x+9*y], field.getCellValue(x, y)); 1.60 + } 1.61 + } 1.62 + } 1.63 + 1.64 + @Test 1.65 + void save() throws IOException { 1.66 + final var f = File.createTempFile("sudoku-test", ".txt"); 1.67 + final var dh = new DocumentHandler(); 1.68 + 1.69 + final var field = new Field(); 1.70 + final var testdata = createTestdata(); 1.71 + for (int x = 0 ; x < 9 ; x++) { 1.72 + for (int y = 0 ; y < 9 ; y++) { 1.73 + field.setCellValue(x, y, testdata[x+9*y]); 1.74 + } 1.75 + } 1.76 + 1.77 + dh.setFilename(f.getAbsolutePath()); 1.78 + dh.save(field); 1.79 + 1.80 + final String[] expected = { 1.81 + "_ 1 _ 9 _ _ 8 _ _", 1.82 + "_ _ _ _ _ 8 _ _ 4", 1.83 + "6 _ 5 _ _ _ 7 _ _", 1.84 + "_ 9 _ _ 6 _ _ _ 8", 1.85 + "_ _ _ 2 _ 7 _ _ _", 1.86 + "8 _ _ _ 3 _ _ 6 _", 1.87 + "_ _ 2 _ _ _ 5 _ 3", 1.88 + "1 _ _ 4 _ _ _ _ _", 1.89 + "_ _ 6 _ _ 2 _ 1 _" 1.90 + }; 1.91 + 1.92 + final var actual = Files.readAllLines(f.toPath()); 1.93 + 1.94 + assertEquals(expected.length, actual.size()); 1.95 + for (int i = 0 ; i < expected.length ; i++) { 1.96 + assertEquals(expected[i], actual.get(i)); 1.97 + } 1.98 + } 1.99 +}