コード例 #1
0
    def testNoExistenceVariables(self):
        schema = Schema()
        schema.addEntity('A')
        schema.addEntity('B')
        schema.addEntity('C')
        schema.addRelationship('AB', ('A', Schema.MANY), ('B', Schema.ONE))
        schema.addRelationship('BC', ('B', Schema.ONE), ('C', Schema.MANY))
        schema.addAttribute('A', 'X')
        schema.addAttribute('B', 'Y')
        schema.addAttribute('C', 'Z')
        schema.addAttribute('AB', 'XY')
        schema.addAttribute('BC', 'YZ')

        hop0 = ['[A].X', '[B].Y', '[C].Z', '[AB].XY', '[BC].YZ']

        hop1 = ['[A, AB].XY', '[B, AB].XY', '[B, BC].YZ', '[C, BC].YZ', '[AB, A].X',
                '[AB, B].Y', '[BC, C].Z', '[BC, B].Y']

        hop2 = ['[A, AB, B].Y', '[B, AB, A].X', '[B, BC, C].Z', '[C, BC, B].Y', '[AB, A, AB].XY',
                '[AB, B, BC].YZ', '[BC, C, BC].YZ', '[BC, B, AB].XY']

        hop3 = ['[A, AB, B, BC].YZ', '[B, AB, A, AB].XY', '[B, BC, C, BC].YZ', '[C, BC, B, AB].XY',
                '[AB, A, AB, B].Y', '[AB, B, BC, C].Z', '[BC, C, BC, B].Y', '[BC, B, AB, A].X']

        relVars = RelationalSpace.getRelationalVariables(schema, 3)
        self.assertTrue(all([isinstance(relVar, RelationalVariable) for relVar in relVars]))
        TestUtil.assertUnorderedListEqual(self, hop0 + hop1 + hop2 + hop3, [str(relVar) for relVar in relVars])
コード例 #2
0
    def testOneEntity(self):
        schema = Schema()
        schema.addEntity('A')
        relVars = RelationalSpace.getRelationalVariables(schema, 0, includeExistence=True)
        self.assertTrue(all([isinstance(relVar, RelationalVariable) for relVar in relVars]))
        TestUtil.assertUnorderedListEqual(self, ['[A].exists'], [str(relVar) for relVar in relVars])

        schema.addAttribute('A', 'X1')
        relVars = RelationalSpace.getRelationalVariables(schema, 0, includeExistence=True)
        self.assertTrue(all([isinstance(relVar, RelationalVariable) for relVar in relVars]))
        TestUtil.assertUnorderedListEqual(self, ['[A].exists', '[A].X1'], [str(relVar) for relVar in relVars])

        schema.addAttribute('A', 'X2')
        relVars = RelationalSpace.getRelationalVariables(schema, 0, includeExistence=True)
        self.assertTrue(all([isinstance(relVar, RelationalVariable) for relVar in relVars]))
        TestUtil.assertUnorderedListEqual(self, ['[A].exists', '[A].X1', '[A].X2'], [str(relVar) for relVar in relVars])

        schema = Schema()
        schema.addEntity('B')
        relVars = RelationalSpace.getRelationalVariables(schema, 0, includeExistence=True)
        self.assertTrue(all([isinstance(relVar, RelationalVariable) for relVar in relVars]))
        TestUtil.assertUnorderedListEqual(self, ['[B].exists'], [str(relVar) for relVar in relVars])

        schema.addAttribute('B', 'Y')
        relVars = RelationalSpace.getRelationalVariables(schema, 0, includeExistence=True)
        self.assertTrue(all([isinstance(relVar, RelationalVariable) for relVar in relVars]))
        TestUtil.assertUnorderedListEqual(self, ['[B].exists', '[B].Y'], [str(relVar) for relVar in relVars])

        schema.addEntity('A')
        schema.addAttribute('A', 'X')
        relVars = RelationalSpace.getRelationalVariables(schema, 0, includeExistence=True)
        self.assertTrue(all([isinstance(relVar, RelationalVariable) for relVar in relVars]))
        TestUtil.assertUnorderedListEqual(self, ['[A].exists', '[A].X', '[B].exists', '[B].Y'],
            [str(relVar) for relVar in relVars])
コード例 #3
0
 def assertAGGEqualNoIntersection(self, schema, actualAgg,
                                  expectedRelDepStrs):
     expectedNodes = [
         relVar for relVar in RelationalSpace.getRelationalVariables(
             schema, actualAgg.hopThreshold, includeExistence=False)
         if relVar.getBaseItemName() == actualAgg.perspective
     ]
     expectedEdges = [(ParserUtil.parseRelDep(depStr).relVar1,
                       ParserUtil.parseRelDep(depStr).relVar2)
                      for depStr in expectedRelDepStrs]
     TestUtil.assertUnorderedListEqual(self, expectedNodes,
                                       actualAgg.nodes())
     TestUtil.assertUnorderedListEqual(self, expectedEdges,
                                       actualAgg.edges())