| # Copyright 2015 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Tests for the geometry module.""" |
| |
| import unittest |
| |
| from devil.utils import geometry as g |
| |
| |
| class PointTest(unittest.TestCase): |
| |
| def testStr(self): |
| p = g.Point(1, 2) |
| self.assertEquals(str(p), '(1, 2)') |
| |
| def testAdd(self): |
| p = g.Point(1, 2) |
| q = g.Point(3, 4) |
| r = g.Point(4, 6) |
| self.assertEquals(p + q, r) |
| |
| def testAdd_TypeErrorWithInvalidOperands(self): |
| # pylint: disable=pointless-statement |
| p = g.Point(1, 2) |
| with self.assertRaises(TypeError): |
| p + 4 # Can't add point and scalar. |
| with self.assertRaises(TypeError): |
| 4 + p # Can't add scalar and point. |
| |
| def testMult(self): |
| p = g.Point(1, 2) |
| r = g.Point(2, 4) |
| self.assertEquals(2 * p, r) # Multiply by scalar on the left. |
| |
| def testMult_TypeErrorWithInvalidOperands(self): |
| # pylint: disable=pointless-statement |
| p = g.Point(1, 2) |
| q = g.Point(2, 4) |
| with self.assertRaises(TypeError): |
| p * q # Can't multiply points. |
| with self.assertRaises(TypeError): |
| p * 4 # Can't multiply by a scalar on the right. |
| |
| |
| class RectangleTest(unittest.TestCase): |
| |
| def testStr(self): |
| r = g.Rectangle(g.Point(0, 1), g.Point(2, 3)) |
| self.assertEquals(str(r), '[(0, 1), (2, 3)]') |
| |
| def testCenter(self): |
| r = g.Rectangle(g.Point(0, 1), g.Point(2, 3)) |
| c = g.Point(1, 2) |
| self.assertEquals(r.center, c) |
| |
| def testFromJson(self): |
| r1 = g.Rectangle(g.Point(0, 1), g.Point(2, 3)) |
| r2 = g.Rectangle.FromDict({'top': 1, 'left': 0, 'bottom': 3, 'right': 2}) |
| self.assertEquals(r1, r2) |