1 /*******************************************************************************
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License v1.0
6 * which accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * VTT Technical Research Centre of Finland - initial API and implementation
11 *******************************************************************************/
12 package org.simantics.db.tests.api.readGraph.hasStatement;
14 import java.util.concurrent.atomic.AtomicReference;
16 import org.junit.Test;
17 import org.simantics.db.ReadGraph;
18 import org.simantics.db.Resource;
19 import org.simantics.db.Session;
20 import org.simantics.db.WriteGraph;
21 import org.simantics.db.common.request.ReadRequest;
22 import org.simantics.db.common.request.WriteRequest;
23 import org.simantics.db.exception.DatabaseException;
24 import org.simantics.db.testing.annotation.Fails;
25 import org.simantics.db.testing.base.ExistingDatabaseTest;
26 import org.simantics.layer0.Layer0;
28 public class HasStatementTest2 extends ExistingDatabaseTest {
32 public void test() throws Exception {
34 Session session = getSession();
36 final AtomicReference<Resource> broken = new AtomicReference<Resource>();
37 final AtomicReference<Resource> brokenName1 = new AtomicReference<Resource>();
39 session.syncRequest(new WriteRequest() {
41 public void perform(WriteGraph graph) throws DatabaseException {
42 Layer0 L0 = Layer0.getInstance(graph);
43 Resource brokenName = graph.newResource();
44 graph.claim(brokenName, L0.InstanceOf, null, L0.Entity);
46 Resource name1 = graph.newResource();
47 Resource name2 = graph.newResource();
48 graph.claim(name1, L0.InstanceOf, null, L0.String);
49 graph.claim(name2, L0.InstanceOf, null, L0.String);
50 graph.claimValue(name1, "name1");
51 graph.claimValue(name1, "name2");
52 graph.claim(brokenName, L0.HasName, L0.NameOf, name1);
53 graph.claim(brokenName, L0.HasName, L0.NameOf, name2);
55 broken.set(brokenName);
56 brokenName1.set(name1);
62 session.syncRequest(new ReadRequest() {
64 public void run(ReadGraph graph) throws DatabaseException {
65 Layer0 L0 = Layer0.getInstance(graph);
66 assertTrue( graph.hasStatement(broken.get()) );
67 assertFalse( graph.hasStatement(broken.get(), L0.HasLabel, brokenName1.get()) );
68 assertFalse( graph.hasStatement(broken.get(), L0.HasLabel) );
69 assertTrue( graph.hasStatement(broken.get(), L0.IsWeaklyRelatedTo, brokenName1.get()) );
70 assertTrue( graph.hasStatement(broken.get(), L0.IsWeaklyRelatedTo) );
71 assertTrue( graph.hasStatement(broken.get(), L0.HasName, brokenName1.get()) );
72 assertTrue( graph.hasStatement(broken.get(), L0.HasName) );
76 } catch (DatabaseException t) {
79 fail("syncRequest(Read) threw unexpected DatabaseException " + t);
81 } catch (Throwable t) {
84 fail("syncRequest(Read) threw unexpected throwable " + t);