1 package eu.fbk.knowledgestore;
2
3 import java.util.Set;
4
5 import com.google.common.collect.ImmutableList;
6 import com.google.common.collect.Sets;
7
8 import org.junit.Assert;
9 import org.junit.Test;
10 import org.openrdf.model.URI;
11 import org.openrdf.model.impl.URIImpl;
12 import org.openrdf.model.vocabulary.DCTERMS;
13 import org.openrdf.model.vocabulary.OWL;
14 import org.openrdf.model.vocabulary.RDF;
15 import org.openrdf.model.vocabulary.RDFS;
16
17 import eu.fbk.knowledgestore.data.Data;
18 import eu.fbk.knowledgestore.data.Record;
19 import eu.fbk.knowledgestore.vocabulary.KS;
20 import eu.fbk.knowledgestore.vocabulary.NIF;
21
22 public class RecordTest {
23
24 private static final URI BOOL_PROP = new URIImpl("test:boolProp");
25
26 @Test
27 public void test() {
28 final Record r = Record.create();
29 r.setID(Data.getValueFactory().createURI("test:r"));
30 r.set(DCTERMS.TITLE, "this is the title");
31 final Record r2 = Record.create();
32 r2.setID(Data.getValueFactory().createURI("test:r2"));
33 r2.set(DCTERMS.TITLE, "this is the title");
34 final Record m = Record.create();
35 m.setID(Data.getValueFactory().createURI("test:x"));
36 m.set(NIF.END_INDEX, 15);
37 m.set(RDFS.COMMENT, "first", "second", "third");
38 m.set(KS.MENTION_OF, r, r2);
39 System.out.println(m.toString(Data.getNamespaceMap(), true));
40 }
41
42 @Test
43 public void testPropertyAccessors() {
44
45 final Record r = Record.create();
46 checkSet(r.getProperties());
47 checkSet(r.get(RDF.TYPE));
48
49 Assert.assertTrue(r.isNull(RDF.TYPE));
50 Assert.assertTrue(r.isUnique(RDF.TYPE));
51 Assert.assertFalse(r.isTrue(BOOL_PROP));
52 Assert.assertFalse(r.isFalse(BOOL_PROP));
53
54 r.set(RDF.TYPE, OWL.THING);
55 checkSet(r.getProperties(), RDF.TYPE);
56 checkSet(r.get(RDF.TYPE), OWL.THING);
57 Assert.assertFalse(r.isNull(RDF.TYPE));
58 Assert.assertTrue(r.isUnique(RDF.TYPE));
59 try {
60 r.isTrue(RDF.TYPE);
61 Assert.fail();
62 } catch (final IllegalArgumentException ex) {
63
64 }
65 try {
66 r.isFalse(RDF.TYPE);
67 Assert.fail();
68 } catch (final IllegalArgumentException ex) {
69
70 }
71
72 r.add(RDF.TYPE, RDFS.RESOURCE);
73 checkSet(r.getProperties(), RDF.TYPE);
74 checkSet(r.get(RDF.TYPE), OWL.THING, RDFS.RESOURCE);
75 Assert.assertFalse(r.isUnique(RDF.TYPE));
76
77 r.remove(RDF.TYPE, RDFS.RESOURCE);
78 checkSet(r.getProperties(), RDF.TYPE);
79 checkSet(r.get(RDF.TYPE), OWL.THING);
80 Assert.assertTrue(r.isUnique(RDF.TYPE));
81
82 r.add(RDFS.LABEL, "label");
83 checkSet(r.getProperties(), RDF.TYPE, RDFS.LABEL);
84
85 r.remove(RDFS.LABEL, "label");
86 checkSet(r.getProperties(), RDF.TYPE);
87
88 r.set(RDF.TYPE, null);
89 checkSet(r.getProperties());
90 checkSet(r.get(RDF.TYPE));
91 Assert.assertTrue(r.isNull(RDF.TYPE));
92
93 r.set(RDF.TYPE, ImmutableList.of(OWL.THING));
94 checkSet(r.getProperties(), RDF.TYPE);
95 checkSet(r.get(RDF.TYPE), OWL.THING);
96
97 r.set(RDF.TYPE, null);
98 checkSet(r.getProperties());
99 checkSet(r.get(RDF.TYPE));
100
101 r.set(BOOL_PROP, true);
102 Assert.assertTrue(r.isTrue(BOOL_PROP));
103 Assert.assertFalse(r.isFalse(BOOL_PROP));
104
105 r.set(BOOL_PROP, false);
106 Assert.assertFalse(r.isTrue(BOOL_PROP));
107 Assert.assertTrue(r.isFalse(BOOL_PROP));
108
109 r.add(BOOL_PROP, true);
110 try {
111 r.isTrue(BOOL_PROP);
112 Assert.fail();
113 } catch (final IllegalStateException ex) {
114
115 }
116 try {
117 r.isFalse(BOOL_PROP);
118 Assert.fail();
119 } catch (final IllegalStateException ex) {
120
121 }
122 }
123
124 private void checkSet(final Iterable<?> nodes, final Object... expected) {
125 final Set<Object> nodeSet = Sets.newHashSet(nodes);
126 Assert.assertEquals(expected.length, nodeSet.size());
127 for (final Object element : expected) {
128 Assert.assertTrue(nodeSet.contains(element));
129 }
130 }
131
132 }