Skip to content

Commit

Permalink
Added more tests and fixed typos in tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Marco De Salvo committed May 27, 2024
1 parent 6aec07c commit c172cd1
Show file tree
Hide file tree
Showing 4 changed files with 186 additions and 19 deletions.
4 changes: 2 additions & 2 deletions RDFSharp.Test/Model/RDFGraphTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1584,8 +1584,8 @@ public void ShouldImportFromFileWithEnabledDatatypeDiscovery(string fileExtensio
.AddTriple(triple2)
.AddDatatype(new RDFDatatype(new Uri($"ex:mydt{(int)format}"), RDFModelEnums.RDFDatatypes.XSD_STRING, [
new RDFPatternFacet("^ex$") ]));
graph1.ToFile(format, Path.Combine(Environment.CurrentDirectory, $"RDFGraphTest_ShouldImportFromFile{fileExtension}"));
RDFGraph graph2 = RDFGraph.FromFile(format, Path.Combine(Environment.CurrentDirectory, $"RDFGraphTest_ShouldImportFromFile{fileExtension}"), true);
graph1.ToFile(format, Path.Combine(Environment.CurrentDirectory, $"RDFGraphTest_ShouldImportFromFile{fileExtension}WithEnabledDatatypeDiscovery"));
RDFGraph graph2 = RDFGraph.FromFile(format, Path.Combine(Environment.CurrentDirectory, $"RDFGraphTest_ShouldImportFromFile{fileExtension}WithEnabledDatatypeDiscovery"), true);

Assert.IsNotNull(graph2);
Assert.IsTrue(graph2.TriplesCount == 9);
Expand Down
132 changes: 128 additions & 4 deletions RDFSharp.Test/Store/Engines/RDFMemoryStoreTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1141,6 +1141,31 @@ public void ShouldImportFromFile(string fileExtension, RDFStoreEnums.RDFFormats
Assert.IsTrue(store2.Equals(store1));
}

[DataTestMethod]
[DataRow(".nq", RDFStoreEnums.RDFFormats.NQuads)]
[DataRow(".trix", RDFStoreEnums.RDFFormats.TriX)]
[DataRow(".trig", RDFStoreEnums.RDFFormats.TriG)]
public void ShouldImportFromFileWithEnabledDatatypeDiscovery(string fileExtension, RDFStoreEnums.RDFFormats format)
{
RDFMemoryStore store1 = new RDFMemoryStore();
RDFQuadruple quadruple1 = new RDFQuadruple(new RDFContext("http://ex/ctx/"), new RDFResource("http://ex/subj/"), new RDFResource("http://ex/pred/"), new RDFPlainLiteral("lit", "en-US"));
RDFQuadruple quadruple2 = new RDFQuadruple(new RDFContext("http://ex/ctx/"), new RDFResource("http://ex/subj/"), new RDFResource("http://ex/pred/"), new RDFResource("http://ex/obj/"));
store1.AddQuadruple(quadruple1)
.AddQuadruple(quadruple2)
.MergeGraph(new RDFGraph()
.AddDatatype(new RDFDatatype(new Uri($"ex:mydtPP{(int)format}"), RDFModelEnums.RDFDatatypes.XSD_STRING, [
new RDFPatternFacet("^ex$") ])));
store1.ToFile(format, Path.Combine(Environment.CurrentDirectory, $"RDFMemoryStoreTest_ShouldImportFromFile{fileExtension}WithEnabledDatatypeDiscovery"));
RDFMemoryStore store2 = RDFMemoryStore.FromFile(format, Path.Combine(Environment.CurrentDirectory, $"RDFMemoryStoreTest_ShouldImportFromFile{fileExtension}WithEnabledDatatypeDiscovery"), true);

Assert.IsNotNull(store2);
Assert.IsTrue(store2.QuadruplesCount == 9);
Assert.IsTrue(store2.Equals(store1));
//Test that automatic datatype discovery happened successfully
Assert.IsTrue(RDFDatatypeRegister.GetDatatype($"ex:mydtPP{(int)format}").TargetDatatype == RDFModelEnums.RDFDatatypes.XSD_STRING);
Assert.IsTrue(RDFDatatypeRegister.GetDatatype($"ex:mydtPP{(int)format}").Facets.Single() is RDFPatternFacet fct && fct.Pattern == "^ex$");
}

[DataTestMethod]
[DataRow(".nq", RDFStoreEnums.RDFFormats.NQuads)]
[DataRow(".trix", RDFStoreEnums.RDFFormats.TriX)]
Expand Down Expand Up @@ -1174,23 +1199,48 @@ public async Task ShouldImportFromFileAsync(string fileExtension, RDFStoreEnums.
RDFQuadruple quadruple1 = new RDFQuadruple(new RDFContext("http://ex/ctx/"), new RDFResource("http://ex/subj/"), new RDFResource("http://ex/pred/"), new RDFPlainLiteral("lit", "en-US"));
RDFQuadruple quadruple2 = new RDFQuadruple(new RDFContext("http://ex/ctx/"), new RDFResource("http://ex/subj/"), new RDFResource("http://ex/pred/"), new RDFResource("http://ex/obj/"));
store1.AddQuadruple(quadruple1).AddQuadruple(quadruple2);
store1.ToFile(format, Path.Combine(Environment.CurrentDirectory, $"RDFMemoryStoreTest_ShouldImportFromFile{fileExtension}"));
RDFMemoryStore store2 = await RDFMemoryStore.FromFileAsync(format, Path.Combine(Environment.CurrentDirectory, $"RDFMemoryStoreTest_ShouldImportFromFile{fileExtension}"));
store1.ToFile(format, Path.Combine(Environment.CurrentDirectory, $"RDFMemoryStoreTest_ShouldImportFromFileAsync{fileExtension}"));
RDFMemoryStore store2 = await RDFMemoryStore.FromFileAsync(format, Path.Combine(Environment.CurrentDirectory, $"RDFMemoryStoreTest_ShouldImportFromFileAsync{fileExtension}"));

Assert.IsNotNull(store2);
Assert.IsTrue(store2.QuadruplesCount == 2);
Assert.IsTrue(store2.Equals(store1));
}

[DataTestMethod]
[DataRow(".nq", RDFStoreEnums.RDFFormats.NQuads)]
[DataRow(".trix", RDFStoreEnums.RDFFormats.TriX)]
[DataRow(".trig", RDFStoreEnums.RDFFormats.TriG)]
public async Task ShouldImportFromFileAsyncWithEnabledDatatypeDiscovery(string fileExtension, RDFStoreEnums.RDFFormats format)
{
RDFMemoryStore store1 = new RDFMemoryStore();
RDFQuadruple quadruple1 = new RDFQuadruple(new RDFContext("http://ex/ctx/"), new RDFResource("http://ex/subj/"), new RDFResource("http://ex/pred/"), new RDFPlainLiteral("lit", "en-US"));
RDFQuadruple quadruple2 = new RDFQuadruple(new RDFContext("http://ex/ctx/"), new RDFResource("http://ex/subj/"), new RDFResource("http://ex/pred/"), new RDFResource("http://ex/obj/"));
store1.AddQuadruple(quadruple1)
.AddQuadruple(quadruple2)
.MergeGraph(new RDFGraph()
.AddDatatype(new RDFDatatype(new Uri($"ex:mydtP{(int)format}"), RDFModelEnums.RDFDatatypes.XSD_STRING, [
new RDFPatternFacet("^ex$") ])));
store1.ToFile(format, Path.Combine(Environment.CurrentDirectory, $"RDFMemoryStoreTest_ShouldImportFromFileAsync{fileExtension}WithEnabledDatatypeDiscovery"));
RDFMemoryStore store2 = await RDFMemoryStore.FromFileAsync(format, Path.Combine(Environment.CurrentDirectory, $"RDFMemoryStoreTest_ShouldImportFromFileAsync{fileExtension}WithEnabledDatatypeDiscovery"), true);

Assert.IsNotNull(store2);
Assert.IsTrue(store2.QuadruplesCount == 9);
Assert.IsTrue(store2.Equals(store1));
//Test that automatic datatype discovery happened successfully
Assert.IsTrue(RDFDatatypeRegister.GetDatatype($"ex:mydtP{(int)format}").TargetDatatype == RDFModelEnums.RDFDatatypes.XSD_STRING);
Assert.IsTrue(RDFDatatypeRegister.GetDatatype($"ex:mydtP{(int)format}").Facets.Single() is RDFPatternFacet fct && fct.Pattern == "^ex$");
}

[DataTestMethod]
[DataRow(".nq", RDFStoreEnums.RDFFormats.NQuads)]
[DataRow(".trix", RDFStoreEnums.RDFFormats.TriX)]
[DataRow(".trig", RDFStoreEnums.RDFFormats.TriG)]
public async Task ShouldImportEmptyFromFileAsync(string fileExtension, RDFStoreEnums.RDFFormats format)
{
RDFMemoryStore store1 = new RDFMemoryStore();
store1.ToFile(format, Path.Combine(Environment.CurrentDirectory, $"RDFMemoryStoreTest_ShouldImportEmptyFromFile{fileExtension}"));
RDFMemoryStore store2 = await RDFMemoryStore.FromFileAsync(format, Path.Combine(Environment.CurrentDirectory, $"RDFMemoryStoreTest_ShouldImportEmptyFromFile{fileExtension}"));
store1.ToFile(format, Path.Combine(Environment.CurrentDirectory, $"RDFMemoryStoreTest_ShouldImportEmptyFromFileAsync{fileExtension}"));
RDFMemoryStore store2 = await RDFMemoryStore.FromFileAsync(format, Path.Combine(Environment.CurrentDirectory, $"RDFMemoryStoreTest_ShouldImportEmptyFromFileAsync{fileExtension}"));

Assert.IsNotNull(store2);
Assert.IsTrue(store2.QuadruplesCount == 0);
Expand Down Expand Up @@ -1224,6 +1274,32 @@ public void ShouldImportFromStream(RDFStoreEnums.RDFFormats format)
Assert.IsTrue(store2.Equals(store1));
}

[DataTestMethod]
[DataRow(RDFStoreEnums.RDFFormats.NQuads)]
[DataRow(RDFStoreEnums.RDFFormats.TriX)]
[DataRow(RDFStoreEnums.RDFFormats.TriG)]
public void ShouldImportFromStreamWithEnabledDatatypeDiscovery(RDFStoreEnums.RDFFormats format)
{
MemoryStream stream = new MemoryStream();
RDFMemoryStore store1 = new RDFMemoryStore();
RDFQuadruple quadruple1 = new RDFQuadruple(new RDFContext("http://ex/ctx/"), new RDFResource("http://ex/subj/"), new RDFResource("http://ex/pred/"), new RDFPlainLiteral("lit", "en-US"));
RDFQuadruple quadruple2 = new RDFQuadruple(new RDFContext("http://ex/ctx/"), new RDFResource("http://ex/subj/"), new RDFResource("http://ex/pred/"), new RDFResource("http://ex/obj/"));
store1.AddQuadruple(quadruple1)
.AddQuadruple(quadruple2)
.MergeGraph(new RDFGraph()
.AddDatatype(new RDFDatatype(new Uri($"ex:mydtQQ{(int)format}"), RDFModelEnums.RDFDatatypes.XSD_STRING, [
new RDFPatternFacet("^ex$") ])));
store1.ToStream(format, stream);
RDFMemoryStore store2 = RDFMemoryStore.FromStream(format, new MemoryStream(stream.ToArray()), true);

Assert.IsNotNull(store2);
Assert.IsTrue(store2.QuadruplesCount == 9);
Assert.IsTrue(store2.Equals(store1));
//Test that automatic datatype discovery happened successfully
Assert.IsTrue(RDFDatatypeRegister.GetDatatype($"ex:mydtQQ{(int)format}").TargetDatatype == RDFModelEnums.RDFDatatypes.XSD_STRING);
Assert.IsTrue(RDFDatatypeRegister.GetDatatype($"ex:mydtQQ{(int)format}").Facets.Single() is RDFPatternFacet fct && fct.Pattern == "^ex$");
}

[DataTestMethod]
[DataRow(RDFStoreEnums.RDFFormats.NQuads)]
[DataRow(RDFStoreEnums.RDFFormats.TriX)]
Expand Down Expand Up @@ -1262,6 +1338,32 @@ public async Task ShouldImportFromStreamAsync(RDFStoreEnums.RDFFormats format)
Assert.IsTrue(store2.Equals(store1));
}

