more testing
Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/622a3009 Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/622a3009 Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/622a3009 Branch: refs/heads/MARMOTTA-584 Commit: 622a30099d3ed004de3d1869fe42f867d5bf81b7 Parents: 299272a Author: Sebastian Schaffert <[email protected]> Authored: Sat Dec 19 16:53:28 2015 +0100 Committer: Sebastian Schaffert <[email protected]> Committed: Sat Dec 19 16:53:28 2015 +0100 ---------------------------------------------------------------------- .../ostrich/backend/test/PersistenceTest.cc | 53 +++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/marmotta/blob/622a3009/libraries/ostrich/backend/test/PersistenceTest.cc ---------------------------------------------------------------------- diff --git a/libraries/ostrich/backend/test/PersistenceTest.cc b/libraries/ostrich/backend/test/PersistenceTest.cc index 9878cd6..fdfc604 100644 --- a/libraries/ostrich/backend/test/PersistenceTest.cc +++ b/libraries/ostrich/backend/test/PersistenceTest.cc @@ -16,6 +16,8 @@ using namespace boost::filesystem; +using testing::Contains; + namespace marmotta { namespace rdf { namespace proto { @@ -42,7 +44,7 @@ class PersistenceTest : public ::testing::Test { } ~PersistenceTest() { - LOG(INFO) << "Destroying Test DB"; + LOG(INFO) << "Destroying Test DB: " << testdir.string(); delete db; remove_all(testdir); } @@ -71,6 +73,55 @@ TEST_F(PersistenceTest, TestAddStatements) { } } + +TEST_F(PersistenceTest, TestGetStatements) { + std::vector<rdf::proto::Statement> stmts = { + rdf::Statement(rdf::URI("http://example.com/s1"), rdf::URI("http://example.com/p1"), + rdf::URI("http://example.com/o1")).getMessage(), + rdf::Statement(rdf::URI("http://example.com/s2"), rdf::URI("http://example.com/p1"), + rdf::URI("http://example.com/o1")).getMessage(), + rdf::Statement(rdf::URI("http://example.com/s1"), rdf::URI("http://example.com/p2"), + rdf::URI("http://example.com/o2")).getMessage(), + rdf::Statement(rdf::URI("http://example.com/s2"), rdf::URI("http://example.com/p2"), + rdf::URI("http://example.com/o2")).getMessage(), + rdf::Statement(rdf::URI("http://example.com/s1"), rdf::URI("http://example.com/p3"), + rdf::URI("http://example.com/o3")).getMessage(), + }; + + util::CollectionIterator<rdf::proto::Statement> it(stmts); + db->AddStatements(it); + + EXPECT_EQ(5, db->Size()); + + rdf::Statement pattern1; + pattern1.setSubject(rdf::URI("http://example.com/s1")); + auto it1 = db->GetStatements(pattern1.getMessage()); + for (int i=0; i<3; i++) { + ASSERT_TRUE(it1->hasNext()); + EXPECT_THAT(stmts, Contains(it1->next())); + } + EXPECT_FALSE(it1->hasNext()); + + rdf::Statement pattern2; + pattern2.setObject(rdf::URI("http://example.com/o1")); + auto it2 = db->GetStatements(pattern2.getMessage()); + for (int i=0; i<2; i++) { + ASSERT_TRUE(it2->hasNext()); + EXPECT_THAT(stmts, Contains(it2->next())); + } + EXPECT_FALSE(it2->hasNext()); + + rdf::Statement pattern3; + pattern2.setPredicate(rdf::URI("http://example.com/p1")); + auto it3 = db->GetStatements(pattern2.getMessage()); + for (int i=0; i<2; i++) { + ASSERT_TRUE(it3->hasNext()); + EXPECT_THAT(stmts, Contains(it3->next())); + } + EXPECT_FALSE(it3->hasNext()); +} + + } } }
