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              // ignore
64          }
65          try {
66              r.isFalse(RDF.TYPE);
67              Assert.fail();
68          } catch (final IllegalArgumentException ex) {
69              // ignore
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             // ignore
115         }
116         try {
117             r.isFalse(BOOL_PROP);
118             Assert.fail();
119         } catch (final IllegalStateException ex) {
120             // ignore
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 }