-
Notifications
You must be signed in to change notification settings - Fork 13
/
test_error.py
134 lines (111 loc) · 5.57 KB
/
test_error.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# -*- coding: utf-8 -*-
from testfixtures import log_capture
from tilecloud_chain.tests import CompareCase
from tilecloud_chain import controller, generate, TileGeneration
class TestError(CompareCase):
@log_capture()
def test_resolution(self, l):
self.run_cmd(
'./buildout/bin/generate_controller -c tilegeneration/wrong_resolutions.yaml',
controller.main)
l.check(
('tilecloud_chain', 'ERROR', "The resolution 0.1 * resolution_scale 5 is not an integer."),
('tilecloud_chain.tests', 'INFO', ''),
('tilecloud_chain.tests', 'INFO', ''),
)
@log_capture()
def test_mapnik_grid_meta(self, l):
self.run_cmd(
'./buildout/bin/generate_controller -c tilegeneration/wrong_mapnik_grid_meta.yaml',
controller.main)
l.check(
('tilecloud_chain', 'ERROR', "The layer 'b' is of type Mapnik/Grid, that can't support matatiles."),
('tilecloud_chain.tests', 'INFO', ''),
('tilecloud_chain.tests', 'INFO', ''),
)
@log_capture()
def test_exists(self, l):
self.run_cmd(
'./buildout/bin/generate_controller -c tilegeneration/wrong_exists.yaml',
controller.main)
l.check(
('tilecloud_chain', 'ERROR', "The attribute 'grids' is required in the object config."),
('tilecloud_chain.tests', 'INFO', ''),
('tilecloud_chain.tests', 'INFO', ''),
)
@log_capture()
def test_type(self, l):
self.run_cmd(
'./buildout/bin/generate_controller -v -c tilegeneration/wrong_type.yaml',
controller.main)
l.check(
('tilecloud_chain', 'ERROR', "The attribute 'resolutions' is required in the object grid[swissgrid_3]."),
('tilecloud_chain', 'ERROR', "The attribute 'bbox' is required in the object grid[swissgrid_3]."),
('tilecloud_chain', 'ERROR', "The attribute 'srs' is required in the object grid[swissgrid_3]."),
('tilecloud_chain', 'ERROR', "The attribute 'resolution_scale' of the object grid[swissgrid_2] "
"is not a <type 'int'>."),
('tilecloud_chain', 'ERROR', "The attribute 'bbox' of the object grid[swissgrid_2] "
"has an element who is not a right float expression: a."),
('tilecloud_chain', 'ERROR', "The attribute 'srs' of the object grid[swissgrid_2] is not a <type 'str'>."),
('tilecloud_chain', 'ERROR', "The attribute 'bbox' of the object grid[swissgrid_1] is not an array."),
('tilecloud_chain', 'ERROR', "The attribute 'srs' of the object grid[swissgrid_1] is not a <type 'str'>."),
('tilecloud_chain.tests', 'INFO', ''),
('tilecloud_chain.tests', 'INFO', ''),
)
@log_capture()
def test_zoom_errors(self, l):
self.run_cmd(
'./buildout/bin/generate_tiles -c tilegeneration/test.yaml -l point --zoom 4,10',
generate.main)
l.check(
('tilecloud_chain', 'INFO', 'Execute SQL: SELECT ST_AsBinary(geom) FROM (SELECT the_geom AS geom '
'FROM tests.point) AS g.'),
('tilecloud_chain', 'WARNING', "Warning: zoom 10 is greater than the maximum "
"zoom 4 of grid swissgrid_5 of layer point, ignored."),
('tilecloud_chain', 'WARNING', "Warning: zoom 4 corresponds to resolution 5.0 "
"is smaller than the 'min_resolution_seed' 10.0 of layer point, ignored."),
('tilecloud_chain.tests', 'INFO', ''),
('tilecloud_chain.tests', 'INFO', ''),
)
def test_validate_type(self):
class Opt:
verbose = False
debug = False
test = 0
zoom = None
gene = TileGeneration('tilegeneration/test.yaml', Opt())
obj = {'value': 1}
self.assertEquals(gene.validate(obj, 'object', 'value', int), False)
self.assertEquals(obj['value'], 1)
obj = {'value': 1.0}
self.assertEquals(gene.validate(obj, 'object', 'value', int), True)
obj = {'value': '1 + 1'}
self.assertEquals(gene.validate(obj, 'object', 'value', int), False)
self.assertEquals(obj['value'], 2)
obj = {'value': '1 * 1.5'}
self.assertEquals(gene.validate(obj, 'object', 'value', int), False)
self.assertEquals(obj['value'], 2)
obj = {'value': 'a'}
self.assertEquals(gene.validate(obj, 'object', 'value', int), True)
obj = {'value': {}}
self.assertEquals(gene.validate(obj, 'object', 'value', int), True)
obj = {'value': []}
self.assertEquals(gene.validate(obj, 'object', 'value', int), True)
obj = {'value': 1}
self.assertEquals(gene.validate(obj, 'object', 'value', float), False)
self.assertEquals(obj['value'], 1.0)
obj = {'value': 1.0}
self.assertEquals(gene.validate(obj, 'object', 'value', float), False)
self.assertEquals(obj['value'], 1.0)
obj = {'value': '1 + 1'}
self.assertEquals(gene.validate(obj, 'object', 'value', float), False)
self.assertEquals(obj['value'], 2.0)
obj = {'value': '1 * 1.5'}
self.assertEquals(gene.validate(obj, 'object', 'value', float), False)
self.assertEquals(obj['value'], 1.5)
obj = {'value': 'a'}
self.assertEquals(gene.validate(obj, 'object', 'value', float), True)
obj = {'value': {}}
self.assertEquals(gene.validate(obj, 'object', 'value', float), True)
obj = {'value': []}
self.assertEquals(gene.validate(obj, 'object', 'value', float), True)