[DataTestMethod]
[DataRow(RDFStoreEnums.RDFFormats.NQuads)]
[DataRow(RDFStoreEnums.RDFFormats.TriX)]
[DataRow(RDFStoreEnums.RDFFormats.TriG)]
public async Task ShouldImportFromStreamAsyncWithEnabledDatatypeDiscovery(RDFStoreEnums.RDFFormats format)
{
MemoryStream stream = new MemoryStream();
RDFMemoryStore store1 = new RDFMemoryStore();
RDFQuadruple quadruple1 = new RDFQuadruple(new RDFContext("http://ex/ctx/"), new RDFResource("http://ex/subj/"), new RDFResource("http://ex/pred/"), new RDFPlainLiteral("lit", "en-US"));
RDFQuadruple quadruple2 = new RDFQuadruple(new RDFContext("http://ex/ctx/"), new RDFResource("http://ex/subj/"), new RDFResource("http://ex/pred/"), new RDFResource("http://ex/obj/"));
store1.AddQuadruple(quadruple1)
.AddQuadruple(quadruple2)
.MergeGraph(new RDFGraph()
.AddDatatype(new RDFDatatype(new Uri($"ex:mydtQ{(int)format}"), RDFModelEnums.RDFDatatypes.XSD_STRING, [
new RDFPatternFacet("^ex$") ])));
store1.ToStream(format, stream);
RDFMemoryStore store2 = await RDFMemoryStore.FromStreamAsync(format, new MemoryStream(stream.ToArray()), true);

Assert.IsNotNull(store2);
Assert.IsTrue(store2.QuadruplesCount == 9);
Assert.IsTrue(store2.Equals(store1));
//Test that automatic datatype discovery happened successfully
Assert.IsTrue(RDFDatatypeRegister.GetDatatype($"ex:mydtQ{(int)format}").TargetDatatype == RDFModelEnums.RDFDatatypes.XSD_STRING);
Assert.IsTrue(RDFDatatypeRegister.GetDatatype($"ex:mydtQ{(int)format}").Facets.Single() is RDFPatternFacet fct && fct.Pattern == "^ex$");
}

