예제 #1
0
 def __init__(self, *args, **kwds):
     TestCase.__init__(self, *args, **kwds)
     self.eng = RectEngine()
예제 #2
0
class RectangleTestCase(TestCase):

    def __init__(self, *args, **kwds):
        TestCase.__init__(self, *args, **kwds)
        self.eng = RectEngine()

    def setUp(self):
        state = self.state = Attrib()
        state.rawSet(x = 10)
        state.rawSet(y = 10)
        state.rawSet(width = (9999))
        state.rawSet(height = (9999))
        state.rawSet(size = (9999, 9999))
        state.rawSet(position = (10, 10))
        state.rawSet(geometry = (10, 10, 9999, 9999))

    def checkState(self, x, y, width, height):
        state = self.state.state
        self.assertEqual(state['x'], x)
        self.assertEqual(state['y'], y)
        self.assertEqual(state['position'][0], x)
        self.assertEqual(state['position'][1], y)
        self.assertEqual(state['width'], width)
        self.assertEqual(state['height'], height)
        self.assertEqual(state['size'][0], width)
        self.assertEqual(state['size'][1], height)
        self.assertEqual(state['geometry'][0], x)
        self.assertEqual(state['geometry'][1], y)
        self.assertEqual(state['geometry'][2], width)
        self.assertEqual(state['geometry'][3], height)

    def testX(self):
        "Setting x and syncing with ['x']"
        state = self.state.state
        state['x'] = 20
        self.eng.sync(self.state, ['x'])
        self.checkState(20, 10, 9999, 9999)

    def testY(self):
        "Setting y and syncing with ['y']"
        state = self.state.state
        state['y'] = 20
        self.eng.sync(self.state, ['y'])
        self.checkState(10, 20, 9999, 9999)

    def testPosition(self):
        "Setting position and syncing with ['position']"
        state = self.state.state
        state['position'] = 20, 20
        self.eng.sync(self.state, ['position'])
        self.checkState(20, 20, 9999, 9999)

    def testGeometry(self):
        "Setting geometry and syncing with ['geometry']"
        state = self.state.state
        state['geometry'] = 42, 42, 42, 42
        self.eng.sync(self.state, ['geometry'])
        self.checkState(42, 42, 42, 42)

    def testLegalEmptySync(self):
        "Syncing a consistent state with []"
        state = self.state.state
        self.eng.sync(self.state, [])
        self.checkState(10, 10, 9999, 9999)

    def genericIllegalEmptySyncTest(self, name, value):
        state = self.state.state
        state[name] = value
        self.assertRaises(IllegalState, self.eng.sync, self.state, [])

    def testIllegalEmptySync(self):
        "Syncing an inconsistent state with []"

        # Generalize...
        self.genericIllegalEmptySyncTest('x', 0)
        self.genericIllegalEmptySyncTest('y', 0)
        self.genericIllegalEmptySyncTest('width', 0)
        self.genericIllegalEmptySyncTest('height', 0)
        self.genericIllegalEmptySyncTest('position', (0, 10))
        self.genericIllegalEmptySyncTest('position', (10, 0))
        self.genericIllegalEmptySyncTest('size', (0, 10))
        self.genericIllegalEmptySyncTest('size', (10, 0))
        for i in range(4):
            v = [10, 10, 9999, 9999]
            v[i] = 0
            self.genericIllegalEmptySyncTest('geometry', v)

    def testInconsistentSyncList(self):
        "Syncing on two inconsistent, related values"
        state = self.state.state
        
        # Generalize...
        state['x'] = 42
        state['position'] = 20, 30
        self.assertRaises(IllegalState, self.eng.sync, self.state, ['x', 'position'])

    def testConsistentSyncList(self):
        "Syncing on two consistent, related values"
        state = self.state.state
        
        # Generalize...
        state['x'] = 42
        state['position'] = 42, 10
        self.eng.sync(self.state, ['x', 'position'])
        self.checkState(42, 10, 9999, 9999)

    def testIndependentSyncList(self):
        "Syncing on two independent values"
        state = self.state.state
        
        # Generalize...
        state['position'] = 42, 42
        state['size'] = 42, 42
        self.eng.sync(self.state, ['position', 'size'])
        self.checkState(42, 42, 42, 42)

    def testPartialWith(self):
        "Syncing a partial state with a sync list"
        state = self.state.state

        # Generalize...
        del state['geometry']
        del state['size']
        del state['position']
        self.eng.sync(self.state, ['x', 'y', 'width', 'height'])
        self.checkState(10, 10, 9999, 9999)

    def testPartialWithout(self):
        "Syncing a partial state without a sync list"
        state = self.state.state

        # Generalize...
        del state['geometry']
        del state['size']
        del state['position']
        self.eng.sync(self.state, [])
        self.checkState(10, 10, 9999, 9999)

    def testModification(self):
        "Modifying an aggregate and then syncing"
        state = self.state.state

        # Generalize...
        state['geometry'] = list(state['geometry'])
        self.eng.sync(self.state, [])
        self.assertEqual(state['geometry'], list(state['geometry']))
        state['geometry'][2] = 1234
        self.eng.sync(self.state, ['geometry'])
        self.checkState(10, 10, 1234, 9999)