# Path: pysc2/lib/point.py
# class Point(collections.namedtuple("Point", ["x", "y"])):
# class Rect(collections.namedtuple("Rect", ["t", "l", "b", "r"])):
#   def build(cls, obj):
#   def unit_rand(cls):
#   def assign_to(self, obj):
#   def dist(self, other):
#   def dist_sq(self, other):
#   def round(self):
#   def floor(self):
#   def ceil(self):
#   def abs(self):
#   def len(self):
#   def scale(self, target_len):
#   def scale_max_size(self, max_size):
#   def scale_min_size(self, min_size):
#   def min_dim(self):
#   def max_dim(self):
#   def transpose(self):
#   def rotate_deg(self, angle):
#   def rotate_rad(self, angle):
#   def rotate_rand(self, angle=180):
#   def contained_circle(self, pt, radius):
#   def bound(self, p1, p2=None):
#   def __str__(self):
#   def __neg__(self):
#   def __add__(self, pt_or_val):
#   def __sub__(self, pt_or_val):
#   def __mul__(self, pt_or_val):
#   def __truediv__(self, pt_or_val):
#   def __floordiv__(self, pt_or_val):
#   def __new__(cls, *args):
#   def __str__(self):
#   def center(self):
#   def top(self):
#   def left(self):
#   def bottom(self):
#   def right(self):
#   def width(self):
#   def height(self):
#   def tl(self):
#   def br(self):
#   def tr(self):
#   def bl(self):
#   def diagonal(self):
#   def size(self):
#   def area(self):
#   def round(self):
#   def floor(self):
#   def ceil(self):
#   def contains_point(self, pt):
#   def contains_circle(self, pt, radius):
#   def intersects_circle(self, pt, radius):


from absl.testing import absltest
from future.builtins import int  # pylint: disable=redefined-builtin
from pysc2.lib import point

  def testMinDim(self):
    self.assertEqual(5, point.Point(5, 10).min_dim())

  def testMaxDim(self):
    self.assertEqual(10, point.Point(5, 10).max_dim())

  def testTranspose(self):
    self.assertEqual(point.Point(4, 3), point.Point(3, 4).transpose())

  def testRound(self):
    p = point.Point(1.3, 2.6).round()
    self.assertEqual(point.Point(1, 3), p)
    self.assertIsInstance(p.x, int)
    self.assertIsInstance(p.y, int)

  def testCeil(self):
    p = point.Point(1.3, 2.6).ceil()
    self.assertEqual(point.Point(2, 3), p)
    self.assertIsInstance(p.x, int)
    self.assertIsInstance(p.y, int)

  def testFloor(self):
    p = point.Point(1.3, 2.6).floor()
    self.assertEqual(point.Point(1, 2), p)
    self.assertIsInstance(p.x, int)
    self.assertIsInstance(p.y, int)

  def testRotate(self):
    p = point.Point(0, 100)

# Path: pysc2/lib/point.py
# class Point(collections.namedtuple("Point", ["x", "y"])):
# class Rect(collections.namedtuple("Rect", ["t", "l", "b", "r"])):
#   def build(cls, obj):
#   def unit_rand(cls):
#   def assign_to(self, obj):
#   def dist(self, other):
#   def dist_sq(self, other):
#   def round(self):
#   def floor(self):
#   def ceil(self):
#   def abs(self):
#   def len(self):
#   def scale(self, target_len):
#   def scale_max_size(self, max_size):
#   def scale_min_size(self, min_size):
#   def min_dim(self):
#   def max_dim(self):
#   def transpose(self):
#   def rotate_deg(self, angle):
#   def rotate_rad(self, angle):
#   def rotate_rand(self, angle=180):
#   def contained_circle(self, pt, radius):
#   def bound(self, p1, p2=None):
#   def __str__(self):
#   def __neg__(self):
#   def __add__(self, pt_or_val):
#   def __sub__(self, pt_or_val):
#   def __mul__(self, pt_or_val):
#   def __truediv__(self, pt_or_val):
#   def __floordiv__(self, pt_or_val):
#   def __new__(cls, *args):
#   def __str__(self):
#   def center(self):
#   def top(self):
#   def left(self):
#   def bottom(self):
#   def right(self):
#   def width(self):
#   def height(self):
#   def tl(self):
#   def br(self):
#   def tr(self):
#   def bl(self):
#   def diagonal(self):
#   def size(self):
#   def area(self):
#   def round(self):
#   def floor(self):
#   def ceil(self):
#   def contains_point(self, pt):
#   def contains_circle(self, pt, radius):
#   def intersects_circle(self, pt, radius):


# Path: pysc2/lib/point_test.py
from absl.testing import absltest
from future.builtins import int  # pylint: disable=redefined-builtin
from pysc2.lib import point


  def testMinDim(self):
    self.assertEqual(5, point.Point(5, 10).min_dim())

  def testMaxDim(self):
    self.assertEqual(10, point.Point(5, 10).max_dim())

  def testTranspose(self):
    self.assertEqual(point.Point(4, 3), point.Point(3, 4).transpose())

  def testRound(self):
    p = point.Point(1.3, 2.6).round()
    self.assertEqual(point.Point(1, 3), p)
    self.assertIsInstance(p.x, int)
    self.assertIsInstance(p.y, int)

  def testCeil(self):
    p = point.Point(1.3, 2.6).ceil()
    self.assertEqual(point.Point(2, 3), p)
    self.assertIsInstance(p.x, int)
    self.assertIsInstance(p.y, int)

  def testFloor(self):
    p = point.Point(1.3, 2.6).floor()
    self.assertEqual(point.Point(1, 2), p)
    self.assertIsInstance(p.x, int)
    self.assertIsInstance(p.y, int)

  def testRotate(self):
    p = point.Point(0, 100)

    self.assertEqual(point.Point(-100, 0), p.rotate_deg(90).round())