[DataTestMethod]
[DataRow(RDFStoreEnums.RDFFormats.NQuads)]
[DataRow(RDFStoreEnums.RDFFormats.TriX)]
Expand Down Expand Up @@ -1296,6 +1398,28 @@ public void ShouldImportFromDataTable()
Assert.IsTrue(store2.Equals(store1));
}

[TestMethod]
public void ShouldImportFromDataTableWithEnabledDatatypeDiscovery()
{
RDFMemoryStore store1 = new RDFMemoryStore();
RDFQuadruple quadruple1 = new RDFQuadruple(new RDFContext("http://ctx/"), new RDFResource("http://subj/"), new RDFResource("http://pred/"), new RDFPlainLiteral("lit", "en-US"));
RDFQuadruple quadruple2 = new RDFQuadruple(new RDFContext("http://ctx/"), new RDFResource("http://subj/"), new RDFResource("http://pred/"), new RDFResource("http://obj/"));
store1.AddQuadruple(quadruple1)
.AddQuadruple(quadruple2)
.MergeGraph(new RDFGraph()
.AddDatatype(new RDFDatatype(new Uri("ex:mydtQ"), RDFModelEnums.RDFDatatypes.XSD_STRING, [
new RDFPatternFacet("^ex$") ])));
DataTable table = store1.ToDataTable();
RDFMemoryStore store2 = RDFMemoryStore.FromDataTable(table, true);

Assert.IsNotNull(store2);
Assert.IsTrue(store2.QuadruplesCount == 9);
Assert.IsTrue(store2.Equals(store1));
//Test that automatic datatype discovery happened successfully
Assert.IsTrue(RDFDatatypeRegister.GetDatatype("ex:mydtQ").TargetDatatype == RDFModelEnums.RDFDatatypes.XSD_STRING);
Assert.IsTrue(RDFDatatypeRegister.GetDatatype("ex:mydtQ").Facets.Single() is RDFPatternFacet fct && fct.Pattern == "^ex$");
}

[TestMethod]
public void ShouldImportEmptyFromDataTable()
{
Expand Down
3 changes: 2 additions & 1 deletion RDFSharp/Model/RDFGraph.cs
Original file line number Diff line number Diff line change
Expand Up @@ -671,7 +671,8 @@ public static RDFGraph FromFile(RDFModelEnums.RDFFormats rdfFormat, string filep
/// <summary>
/// Reads a graph from a stream of the given RDF format.
/// </summary>
public static RDFGraph FromStream(RDFModelEnums.RDFFormats rdfFormat, Stream inputStream, bool enableDatatypeDiscovery=false) => FromStream(rdfFormat, inputStream, null, enableDatatypeDiscovery);
public static RDFGraph FromStream(RDFModelEnums.RDFFormats rdfFormat, Stream inputStream, bool enableDatatypeDiscovery=false)
=> FromStream(rdfFormat, inputStream, null, enableDatatypeDiscovery);
internal static RDFGraph FromStream(RDFModelEnums.RDFFormats rdfFormat, Stream inputStream, Uri graphContext, bool enableDatatypeDiscovery=false)
{
#region Guards
Expand Down
Loading

0 comments on commit c172cd1

Please sign in to comment.