public void Add_requires_predicate() { var g = new Graph(); var s = g.CreateBlankNode(); var d = new DynamicNode(s); Assert.Throws <ArgumentNullException>(() => d.Add(null as string, null)); }
public void Add_requires_objects() { var g = new Graph(); var s = g.CreateBlankNode(); var p = "urn:p"; var d = new DynamicNode(s); Assert.Throws <ArgumentNullException>(() => d.Add(p, null)); }
/// <summary> /// Asserts statements equivalent to the parameters. /// </summary> /// <param name="subject">The subject to assert.</param> /// <param name="predicateAndObjects">An object with public properties or a dictionary representing predicates and objects to assert.</param> /// <exception cref="ArgumentNullException">When <paramref name="subject"/> or <paramref name="predicateAndObjects"/> is null.</exception> /// <exception cref="InvalidOperationException">When <paramref name="predicateAndObjects"/> is a dictionary with keys other than <see cref="INode"/>, <see cref="Uri"/> or <see cref="string"/>.</exception> public void Add(INode subject, object predicateAndObjects) { if (subject is null) { throw new ArgumentNullException(nameof(subject)); } if (predicateAndObjects is null) { throw new ArgumentNullException(nameof(predicateAndObjects)); } // Make a copy of the key node local to this graph // so dynamic references are resolved correctly // (they depend on node's graph) // TODO: Which graph exactly are we copying into? var targetNode = new DynamicNode(subject.CopyNode(this._g), PredicateBaseUri); foreach (DictionaryEntry entry in ConvertToDictionary(predicateAndObjects)) { switch (entry.Key) { case string stringKey: targetNode.Add(stringKey, entry.Value); break; case Uri uriKey: targetNode.Add(uriKey, entry.Value); break; case INode nodeKey: targetNode.Add(nodeKey, entry.Value); break; default: throw new InvalidOperationException("Only INode, Uri and string keys are allowed."); } } }
public void Add_handles_pairs() { var expected = new Graph(); expected.LoadFromString(@" <urn:s> <urn:p> ""o"" . "); var g = new Graph(); var s = g.CreateUriNode(UriFactory.Create("urn:s")); var p = "urn:p"; var d = new DynamicNode(s) as IDictionary <string, object>; d.Add(new KeyValuePair <string, object>(p, "o")); Assert.Equal(expected, g); }
public void Add_handles_strings() { var expected = new Graph(); expected.LoadFromString(@" <urn:s> <urn:p> ""abc"" . "); var g = new Graph(); var s = g.CreateUriNode(UriFactory.Create("urn:s")); var p = "urn:p"; var d = new DynamicNode(s); d.Add(p, "abc"); Assert.Equal(expected, g); }
public void Add_handles_enumerables() { var expected = new Graph(); expected.LoadFromString(@" <urn:s> <urn:p> <urn:s> . <urn:s> <urn:p> <urn:p> . <urn:s> <urn:p> <urn:o> . "); var g = new Graph(); var s = UriFactory.Create("urn:s"); var p = UriFactory.Create("urn:p"); var o = UriFactory.Create("urn:o"); var d = new DynamicNode(g.CreateUriNode(s)); d.Add(p.AbsoluteUri, new[] { s, p, o }); Assert.Equal(expected, g); }
/// <summary> /// Asserts statements equivalent to given subject and predicate and <paramref name="object"/>. /// </summary> /// <param name="object">The object to assert.</param> public void Add(object @object) { subject.Add(predicate, @object); }