Skip to content

Commit 8f533f9

Browse files
committed
add
1 parent fa30311 commit 8f533f9

File tree

5 files changed

+78
-190
lines changed

5 files changed

+78
-190
lines changed

app/src/main/java/hexlet/code/source/Differ.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import java.nio.file.Files;
1111
import java.nio.file.Path;
1212
import java.util.ArrayList;
13+
import java.util.List;
1314
import java.util.Map;
1415
import java.util.TreeMap;
1516

@@ -38,13 +39,22 @@ public static String generate(String filePath1, String filePath2, String format)
3839

3940
Map<String, Difference> differenceTreeMap = new TreeMap<>();
4041

42+
Map<String, List<Object>> difference = new TreeMap<>();
43+
4144
dataFile1.forEach((key, value) -> {
4245
var currentDifference = new Difference();
4346
currentDifference.setKey(key);
47+
48+
4449
var addValue = value == null ? "null" : value;
4550
currentDifference.setOldValue(addValue);
4651
currentDifference.setState(DEL);
4752
differenceTreeMap.put(key, currentDifference);
53+
54+
//====================================================
55+
var listValues = difference.getOrDefault(key, new ArrayList<>());
56+
listValues.add(DEL + " " + addValue);
57+
difference.put(key, listValues);
4858
});
4959

5060
dataFile2.forEach((key, value) -> {
@@ -60,6 +70,11 @@ public static String generate(String filePath1, String filePath2, String format)
6070
}
6171
currentDifference.setState(addStage);
6272
differenceTreeMap.put(key, currentDifference);
73+
74+
75+
//====================================================
76+
var listValues = difference.getOrDefault(key, new ArrayList<>());
77+
6378
});
6479

6580

app/src/main/java/hexlet/code/source/Difference.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
import lombok.NoArgsConstructor;
66
import lombok.Setter;
77

