Skip to content

Commit 05eae92

Browse files
committed
コンストラクタで逆順の生成を抑止する
1 parent fcc1639 commit 05eae92

2 files changed

Lines changed: 45 additions & 0 deletions

File tree

  • jig-core/src

jig-core/src/main/java/org/dddjava/jig/domain/model/information/relation/graph/MutualEdge.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@
99
*/
1010
public record MutualEdge<NODE>(NODE a, NODE b) implements Comparable<MutualEdge<NODE>> {
1111

12+
public MutualEdge {
13+
if (a.toString().compareTo(b.toString()) > 0) {
14+
throw new IllegalArgumentException("順序が a <= b でない");
15+
}
16+
}
17+
1218
public static <T> MutualEdge<T> from(Edge<T> edge) {
1319
var a = edge.from();
1420
var b = edge.to();
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package org.dddjava.jig.domain.model.information.relation.graph;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import static org.junit.jupiter.api.Assertions.*;
6+
7+
class MutualEdgeTest {
8+
9+
@Test
10+
void Edgeから生成できる() {
11+
var actual = MutualEdge.from(new Edge<>("A", "B"));
12+
13+
assertEquals("A", actual.a());
14+
assertEquals("B", actual.b());
15+
}
16+
17+
@Test
18+
void Edgeから生成できる_順番が入れ替わる() {
19+
var actual = MutualEdge.from(new Edge<>("B", "A"));
20+
21+
assertEquals("A", actual.a());
22+
assertEquals("B", actual.b());
23+
}
24+
25+
26+
@Test
27+
void 逆順だと生成できない() {
28+
assertThrows(IllegalArgumentException.class, () -> {
29+
new MutualEdge<>("B", "A");
30+
});
31+
}
32+
33+
@Test
34+
void 自己参照は生成できる() {
35+
assertDoesNotThrow(() -> {
36+
new MutualEdge<>("A", "A");
37+
});
38+
}
39+
}

0 commit comments

Comments
 (0)