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

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

mercurial