class GraphAggregates1(unittest.TestCase):
    dburi = Literal("sqlite://")

    def setUp(self):
        memStore = plugin.get("SQLAlchemy", Store)(identifier="rdflib_test", configuration=self.dburi)
        self.graph1 = Graph(memStore)
        self.graph2 = Graph(memStore)
        self.graph3 = Graph(memStore)

        for n3Str, graph in [(testGraph1N3, self.graph1), (testGraph2N3, self.graph2), (testGraph3N3, self.graph3)]:
            graph.parse(StringIO(n3Str), format="n3")

        self.G = ReadOnlyGraphAggregate([self.graph1, self.graph2, self.graph3])

    def testAggregateRaw(self):
        # Test triples
        assert len(list(self.G.triples((None, RDF.type, None)))) == 4
        assert len(list(self.G.triples((URIRef("http://test/bar"), None, None)))) == 2
        assert len(list(self.G.triples((None, URIRef("http://test/d"), None)))) == 3

        # Test __len__
        # assert len(self.G) == 8, self.G.serialize(format="nt")
        assert len(list(self.G.triples((None, None, None)))) == 8

        # assert context iteration
        for g in self.G.contexts():
            assert isinstance(g, Graph)

        # Test __contains__
        assert (URIRef("http://test/foo"), RDF.type, RDFS.Resource) in self.G

        barPredicates = [URIRef("http://test/d"), RDFS.isDefinedBy]
        assert len(list(self.G.triples_choices((URIRef("http://test/bar"), barPredicates, None)))) == 2
class GraphAggregates1(unittest.TestCase):
    def setUp(self):
        memStore = plugin.get('IOMemory', Store)()
        self.graph1 = Graph(memStore)
        self.graph2 = Graph(memStore)
        self.graph3 = Graph(memStore)

        for n3Str, graph in [(testGraph1N3, self.graph1),
                             (testGraph2N3, self.graph2),
                             (testGraph3N3, self.graph3)]:
            graph.parse(StringIO(n3Str), format='n3')

        self.G = ReadOnlyGraphAggregate([self.graph1, self.graph2, self.graph3])

    def testAggregateRaw(self):
        # Test triples
        assert len(list(self.G.triples((None, RDF.type, None)))) == 4
        assert len(list(self.G.triples((URIRef("http://test/bar"), None, None)))) == 2
        assert len(list(self.G.triples((None, URIRef("http://test/d"), None)))) == 3

        # Test __len__
        assert len(self.G) == 8

        # assert context iteration
        for g in self.G.contexts():
            assert isinstance(g, Graph)

        # Test __contains__
        assert (URIRef("http://test/foo"), RDF.type, RDFS.Resource) in self.G

        barPredicates = [URIRef("http://test/d"), RDFS.isDefinedBy]
        assert len(list(self.G.triples_choices((URIRef("http://test/bar"), barPredicates, None)))) == 2