diff options
Diffstat (limited to 'subprojects/store')
-rw-r--r-- | subprojects/store/src/main/java/tools/refinery/store/representation/Symbol.java | 19 | ||||
-rw-r--r-- | subprojects/store/src/test/java/tools/refinery/store/model/tests/ModelTest.java | 24 |
2 files changed, 15 insertions, 28 deletions
diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/Symbol.java b/subprojects/store/src/main/java/tools/refinery/store/representation/Symbol.java index aad88921..cc748180 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/representation/Symbol.java +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/Symbol.java | |||
@@ -7,18 +7,19 @@ package tools.refinery.store.representation; | |||
7 | 7 | ||
8 | public record Symbol<T>(String name, int arity, Class<T> valueType, T defaultValue) implements AnySymbol { | 8 | public record Symbol<T>(String name, int arity, Class<T> valueType, T defaultValue) implements AnySymbol { |
9 | @Override | 9 | @Override |
10 | public boolean equals(Object o) { | 10 | public String toString() { |
11 | return this == o; | 11 | return "%s/%d".formatted(name, arity); |
12 | } | 12 | } |
13 | 13 | ||
14 | @Override | 14 | public static Symbol<Boolean> of(String name, int arity) { |
15 | public int hashCode() { | 15 | return of(name, arity, Boolean.class, false); |
16 | // Compare by identity to make hash table lookups more efficient. | ||
17 | return System.identityHashCode(this); | ||
18 | } | 16 | } |
19 | 17 | ||
20 | @Override | 18 | public static <T> Symbol<T> of(String name, int arity, Class<T> valueType) { |
21 | public String toString() { | 19 | return of(name, arity, valueType, null); |
22 | return "%s/%d".formatted(name, arity); | 20 | } |
21 | |||
22 | public static <T> Symbol<T> of(String name, int arity, Class<T> valueType, T defaultValue) { | ||
23 | return new Symbol<>(name, arity, valueType, defaultValue); | ||
23 | } | 24 | } |
24 | } | 25 | } |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/model/tests/ModelTest.java b/subprojects/store/src/test/java/tools/refinery/store/model/tests/ModelTest.java index 1017ff28..56b75804 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/model/tests/ModelTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/model/tests/ModelTest.java | |||
@@ -14,27 +14,24 @@ import tools.refinery.store.tuple.Tuple; | |||
14 | import static org.junit.jupiter.api.Assertions.*; | 14 | import static org.junit.jupiter.api.Assertions.*; |
15 | 15 | ||
16 | class ModelTest { | 16 | class ModelTest { |
17 | private static final Symbol<Boolean> person = Symbol.of("Person", 1); | ||
18 | private static final Symbol<Integer> age = Symbol.of("age", 1, Integer.class); | ||
19 | private static final Symbol<Boolean> friend = Symbol.of("friend", 2); | ||
20 | |||
17 | @Test | 21 | @Test |
18 | void modelConstructionTest() { | 22 | void modelConstructionTest() { |
19 | var person = new Symbol<>("Person", 1, Boolean.class, false); | ||
20 | var friend = new Symbol<>("friend", 2, Boolean.class, false); | ||
21 | |||
22 | var store = ModelStore.builder().symbols(person, friend).build(); | 23 | var store = ModelStore.builder().symbols(person, friend).build(); |
23 | var symbols = store.getSymbols(); | 24 | var symbols = store.getSymbols(); |
24 | 25 | ||
25 | assertTrue(symbols.contains(person)); | 26 | assertTrue(symbols.contains(person)); |
26 | assertTrue(symbols.contains(friend)); | 27 | assertTrue(symbols.contains(friend)); |
27 | 28 | ||
28 | var other = new Symbol<>("other", 2, Integer.class, null); | 29 | var other = Symbol.of("other", 2, Integer.class); |
29 | assertFalse(symbols.contains(other)); | 30 | assertFalse(symbols.contains(other)); |
30 | } | 31 | } |
31 | 32 | ||
32 | @Test | 33 | @Test |
33 | void modelBuildingTest() { | 34 | void modelBuildingTest() { |
34 | var person = new Symbol<>("Person", 1, Boolean.class, false); | ||
35 | var age = new Symbol<>("age", 1, Integer.class, null); | ||
36 | var friend = new Symbol<>("friend", 2, Boolean.class, false); | ||
37 | |||
38 | var store = ModelStore.builder().symbols(person, age, friend).build(); | 35 | var store = ModelStore.builder().symbols(person, age, friend).build(); |
39 | var model = store.createEmptyModel(); | 36 | var model = store.createEmptyModel(); |
40 | var personInterpretation = model.getInterpretation(person); | 37 | var personInterpretation = model.getInterpretation(person); |
@@ -62,8 +59,6 @@ class ModelTest { | |||
62 | 59 | ||
63 | @Test | 60 | @Test |
64 | void modelBuildingArityFailTest() { | 61 | void modelBuildingArityFailTest() { |
65 | var person = new Symbol<>("Person", 1, Boolean.class, false); | ||
66 | |||
67 | var store = ModelStore.builder().symbols(person).build(); | 62 | var store = ModelStore.builder().symbols(person).build(); |
68 | var model = store.createEmptyModel(); | 63 | var model = store.createEmptyModel(); |
69 | var personInterpretation = model.getInterpretation(person); | 64 | var personInterpretation = model.getInterpretation(person); |
@@ -75,8 +70,6 @@ class ModelTest { | |||
75 | 70 | ||
76 | @Test | 71 | @Test |
77 | void modelBuildingNullFailTest() { | 72 | void modelBuildingNullFailTest() { |
78 | var age = new Symbol<>("age", 1, Integer.class, null); | ||
79 | |||
80 | var store = ModelStore.builder().symbols(age).build(); | 73 | var store = ModelStore.builder().symbols(age).build(); |
81 | var model = store.createEmptyModel(); | 74 | var model = store.createEmptyModel(); |
82 | var ageInterpretation = model.getInterpretation(age); | 75 | var ageInterpretation = model.getInterpretation(age); |
@@ -89,10 +82,6 @@ class ModelTest { | |||
89 | 82 | ||
90 | @Test | 83 | @Test |
91 | void modelUpdateTest() { | 84 | void modelUpdateTest() { |
92 | var person = new Symbol<>("Person", 1, Boolean.class, false); | ||
93 | var age = new Symbol<>("age", 1, Integer.class, null); | ||
94 | var friend = new Symbol<>("friend", 2, Boolean.class, false); | ||
95 | |||
96 | var store = ModelStore.builder().symbols(person, age, friend).build(); | 85 | var store = ModelStore.builder().symbols(person, age, friend).build(); |
97 | var model = store.createEmptyModel(); | 86 | var model = store.createEmptyModel(); |
98 | var personInterpretation = model.getInterpretation(person); | 87 | var personInterpretation = model.getInterpretation(person); |
@@ -118,9 +107,6 @@ class ModelTest { | |||
118 | 107 | ||
119 | @Test | 108 | @Test |
120 | void restoreTest() { | 109 | void restoreTest() { |
121 | var person = new Symbol<>("Person", 1, Boolean.class, false); | ||
122 | var friend = new Symbol<>("friend", 2, Boolean.class, false); | ||
123 | |||
124 | var store = ModelStore.builder().symbols(person, friend).build(); | 110 | var store = ModelStore.builder().symbols(person, friend).build(); |
125 | var model = store.createEmptyModel(); | 111 | var model = store.createEmptyModel(); |
126 | var personInterpretation = model.getInterpretation(person); | 112 | var personInterpretation = model.getInterpretation(person); |