/django/contrib/gis/gdal/tests/test_envelope.py

https://code.google.com/p/mango-py/ · Python · 95 lines · 80 code · 15 blank · 0 comment · 2 complexity · 2d51986464d56cd38bac0cf153ccbe26 MD5 · raw file

  1. from django.contrib.gis.gdal import Envelope, OGRException
  2. from django.utils import unittest
  3. class TestPoint(object):
  4. def __init__(self, x, y):
  5. self.x = x
  6. self.y = y
  7. class EnvelopeTest(unittest.TestCase):
  8. def setUp(self):
  9. self.e = Envelope(0, 0, 5, 5)
  10. def test01_init(self):
  11. "Testing Envelope initilization."
  12. e1 = Envelope((0, 0, 5, 5))
  13. e2 = Envelope(0, 0, 5, 5)
  14. e3 = Envelope(0, '0', '5', 5) # Thanks to ww for this
  15. e4 = Envelope(e1._envelope)
  16. self.assertRaises(OGRException, Envelope, (5, 5, 0, 0))
  17. self.assertRaises(OGRException, Envelope, 5, 5, 0, 0)
  18. self.assertRaises(OGRException, Envelope, (0, 0, 5, 5, 3))
  19. self.assertRaises(OGRException, Envelope, ())
  20. self.assertRaises(ValueError, Envelope, 0, 'a', 5, 5)
  21. self.assertRaises(TypeError, Envelope, u'foo')
  22. self.assertRaises(OGRException, Envelope, (1, 1, 0, 0))
  23. try:
  24. Envelope(0, 0, 0, 0)
  25. except OGRException:
  26. self.fail("shouldn't raise an exception for min_x == max_x or min_y == max_y")
  27. def test02_properties(self):
  28. "Testing Envelope properties."
  29. e = Envelope(0, 0, 2, 3)
  30. self.assertEqual(0, e.min_x)
  31. self.assertEqual(0, e.min_y)
  32. self.assertEqual(2, e.max_x)
  33. self.assertEqual(3, e.max_y)
  34. self.assertEqual((0, 0), e.ll)
  35. self.assertEqual((2, 3), e.ur)
  36. self.assertEqual((0, 0, 2, 3), e.tuple)
  37. self.assertEqual('POLYGON((0.0 0.0,0.0 3.0,2.0 3.0,2.0 0.0,0.0 0.0))', e.wkt)
  38. self.assertEqual('(0.0, 0.0, 2.0, 3.0)', str(e))
  39. def test03_equivalence(self):
  40. "Testing Envelope equivalence."
  41. e1 = Envelope(0.523, 0.217, 253.23, 523.69)
  42. e2 = Envelope((0.523, 0.217, 253.23, 523.69))
  43. self.assertEqual(e1, e2)
  44. self.assertEqual((0.523, 0.217, 253.23, 523.69), e1)
  45. def test04_expand_to_include_pt_2_params(self):
  46. "Testing Envelope expand_to_include -- point as two parameters."
  47. self.e.expand_to_include(2, 6)
  48. self.assertEqual((0, 0, 5, 6), self.e)
  49. self.e.expand_to_include(-1, -1)
  50. self.assertEqual((-1, -1, 5, 6), self.e)
  51. def test05_expand_to_include_pt_2_tuple(self):
  52. "Testing Envelope expand_to_include -- point as a single 2-tuple parameter."
  53. self.e.expand_to_include((10, 10))
  54. self.assertEqual((0, 0, 10, 10), self.e)
  55. self.e.expand_to_include((-10, -10))
  56. self.assertEqual((-10, -10, 10, 10), self.e)
  57. def test06_expand_to_include_extent_4_params(self):
  58. "Testing Envelope expand_to_include -- extent as 4 parameters."
  59. self.e.expand_to_include(-1, 1, 3, 7)
  60. self.assertEqual((-1, 0, 5, 7), self.e)
  61. def test06_expand_to_include_extent_4_tuple(self):
  62. "Testing Envelope expand_to_include -- extent as a single 4-tuple parameter."
  63. self.e.expand_to_include((-1, 1, 3, 7))
  64. self.assertEqual((-1, 0, 5, 7), self.e)
  65. def test07_expand_to_include_envelope(self):
  66. "Testing Envelope expand_to_include with Envelope as parameter."
  67. self.e.expand_to_include(Envelope(-1, 1, 3, 7))
  68. self.assertEqual((-1, 0, 5, 7), self.e)
  69. def test08_expand_to_include_point(self):
  70. "Testing Envelope expand_to_include with Point as parameter."
  71. self.e.expand_to_include(TestPoint(-1, 1))
  72. self.assertEqual((-1, 0, 5, 5), self.e)
  73. self.e.expand_to_include(TestPoint(10, 10))
  74. self.assertEqual((-1, 0, 10, 10), self.e)
  75. def suite():
  76. s = unittest.TestSuite()
  77. s.addTest(unittest.makeSuite(EnvelopeTest))
  78. return s
  79. def run(verbosity=2):
  80. unittest.TextTestRunner(verbosity=verbosity).run(suite())