1
#!/usr/bin/env python -tt
11
from cStringIO import StringIO
12
from itertools import *
16
# General base class for tests that raise
18
class _WLSetup( unittest.TestCase ):
20
self.m = WidelandsMap()
23
# {{{ Elemental package
24
class _WLElemental_Base( unittest.TestCase ):
26
self.m = WidelandsMap()
27
self.m._read_elemental( StringIO(self.input) )
31
class TestElementalReading_ValidInput_ExceptCorrectResult( _WLElemental_Base ):
41
descr=_"The breath-taking beauty of these ..."
44
def testDimensions( self ):
45
self.assertEqual( self.m.w, 160 )
46
self.assertEqual( self.m.h, 132 )
47
self.assertEqual( self.m.dim, (132,160) )
48
def testNrPlayers( self ):
49
self.assertEqual( self.m.nr_players, 4 )
50
def testWorldName( self ):
51
self.assertEqual( self.m.world_name, "greenland" )
53
self.assertEqual( self.m.name, "Elven Forests")
55
self.assertEqual( self.m.author, "Winterwind" )
57
self.assertEqual( self.m.descr, "The breath-taking beauty of these ..." )
62
class TestElementalReading_TestMissingSection_ExceptRaises(_WLSetup ):
64
input="""[globalnoglbale]
69
self.assertRaises( InvalidMapPackage, self.m._read_elemental,
70
StringIO(self.input) )
73
# {{{ Height package tests
74
class _WLHeight_Base( unittest.TestCase ):
76
self.m = WidelandsMap()
77
self.m._dim = self.dim
78
self.m._read_heights( StringIO(self.input) )
79
class _WLHeight_Setup( unittest.TestCase ):
81
self.m = WidelandsMap()
82
self.m._dim = self.dim
83
self.input = StringIO(self.input)
88
class TestHeightReading_ValidInput_ExceptCorrectResult( _WLHeight_Base ):
91
input = "\x01\x00)!\x08*\x0b1\x18-0\x1d\x03\x08.\x1e\x01\x19\x1f\x1d\x17\x17\x1c\x07#5"
92
wanted = array([[41, 33, 8, 42, 11, 49],
93
[24, 45, 48, 29, 3, 8],
94
[46, 30, 1, 25, 31, 29],
95
[23, 23, 28, 7, 35, 53]])
98
self.assertTrue( all(self.wanted == self.m.heights ) )
103
class TestHeightReading_WrongVersion_ExceptRaises(_WLHeight_Setup ):
105
input = "\x00\x02jdhf"
107
self.assertRaises( InvalidMapPackage, self.m._read_heights, self.input )
108
class TestHeightReading_PackageToShort_ExceptRaises(_WLHeight_Setup ):
110
input = "\x01\x00jdhf"
112
self.assertRaises( InvalidMapPackage, self.m._read_heights, self.input )
113
class TestHeightReading_PackageToLong(_WLHeight_Setup ):
115
input = "\x01\x00jdhkkf"
117
self.assertRaises( InvalidMapPackage, self.m._read_heights, self.input )
120
# {{{ Terrain package tests
121
class _WLTerrain_Base( unittest.TestCase ):
123
self.m = WidelandsMap()
124
self.m._dim = self.dim
125
self.m._read_terrains( StringIO(self.input) )
126
class _WLTerrain_Setup( unittest.TestCase ):
128
self.m = WidelandsMap()
129
self.m._dim = self.dim
130
self.input = StringIO(self.input)
135
class TestTerrainReading_ValidInput_ExceptCorrectResult( _WLTerrain_Base ):
138
input = ("\x01\x00" + # Package version
139
"\x02\x00" + # Nr of terrain types
140
"\x00\x00Baum\x00\x01\x00Haus\x00" + # Terrains (id,Name\x00)
141
"\x01\x00\x00\x01" # Terrain data (ter_r,ter_d)*nr_of_fields
143
ter_r_names = array([[ "Haus", "Baum" ]] )
144
ter_d_names = array([[ "Baum", "Haus" ]] )
147
r = [ i.name == j for i,j in izip(self.m.ter_r.flat,self.ter_r_names.flat) ]
148
self.assertTrue( all(r))
150
d = [ i.name == j for i,j in izip(self.m.ter_d.flat,self.ter_d_names.flat) ]
151
self.assertTrue( all(d))
156
class TestTerrainReading_WrongVersion_ExceptRaises(_WLTerrain_Setup ):
158
input = "\x00\x02jdhf"
160
self.assertRaises( InvalidMapPackage, self.m._read_terrains, self.input )
161
class TestTerrainReading_PackageToShort_ExceptRaises(_WLTerrain_Setup ):
163
input = "\x01\x00jdhf"
165
self.assertRaises( InvalidMapPackage, self.m._read_terrains, self.input )
166
class TestTerrainReading_PackageToLong(_WLTerrain_Setup ):
168
input = ("\x01\x00" + # Package version
169
"\x02\x00" + # Nr of terrain types
170
"\x00\x00Baum\x00\x01\x00Haus\x00" + # Terrains (id,Name\x00)
171
"\x02\x03\x04\x00\x00\x01" # Terrain data (ter_r,ter_d)*nr_of_fields
173
ter_r_names = array([[ "Haus", "Baum" ]] )
174
ter_d_names = array([[ "Baum", "Haus" ]] )
176
self.assertRaises( InvalidMapPackage, self.m._read_terrains, self.input )
177
class TestTerrainReading_WrongTerrainId(_WLTerrain_Setup ):
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
"\x00\x00\x02\x00" # Terrain data (ter_r,ter_d)*nr_of_fields
185
self.assertRaises( InvalidMapPackage, self.m._read_terrains, self.input )