aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2023-06-18 14:12:20 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2023-06-18 14:12:20 +0200
commit2069579ce57dbaf04bff610f8151409e25bf114a (patch)
tree1f64df9abe0cdf3b5f87de44fcf1d4815fed970e /subprojects/store
parentfix: further Dnf tests and fixes (diff)
downloadrefinery-2069579ce57dbaf04bff610f8151409e25bf114a.tar.gz
refinery-2069579ce57dbaf04bff610f8151409e25bf114a.tar.zst
refinery-2069579ce57dbaf04bff610f8151409e25bf114a.zip
refactor: clean up Symbol constructor
Shorthad syntax for the most commonly used symbol types.
Diffstat (limited to 'subprojects/store')
-rw-r--r--subprojects/store/src/main/java/tools/refinery/store/representation/Symbol.java19
-rw-r--r--subprojects/store/src/test/java/tools/refinery/store/model/tests/ModelTest.java24
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
8public record Symbol<T>(String name, int arity, Class<T> valueType, T defaultValue) implements AnySymbol { 8public 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;
14import static org.junit.jupiter.api.Assertions.*; 14import static org.junit.jupiter.api.Assertions.*;
15 15
16class ModelTest { 16class 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);