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