public void TestAssertLongLiteral() { var longStringValue = "Long string value " + new string('!', 100); var pageStore = TestUtils.CreateEmptyPageStore("TestAssertLongLiteral.data"); var resourceStore = TestUtils.CreateEmptyPageStore("TestAssertLongLiteral.resources"); var resourceTable = new ResourceTable(resourceStore); var resourceIndex = new ResourceIndex(0, pageStore, resourceTable); var resourceId = resourceIndex.AssertResourceInIndex(0, longStringValue, true, "http://example.org/datatypes/string", "en-us"); // Should now be able to find the resource id Assert.AreEqual(resourceId, resourceIndex.GetResourceId(longStringValue, true, "http://example.org/datatypes/string", "en-us", true)); // data type URI and language code should have been inserted as resources Assert.AreNotEqual(StoreConstants.NullUlong, resourceIndex.GetResourceId("http://example.org/datatypes/string", false, null, null, true)); Assert.AreNotEqual(StoreConstants.NullUlong, resourceIndex.GetResourceId("en-us", true, null, null, true)); var resource = resourceIndex.GetResource(resourceId, true); Assert.IsNotNull(resource); Assert.IsTrue(resource.IsLiteral); Assert.AreEqual(longStringValue, resource.Value); var dtResource = resourceIndex.GetResource(resource.DataTypeId, true); Assert.IsNotNull(dtResource); Assert.IsFalse(dtResource.IsLiteral); Assert.AreEqual("http://example.org/datatypes/string", dtResource.Value); var lcResource = resourceIndex.GetResource(resource.LanguageCodeId, true); Assert.IsNotNull(lcResource); Assert.IsTrue(lcResource.IsLiteral); Assert.AreEqual("en-us", lcResource.Value); // Persist the index var resourceIndexRoot = resourceIndex.RootId; resourceIndex.Save(0, null); pageStore.Commit(0ul, null); pageStore.Close(); resourceTable.Commit(0ul, null); resourceTable.Dispose(); // Test we can still find the resource after reopening the store using (pageStore = TestUtils.OpenPageStore("TestAssertLongLiteral.data", false)) { using (var rt = new ResourceTable(TestUtils.OpenPageStore("TestAssertLongLiteral.resources", false))) { resourceIndex = new ResourceIndex(pageStore, rt, resourceIndexRoot); // Should still be able to find the resource id Assert.AreEqual(resourceId, resourceIndex.GetResourceId(longStringValue, true, "http://example.org/datatypes/string", "en-us", true)); Assert.AreNotEqual(StoreConstants.NullUlong, resourceIndex.GetResourceId("http://example.org/datatypes/string", false, null, null, true)); Assert.AreNotEqual(StoreConstants.NullUlong, resourceIndex.GetResourceId("en-us", true, null, null, true)); } } }
public void TestAssertShortUri() { IPageStore pageStore; ulong resourceId, resourceIndexRoot; var shortenedUri = "p0:" + Guid.Empty; using (pageStore = TestUtils.CreateEmptyPageStore("TestAssertShortUri.data")) { var resourceIndex = new ResourceIndex(0, pageStore, null); resourceId = resourceIndex.AssertResourceInIndex(0, shortenedUri); Assert.AreEqual(resourceId, resourceIndex.GetResourceId(shortenedUri, false, null, null, true)); var resource = resourceIndex.GetResource(resourceId, true); Assert.IsNotNull(resource); Assert.AreEqual(shortenedUri, resource.Value); Assert.IsFalse(resource.IsLiteral); resourceIndexRoot = resourceIndex.RootId; resourceIndex.Save(0, null); pageStore.Commit(0ul, null); } using (pageStore = TestUtils.OpenPageStore("TestAssertShortUri.data", false)) { var resourceIndex = new ResourceIndex(pageStore, null, resourceIndexRoot); Assert.AreEqual(resourceId, resourceIndex.GetResourceId(shortenedUri, false, null, null, true)); var resource = resourceIndex.GetResource(resourceId, true); Assert.IsNotNull(resource); Assert.AreEqual(shortenedUri, resource.Value); Assert.IsFalse(resource.IsLiteral); } }