blob: 26a78b0bdc2ea12c354251fc47e3f511ddf2c0d4 [file] [log] [blame]
# 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.assertEqual(str(p), '(1, 2)')
def testAdd(self):
p = g.Point(1, 2)
q = g.Point(3, 4)
r = g.Point(4, 6)
self.assertEqual(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.assertEqual(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.assertEqual(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.assertEqual(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.assertEqual(r1, r2)