~widelands-dev/widelands-website/django_staticfiles

« back to all changes in this revision

Viewing changes to widelandslib/test/test_map.py

  • Committer: Holger Rapp
  • Date: 2009-02-21 18:24:02 UTC
  • Revision ID: sirver@kallisto.local-20090221182402-k3tuf5c4gjwslbjf
Main Page contains now the same informations as before

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/env python -tt
2
 
# encoding: utf-8
3
 
#
4
 
 
5
 
import sys
6
 
sys.path.append('..')
7
 
 
8
 
from numpy import *
9
 
import unittest
10
 
import base64
11
 
from cStringIO import StringIO
12
 
from itertools import *
13
 
 
14
 
from map import *
15
 
 
16
 
# General base class for tests that raise
17
 
# an exception
18
 
 
19
 
 
20
 
class _WLSetup(unittest.TestCase):
21
 
 
22
 
    def setUp(self):
23
 
        self.m = WidelandsMap()
24
 
 
25
 
 
26
 
# {{{ Elemental package
27
 
class _WLElemental_Base(unittest.TestCase):
28
 
 
29
 
    def setUp(self):
30
 
        self.m = WidelandsMap()
31
 
        self.m._read_elemental(StringIO(self.input))
32
 
#################
33
 
# Working Tests #
34
 
#################
35
 
 
36
 
 
37
 
class TestElementalReading_ValidInput_ExceptCorrectResult(_WLElemental_Base):
38
 
    # {{{ Data
39
 
    input = """[global]
40
 
packet_version=1
41
 
map_w=160
42
 
map_h=132
43
 
nr_players=4
44
 
world=greenland
45
 
name=_Elven Forests
46
 
author=Winterwind
47
 
descr=_"The breath-taking beauty of these ..."
48
 
"""
49
 
    # }}}
50
 
 
51
 
    def testDimensions(self):
52
 
        self.assertEqual(self.m.w, 160)
53
 
        self.assertEqual(self.m.h, 132)
54
 
        self.assertEqual(self.m.dim, (132, 160))
55
 
 
56
 
    def testNrPlayers(self):
57
 
        self.assertEqual(self.m.nr_players, 4)
58
 
 
59
 
    def testWorldName(self):
60
 
        self.assertEqual(self.m.world_name, 'greenland')
61
 
 
62
 
    def testName(self):
63
 
        self.assertEqual(self.m.name, 'Elven Forests')
64
 
 
65
 
    def testAuthor(self):
66
 
        self.assertEqual(self.m.author, 'Winterwind')
67
 
 
68
 
    def testDescr(self):
69
 
        self.assertEqual(self.m.descr, 'The breath-taking beauty of these ...')
70
 
 
71
 
##########
72
 
# Raises #
73
 
##########
74
 
 
75
 
 
76
 
class TestElementalReading_TestMissingSection_ExceptRaises(_WLSetup):
77
 
    # {{{ Data
78
 
    input = """[globalnoglbale]
79
 
blah = 1
80
 
"""
81
 
    # }}}
82
 
 
83
 
    def runTest(self):
84
 
        self.assertRaises(InvalidMapPackage, self.m._read_elemental,
85
 
                          StringIO(self.input))
86
 
# }}}
87
 
 
88
 
# {{{ Height package tests
89
 
 
90
 
 
91
 
class _WLHeight_Base(unittest.TestCase):
92
 
 
93
 
    def setUp(self):
94
 
        self.m = WidelandsMap()
95
 
        self.m._dim = self.dim
96
 
        self.m._read_heights(StringIO(self.input))
97
 
 
98
 
 
99
 
class _WLHeight_Setup(unittest.TestCase):
100
 
 
101
 
    def setUp(self):
102
 
        self.m = WidelandsMap()
103
 
        self.m._dim = self.dim
104
 
        self.input = StringIO(self.input)
105
 
 
106
 
#################
107
 
# Working Tests #
108
 
#################
109
 
 
110
 
 
111
 
class TestHeightReading_ValidInput_ExceptCorrectResult(_WLHeight_Base):
112
 
    # {{{ Data
113
 
    dim = (4, 6)  # w6, h4
114
 
    input = '\x01\x00)!\x08*\x0b1\x18-0\x1d\x03\x08.\x1e\x01\x19\x1f\x1d\x17\x17\x1c\x07#5'
115
 
    wanted = array([[41, 33,  8, 42, 11, 49],
116
 
                    [24, 45, 48, 29,  3,  8],
117
 
                    [46, 30,  1, 25, 31, 29],
118
 
                    [23, 23, 28,  7, 35, 53]])
119
 
    # }}}
120
 
 
121
 
    def runTest(self):
122
 
        self.assertTrue(all(self.wanted == self.m.heights))
123
 
 
124
 
##########
125
 
# Raises #
126
 
##########
127
 
 
128
 
 
129
 
class TestHeightReading_WrongVersion_ExceptRaises(_WLHeight_Setup):
130
 
    dim = (5, 7)
131
 
    input = '\x00\x02jdhf'
132
 
 
133
 
    def runTest(self):
