Skip to content

Commit 7ec8024

Browse files
jonpereiradevJonathan Pereira
authored andcommitted
Refactory of the strategies.
1 parent f851cf1 commit 7ec8024

9 files changed

Lines changed: 299 additions & 43 deletions

File tree

src/main/java/com/github/jonpereiradev/diffobjects/DiffObjects.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.github.jonpereiradev.diffobjects;
22

3-
import com.github.jonpereiradev.diffobjects.builder.DiffConfiguration;
3+
import com.github.jonpereiradev.diffobjects.builder.DiffConfigurationBuilder;
44
import com.github.jonpereiradev.diffobjects.strategy.DiffMetadata;
55
import com.github.jonpereiradev.diffobjects.strategy.DiffReflections;
66

@@ -60,7 +60,7 @@ public static <T> boolean isEquals(T before, T after) {
6060
* @param after objeto com as informaçnoes depois da alteração.
6161
* @return resultado do builder.
6262
*/
63-
public static <T> DiffResults diff(T before, T after, DiffConfiguration configuration) {
63+
public static <T> DiffResults diff(T before, T after, DiffConfigurationBuilder configuration) {
6464
DiffResults result = new DiffResults();
6565

6666
for (DiffMetadata metadata : configuration.getConfigurations()) {
@@ -78,7 +78,7 @@ public static <T> DiffResults diff(T before, T after, DiffConfiguration configur
7878
* @param after objeto com as informações depois da alteração.
7979
* @return resultado do builder.
8080
*/
81-
public static <T> boolean isEquals(T before, T after, DiffConfiguration configuration) {
81+
public static <T> boolean isEquals(T before, T after, DiffConfigurationBuilder configuration) {
8282
for (DiffMetadata metadata : configuration.getConfigurations()) {
8383
DiffResult<T> result = metadata.getStrategy().diff(before, after, metadata);
8484

src/main/java/com/github/jonpereiradev/diffobjects/DiffResults.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*/
99
public class DiffResults {
1010

11-
private final List<DiffResult> results = new LinkedList<DiffResult>();
11+
private final List<DiffResult> results = new LinkedList<>();
1212

1313
public List<DiffResult> getResults() {
1414
return results;

src/main/java/com/github/jonpereiradev/diffobjects/builder/DiffBuilder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import java.util.LinkedList;
1111
import java.util.List;
1212

13-
public final class DiffBuilder implements DiffInstanceBuilder, DiffMappingBuilder, DiffConfiguration {
13+
public final class DiffBuilder implements DiffInstanceBuilder, DiffMappingBuilder, DiffConfigurationBuilder {
1414

1515
private final Class<?> classMap;
1616
private final List<DiffMetadata> metadatas;
@@ -62,7 +62,7 @@ public DiffInstanceBuilder builder() {
6262
}
6363

6464
@Override
65-
public DiffConfiguration getConfiguration() {
65+
public DiffConfigurationBuilder getConfiguration() {
6666
return this;
6767
}
6868

src/main/java/com/github/jonpereiradev/diffobjects/builder/DiffConfiguration.java renamed to src/main/java/com/github/jonpereiradev/diffobjects/builder/DiffConfigurationBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import java.util.List;
66

7-
public interface DiffConfiguration {
7+
public interface DiffConfigurationBuilder {
88

99
List<DiffMetadata> getConfigurations();
1010

src/main/java/com/github/jonpereiradev/diffobjects/builder/DiffInstanceBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ interface DiffInstanceBuilder {
44

55
DiffMappingBuilder mapper();
66

7-
DiffConfiguration getConfiguration();
7+
DiffConfigurationBuilder getConfiguration();
88

99
}
1010

src/test/java/com/github/jonpereiradev/diffobjects/builder/DiffBuilderTest.java

Lines changed: 0 additions & 35 deletions
This file was deleted.
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package com.github.jonpereiradev.diffobjects.builder;
2+
3+
import com.github.jonpereiradev.diffobjects.ComplexElement;
4+
import com.github.jonpereiradev.diffobjects.DiffObjects;
5+
import com.github.jonpereiradev.diffobjects.DiffResults;
6+
import com.github.jonpereiradev.diffobjects.ObjectElement;
7+
import org.junit.Assert;
8+
import org.junit.Before;
9+
import org.junit.Test;
10+
11+
public class DiffCollectionBuilderTest {
12+
13+
private DiffConfigurationBuilder objectElementConfiguration;
14+
private DiffConfigurationBuilder complexElementConfiguration;
15+
16+
@Before
17+
public void beforeTest() {
18+
objectElementConfiguration = DiffBuilder.map(ObjectElement.class)
19+
.mapper()
20+
.mapping("name")
21+
.builder()
22+
.getConfiguration();
23+
24+
complexElementConfiguration = DiffBuilder.map(ComplexElement.class)
25+
.mapper()
26+
.mapping("objectElement", "name")
27+
.mapping("objectElementList")
28+
.builder()
29+
.getConfiguration();
30+
}
31+
32+
@Test
33+
public void testDiffBuilderEqualsObjectElementNulls() {
34+
DiffResults diffResults = DiffObjects.diff(null, null, objectElementConfiguration);
35+
Assert.assertFalse(diffResults.getResults().isEmpty());
36+
Assert.assertEquals(1, diffResults.getResults().size());
37+
Assert.assertTrue(diffResults.getResults().get(0).isEquals());
38+
Assert.assertNull(diffResults.getResults().get(0).getBefore());
39+
Assert.assertNull(diffResults.getResults().get(0).getAfter());
40+
}
41+
42+
@Test
43+
public void testDiffBuilderEqualsObjectElementNamesNull() {
44+
ObjectElement objectA = new ObjectElement(null);
45+
ObjectElement objectB = new ObjectElement(null);
46+
DiffResults diffResults = DiffObjects.diff(objectA, objectB, objectElementConfiguration);
47+
48+
Assert.assertFalse(diffResults.getResults().isEmpty());
49+
Assert.assertEquals(1, diffResults.getResults().size());
50+
Assert.assertTrue(diffResults.getResults().get(0).isEquals());
51+
Assert.assertNull(diffResults.getResults().get(0).getBefore());
52+
Assert.assertNull(diffResults.getResults().get(0).getAfter());
53+
}
54+
55+
@Test
56+
public void testDiffBuilderEqualsObjectElementNamesEquals() {
57+
ObjectElement objectA = new ObjectElement("Object A");
58+
ObjectElement objectB = new ObjectElement("Object A");
59+
DiffResults diffResults = DiffObjects.diff(objectA, objectB, objectElementConfiguration);
60+
61+
Assert.assertFalse(diffResults.getResults().isEmpty());
62+
Assert.assertEquals(1, diffResults.getResults().size());
63+
Assert.assertTrue(diffResults.getResults().get(0).isEquals());
64+
Assert.assertEquals("Object A", diffResults.getResults().get(0).getBefore());
65+
Assert.assertEquals("Object A", diffResults.getResults().get(0).getAfter());
66+
}
67+
68+
@Test
69+
public void testDiffBuilderDifferentObjectElementA() {
70+
ObjectElement objectA = new ObjectElement("Object A");
71+
DiffResults diffResults = DiffObjects.diff(objectA, null, objectElementConfiguration);
72+
73+
Assert.assertFalse(diffResults.getResults().isEmpty());
74+
Assert.assertEquals(1, diffResults.getResults().size());
75+
Assert.assertFalse(diffResults.getResults().get(0).isEquals());
76+
Assert.assertEquals("Object A", diffResults.getResults().get(0).getBefore());
77+
Assert.assertNull(diffResults.getResults().get(0).getAfter());
78+
}
79+
80+
@Test
81+
public void testDiffBuilderDifferentObjectElementB() {
82+
ObjectElement objectB = new ObjectElement("Object B");
83+
DiffResults diffResults = DiffObjects.diff(null, objectB, objectElementConfiguration);
84+
85+
Assert.assertFalse(diffResults.getResults().isEmpty());
86+
Assert.assertEquals(1, diffResults.getResults().size());
87+
Assert.assertFalse(diffResults.getResults().get(0).isEquals());
88+
Assert.assertNull(diffResults.getResults().get(0).getBefore());
89+
Assert.assertEquals("Object B", diffResults.getResults().get(0).getAfter());
90+
}
91+
92+
@Test
93+
public void testDiffBuilderDifferentObjectElementNames() {
94+
ObjectElement objectA = new ObjectElement("Object A");
95+
ObjectElement objectB = new ObjectElement("Object B");
96+
DiffResults diffResults = DiffObjects.diff(objectA, objectB, objectElementConfiguration);
97+
98+
Assert.assertFalse(diffResults.getResults().isEmpty());
99+
Assert.assertEquals(1, diffResults.getResults().size());
100+
Assert.assertFalse(diffResults.getResults().get(0).isEquals());
101+
Assert.assertEquals("Object A", diffResults.getResults().get(0).getBefore());
102+
Assert.assertEquals("Object B", diffResults.getResults().get(0).getAfter());
103+
}
104+
105+
}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
package com.github.jonpereiradev.diffobjects.builder;
2+
3+
import com.github.jonpereiradev.diffobjects.ComplexElement;
4+
import com.github.jonpereiradev.diffobjects.DiffObjects;
5+
import com.github.jonpereiradev.diffobjects.DiffResults;
6+
import com.github.jonpereiradev.diffobjects.ObjectElement;
7+
import org.junit.Assert;
8+
import org.junit.Before;
9+
import org.junit.Test;
10+
11+
public class DiffDeepBuilderTest {
12+
13+
private DiffConfigurationBuilder complexElementConfiguration;
14+
15+
@Before
16+
public void beforeTest() {
17+
complexElementConfiguration = DiffBuilder.map(ComplexElement.class)
18+
.mapper()
19+
.mapping("objectElement", "name")
20+
.mapping("objectElementList")
21+
.builder()
22+
.getConfiguration();
23+
}
24+
25+
@Test
26+
public void testDiffBuilderEqualsComplexElementObjectsNull() {
27+
ComplexElement objectA = new ComplexElement((ObjectElement) null);
28+
ComplexElement objectB = new ComplexElement((ObjectElement) null);
29+
DiffResults diffResults = DiffObjects.diff(objectA, objectB, complexElementConfiguration);
30+
31+
Assert.assertFalse(diffResults.getResults().isEmpty());
32+
Assert.assertEquals(1, diffResults.getResults().size());
33+
Assert.assertTrue(diffResults.getResults().get(0).isEquals());
34+
Assert.assertNull(diffResults.getResults().get(0).getBefore());
35+
Assert.assertNull(diffResults.getResults().get(0).getAfter());
36+
}
37+
38+
@Test
39+
public void testDiffBuilderEqualsComplexElementObjectsEquals() {
40+
ComplexElement objectA = new ComplexElement(new ObjectElement("Object A"));
41+
ComplexElement objectB = new ComplexElement(new ObjectElement("Object A"));
42+
DiffResults diffResults = DiffObjects.diff(objectA, objectB, complexElementConfiguration);
43+
44+
objectA = (ComplexElement) diffResults.getResults().get(0).getBefore();
45+
objectB = (ComplexElement) diffResults.getResults().get(0).getAfter();
46+
47+
Assert.assertFalse(diffResults.getResults().isEmpty());
48+
Assert.assertEquals(1, diffResults.getResults().size());
49+
Assert.assertTrue(diffResults.getResults().get(0).isEquals());
50+
Assert.assertEquals("Object A", objectA.getObjectElement().getName());
51+
Assert.assertEquals("Object A", objectB.getObjectElement().getName());
52+
}
53+
54+
@Test
55+
public void testDiffBuilderDifferentObjectElementA() {
56+
ObjectElement objectA = new ObjectElement("Object A");
57+
DiffResults diffResults = DiffObjects.diff(objectA, null, complexElementConfiguration);
58+
Assert.assertFalse(diffResults.getResults().isEmpty());
59+
Assert.assertEquals(1, diffResults.getResults().size());
60+
Assert.assertFalse(diffResults.getResults().get(0).isEquals());
61+
Assert.assertEquals("Object A", diffResults.getResults().get(0).getBefore());
62+
Assert.assertNull(diffResults.getResults().get(0).getAfter());
63+
}
64+
65+
@Test
66+
public void testDiffBuilderDifferentObjectElementB() {
67+
ObjectElement objectB = new ObjectElement("Object B");
68+
DiffResults diffResults = DiffObjects.diff(null, objectB, complexElementConfiguration);
69+
70+
Assert.assertFalse(diffResults.getResults().isEmpty());
71+
Assert.assertEquals(1, diffResults.getResults().size());
72+
Assert.assertFalse(diffResults.getResults().get(0).isEquals());
73+
Assert.assertNull(diffResults.getResults().get(0).getBefore());
74+
Assert.assertEquals("Object B", diffResults.getResults().get(0).getAfter());
75+
}
76+
77+
@Test
78+
public void testDiffBuilderDifferentObjectElementNames() {
79+
ObjectElement objectA = new ObjectElement("Object A");
80+
ObjectElement objectB = new ObjectElement("Object B");
81+
DiffResults diffResults = DiffObjects.diff(objectA, objectB, complexElementConfiguration);
82+
83+
Assert.assertFalse(diffResults.getResults().isEmpty());
84+
Assert.assertEquals(1, diffResults.getResults().size());
85+
Assert.assertFalse(diffResults.getResults().get(0).isEquals());
86+
Assert.assertEquals("Object A", diffResults.getResults().get(0).getBefore());
87+
Assert.assertEquals("Object B", diffResults.getResults().get(0).getAfter());
88+
}
89+
90+
}

0 commit comments

Comments
 (0)