8+
import java.util.List;
9+
import java.util.Map;
10+
import java.util.TreeMap;
11+
812
@Getter
913
@Setter
1014
@NoArgsConstructor
@@ -15,6 +19,8 @@ public class Difference {
1519
private Object newValue;
1620
private String state;
1721

22+
23+
1824
@Override
1925
public String toString() {
2026
return "Difference{"
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
chars1: [a, b, c]
3+
chars2: [d, e, f]
4+
checked: false
5+
default: null
6+
id: 45
7+
key1: value1
8+
numbers1: [1, 2, 3, 4]
9+
numbers2: [2, 3, 4, 5]
10+
numbers3: [3, 4, 5]
11+
setting1: Some value
12+
setting2: 200
13+
setting3: true
14+
}

app/src/test/java/source/TestJsonDiffer.java

Lines changed: 43 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,18 @@ public class TestJsonDiffer {
1717
static final String PLAIN_REPORT_PATH = "src/test/java/fixtures/Plain";
1818
static final String JSON_REPORT_PATH = "src/test/java/fixtures/Json";
1919

20-
static String differsStylish;
21-
static String differsPlain;
22-
static String differsJson;
2320

21+
private static String differsStylish;
22+
private static String differsPlain;
23+
private static String differsJson;
24+
25+
private final String file1 = "src/test/java/resources/File1.json";
26+
private final String file2 = "src/test/java/resources/File2.json";
27+
private final String wrongFile = "src/test/java/wrongFIle.json";
28+
29+
private final String firstTestFilePath = "src/test/java/resources/TestYamlFile1.yml";
30+
private final String secondTestFilePath = "src/test/java/resources/TestYamlFile2.yml";
31+
private final String wrongTestFilePath = "src/test/resources/WrongYamlFile.yml";
2432

2533
@BeforeAll
2634
public static void readFixtures() throws IOException {
@@ -32,77 +40,59 @@ public static void readFixtures() throws IOException {
3240

3341

3442
@Test
35-
public void testGenerateStylish() {
36-
var file1 = "src/test/java/resources/File1.json";
37-
var file2 = "src/test/java/resources/File2.json";
38-
var formant = "stylish";
39-
String result = "";
40-
try {
41-
result = Differ.generate(file1, file2, formant);
42-
} catch (IOException e) {
43-
throw new RuntimeException(e);
44-
}
45-
assertEquals(differsStylish, result);
43+
public void testGenerateStylish() throws IOException {
44+
var format = "stylish";
45+
46+
var differenceJson = Differ.generate(file1, file2, format);
47+
assertEquals(differsStylish, differenceJson);
48+
49+
String differenceYaml = Differ.generate(firstTestFilePath, secondTestFilePath, format);
50+
assertEquals(differenceYaml, differsStylish);
4651
}
4752

4853
@Test
49-
public void testGeneratePlain() {
50-
var file1 = "src/test/java/resources/File1.json";
51-
var file2 = "src/test/java/resources/File2.json";
52-
var formant = "plain";
53-
String result = "";
54-
try {
55-
result = Differ.generate(file1, file2, formant);
56-
} catch (IOException e) {
57-
throw new RuntimeException(e);
58-
}
59-
assertEquals(differsPlain, result, formant);
54+
public void testGeneratePlain() throws IOException {
55+
var format = "plain";
56+
var differenceJson = Differ.generate(file1, file2, format);
57+
assertEquals(differsPlain, differenceJson, format);
58+
59+
String differenceYaml = Differ.generate(firstTestFilePath, secondTestFilePath, format);
60+
assertEquals(differenceYaml, differsPlain);
6061
}
6162

6263
@Test
63-
public void testGenerateJson() {
64-
var file1 = "src/test/java/resources/File1.json";
65-
var file2 = "src/test/java/resources/File2.json";
66-
var formant = "json";
67-
String result = "";
68-
try {
69-
result = Differ.generate(file1, file2, formant);
70-
} catch (IOException e) {
71-
throw new RuntimeException(e);
72-
}
73-
assertEquals(differsJson, result, formant);
64+
public void testGenerateJson() throws IOException {
65+
var format = "json";
66+
var differenceJson = Differ.generate(file1, file2, format);
67+
assertEquals(differsJson, differenceJson, format);
68+
69+
String difference = Differ.generate(firstTestFilePath, secondTestFilePath, format);
70+
assertEquals(difference, differsJson);
7471
}
7572

7673
@Test
7774
public void testWrongPathFile() {
78-
var file1 = "src/test/java/resources/File1.json";
79-
var wrongFile = "src/test/java/wrongFIle.json";
80-
var formant = "stylish";
81-
75+
var format = "stylish";
8276
var thrownFirstArg = assertThrows(FileNotFoundException.class, () -> {
83-
Differ.generate(wrongFile, file1, formant);
77+
Differ.generate(wrongFile, file1, format);
8478
});
8579
assertEquals("Файл для чтения не найден", thrownFirstArg.getMessage());
8680

8781
var thrownSecondArg = assertThrows(FileNotFoundException.class, () -> {
88-
Differ.generate(file1, wrongFile, formant);
82+
Differ.generate(file1, wrongFile, format);
8983
});
9084
assertEquals("Файл для чтения не найден", thrownSecondArg.getMessage());
9185
}
9286

93-
9487
@Test
95-
public void testGenerateWithoutFormat() {
96-
var file1 = "src/test/java/resources/File1.json";
97-
var file2 = "src/test/java/resources/File2.json";
88+
public void testGenerateWithSomeFile() throws IOException {
89+
String differs = readReroptAsString(Path.of("src/test/java/fixtures/Stylish_same_file"));
9890
var formant = "stylish";
99-
String result = "";
100-
try {
101-
result = Differ.generate(file1, file2, formant);
102-
} catch (IOException e) {
103-
throw new RuntimeException(e);
104-
}
105-
assertEquals(differsStylish, result);
91+
String differenceJson = Differ.generate(file1, file1, formant);
92+
assertEquals(differenceJson, differs);
93+
94+
String differenceYaml= Differ.generate(firstTestFilePath, firstTestFilePath, formant);
95+
assertEquals(differenceYaml, differs);
10696
}
10797

10898

app/src/test/java/source/TestYamlDiffer.java

Lines changed: 0 additions & 137 deletions
This file was deleted.

0 commit comments

Comments
 (0)