134
 
        self.assertRaises(InvalidMapPackage, self.m._read_heights, self.input)
135
 
 
136
 
 
137
 
class TestHeightReading_PackageToShort_ExceptRaises(_WLHeight_Setup):
138
 
    dim = (5, 7)
139
 
    input = '\x01\x00jdhf'
140
 
 
141
 
    def runTest(self):
142
 
        self.assertRaises(InvalidMapPackage, self.m._read_heights, self.input)
143
 
 
144
 
 
145
 
class TestHeightReading_PackageToLong(_WLHeight_Setup):
146
 
    dim = (2, 2)
147
 
    input = '\x01\x00jdhkkf'
148
 
 
149
 
    def runTest(self):
150
 
        self.assertRaises(InvalidMapPackage, self.m._read_heights, self.input)
151
 
# }}}
152
 
 
153
 
# {{{ Terrain package tests
154
 
 
155
 
 
156
 
class _WLTerrain_Base(unittest.TestCase):
157
 
 
158
 
    def setUp(self):
159
 
        self.m = WidelandsMap()
160
 
        self.m._dim = self.dim
161
 
        self.m._read_terrains(StringIO(self.input))
162
 
 
163
 
 
164
 
class _WLTerrain_Setup(unittest.TestCase):
165
 
 
166
 
    def setUp(self):
167
 
        self.m = WidelandsMap()
168
 
        self.m._dim = self.dim
169
 
        self.input = StringIO(self.input)
170
 
 
171
 
#################
172
 
# Working Tests #
173
 
#################
174
 
 
175
 
 
176
 
class TestTerrainReading_ValidInput_ExceptCorrectResult(_WLTerrain_Base):
177
 
    # {{{ Data
178
 
    dim = (1, 2)  # w6, h4
179
 
    input = ('\x01\x00' +  # Package version
180
 
             '\x02\x00' +  # Nr of terrain types
181
 
             '\x00\x00Baum\x00\x01\x00Haus\x00' +  # Terrains (id,Name\x00)
182
 
             '\x01\x00\x00\x01'  # Terrain data (ter_r,ter_d)*nr_of_fields
183
 
             )
184
 
    ter_r_names = array([['Haus', 'Baum']])
185
 
    ter_d_names = array([['Baum', 'Haus']])
186
 
    # }}}
187
 
 
188
 
    def test_R(self):
189
 
        r = [i.name == j for i, j in izip(
190
 
            self.m.ter_r.flat, self.ter_r_names.flat)]
191
 
        self.assertTrue(all(r))
192
 
 
193
 
    def test_D(self):
194
 
        d = [i.name == j for i, j in izip(
195
 
            self.m.ter_d.flat, self.ter_d_names.flat)]
196
 
        self.assertTrue(all(d))
197
 
 
198
 
##########
199
 
# Raises #
200
 
##########
201
 
 
202
 
 
203
 
class TestTerrainReading_WrongVersion_ExceptRaises(_WLTerrain_Setup):
204
 
    dim = (5, 7)
205
 
    input = '\x00\x02jdhf'
206
 
 
207
 
    def runTest(self):
208
 
        self.assertRaises(InvalidMapPackage, self.m._read_terrains, self.input)
209
 
 
210
 
 
211
 
class TestTerrainReading_PackageToShort_ExceptRaises(_WLTerrain_Setup):
212
 
    dim = (5, 7)
213
 
    input = '\x01\x00jdhf'
214
 
 
215
 
    def runTest(self):
216
 
        self.assertRaises(InvalidMapPackage, self.m._read_terrains, self.input)
217
 
 
218
 
 
219
 
class TestTerrainReading_PackageToLong(_WLTerrain_Setup):
220
 
    dim = (1, 2)  # w6, h4
221
 
    input = ('\x01\x00' +  # Package version
222
 
             '\x02\x00' +  # Nr of terrain types
223
 
             '\x00\x00Baum\x00\x01\x00Haus\x00' +  # Terrains (id,Name\x00)
224
 
             # Terrain data (ter_r,ter_d)*nr_of_fields
225
 
             '\x02\x03\x04\x00\x00\x01'
226
 
             )
227
 
    ter_r_names = array([['Haus', 'Baum']])
228
 
    ter_d_names = array([['Baum', 'Haus']])
229
 
 
230
 
    def runTest(self):
231
 
        self.assertRaises(InvalidMapPackage, self.m._read_terrains, self.input)
232
 
 
233
 
 
234
 
class TestTerrainReading_WrongTerrainId(_WLTerrain_Setup):
235
 
    dim = (1, 2)  # w6, h4
236
 
    input = ('\x01\x00' +  # Package version
237
 
             '\x02\x00' +  # Nr of terrain types
238
 
             '\x00\x00Baum\x00\x01\x00Haus\x00' +  # Terrains (id,Name\x00)
239
 
             '\x00\x00\x02\x00'  # Terrain data (ter_r,ter_d)*nr_of_fields
240
 
             )
241
 
 
242
 
    def runTest(self):
243
 
        self.assertRaises(InvalidMapPackage, self.m._read_terrains, self.input)
244
 
# }}}