public void Enumerates_pairs_with_predicate_key_and_dynamic_objects_value()
        {
            var g = new Graph();

            g.LoadFromString(@"
<urn:s> <urn:s> <urn:s> . # 1.1
<urn:s> <urn:s> <urn:p> . # 1.2
<urn:s> <urn:s> <urn:o> . # 1.3
<urn:s> <urn:p> <urn:s> . # 2.1
<urn:s> <urn:p> <urn:p> . # 2.2
<urn:s> <urn:p> <urn:o> . # 2.3
<urn:s> <urn:o> <urn:s> . # 3.1
<urn:s> <urn:o> <urn:p> . # 3.2
<urn:s> <urn:o> <urn:o> . # 3.3
<urn:p> <urn:s> <urn:s> .
<urn:p> <urn:s> <urn:p> .
<urn:p> <urn:s> <urn:o> .
<urn:p> <urn:p> <urn:s> .
<urn:p> <urn:p> <urn:p> .
<urn:p> <urn:p> <urn:o> .
<urn:p> <urn:o> <urn:s> .
<urn:p> <urn:o> <urn:p> .
<urn:p> <urn:o> <urn:o> .
<urn:o> <urn:s> <urn:s> .
<urn:o> <urn:s> <urn:p> .
<urn:o> <urn:s> <urn:o> .
<urn:o> <urn:p> <urn:s> .
<urn:o> <urn:p> <urn:p> .
<urn:o> <urn:p> <urn:o> .
<urn:o> <urn:o> <urn:s> .
<urn:o> <urn:o> <urn:p> .
<urn:o> <urn:o> <urn:o> .
");

            var s   = g.CreateUriNode(UriFactory.Create("urn:s"));
            var p   = g.CreateUriNode(UriFactory.Create("urn:p"));
            var o   = g.CreateUriNode(UriFactory.Create("urn:o"));
            var d   = new DynamicNode(s);
            var spo = new[] { s, p, o };

            using (var actual = d.Cast <KeyValuePair <string, object> >().GetEnumerator())
            {
                using (var expected = spo.Select(n => n.Uri.AbsoluteUri).GetEnumerator())
                {
                    while (expected.MoveNext() | actual.MoveNext())
                    {
                        Assert.Equal(expected.Current, actual.Current.Key);
                        Assert.IsType <DynamicObjectCollection>(actual.Current.Value);
                        Assert.Equal(spo, actual.Current.Value);
                    }
                }
            }
        }