コード例 #1
0
    def testSearchTwoSolutions(self):
        # A1_g0->B_g1->C_g2, A2_g3->B_g1
        g = Graph()
        g.addEdge(Vertex('g0', 'A'), Vertex('g1', 'B'))
        g.addEdge('g1', Vertex('g2', 'C'))
        g.addEdge(Vertex('g3', 'A'), 'g1')
        #g.addEdge('g3', 'g2')

        # A_g0->B_g1->C_g2
        q = Graph()
        q.addEdge(Vertex('g0', 'A'), Vertex('g1', 'B'))
        q.addEdge('g1', Vertex('g2', 'C'))

        solutions = g.search(q)

        self.assertEquals(len(solutions), 2)

        # First A->B,C is found.
        self.assertEquals(solutions[0]['g0'], 'g3')
        self.assertEquals(solutions[0]['g1'], 'g1')
        self.assertEquals(solutions[0]['g2'], 'g2')

        # Second A->B,C is found.
        self.assertEquals(solutions[1]['g0'], 'g0')
        self.assertEquals(solutions[1]['g1'], 'g1')
        self.assertEquals(solutions[1]['g2'], 'g2')
コード例 #2
0
 def testSearchNoCandidates(self):
     # If there are no suitable candidate data vertices for every
     # query vertex, then the returned solutions list should be empty.
     g = Graph()
     g.addEdge(Vertex('v1', 'A'), Vertex('v2', 'B'))
     q = Graph()
     q.addEdge(Vertex('u1', 'Z'), Vertex('u2', 'Y'))
     solutions = g.search(q)
     self.assertEquals(len(solutions), 0)
コード例 #3
0
    def testSearchOneSimpleSolution(self):
        g = Graph()
        g.addEdge(Vertex('v1', 'A'), Vertex('v2', 'B'))
        g.addEdge('v1', Vertex('v3', 'C'))

        # Query graph is exact replica.
        q = Graph()
        q.addEdge(Vertex('u1', 'A'), Vertex('u2', 'B'))
        q.addEdge('u1', Vertex('u3', 'C'))

        solutions = g.search(q)

        self.assertEquals(len(solutions), 1)
        self.assertEquals(solutions[0]['u1'], 'v1')
        self.assertEquals(solutions[0]['u2'], 'v2')
        self.assertEquals(solutions[0]['u3'], 'v3')