~widelands-dev/widelands-website/trunk

« back to all changes in this revision

Viewing changes to widelandslib/test/test_map.py

  • Committer: Holger Rapp
  • Date: 2009-03-15 20:19:52 UTC
  • mto: This revision was merged to the branch mainline in revision 64.
  • Revision ID: sirver@kallisto.local-20090315201952-eaug9ff2ec8qx1au
Fixed a bug with broken notification support

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
 
class _WLSetup( unittest.TestCase ):
19
 
    def setUp(self):
20
 
        self.m = WidelandsMap()
21
 
 
22
 
 
23
 
# {{{ Elemental package 
24
 
class _WLElemental_Base( unittest.TestCase ):
25
 
    def setUp(self):
26
 
        self.m = WidelandsMap()
27
 
        self.m._read_elemental( StringIO(self.input) )
28
 
#################
29
 
# Working Tests #
30
 
#################
31
 
class TestElementalReading_ValidInput_ExceptCorrectResult( _WLElemental_Base ):
32
 
    # {{{ Data
33
 
    input = """[global]
34
 
packet_version=1
35
 
map_w=160
36
 
map_h=132
37
 
nr_players=4
38
 
world=greenland
39
 
name=_Elven Forests
40
 
author=Winterwind
41
 
descr=_"The breath-taking beauty of these ..."
42
 
"""
43
 
    # }}}
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" )
52
 
    def testName(self):
53
 
        self.assertEqual( self.m.name, "Elven Forests")
54
 
    def testAuthor(self):
55
 
        self.assertEqual( self.m.author, "Winterwind" )
56
 
    def testDescr(self):
57
 
        self.assertEqual( self.m.descr, "The breath-taking beauty of these ..." )
58
 
 
59
 
##########
60
 
# Raises #
61
 
##########
62
 
class TestElementalReading_TestMissingSection_ExceptRaises(_WLSetup ):
63
 
    # {{{ Data
64
 
    input="""[globalnoglbale]
65
 
blah = 1
66
 
"""
67
 
    # }}}
68
 
    def runTest(self):
69
 
        self.assertRaises( InvalidMapPackage, self.m._read_elemental,
70
 
                          StringIO(self.input) )
71
 
# }}}
72
 
 
73
 
# {{{ Height package tests
74
 
class _WLHeight_Base( unittest.TestCase ):
75
 
    def setUp(self):
76
 
        self.m = WidelandsMap()
77
 
        self.m._dim = self.dim
78
 
        self.m._read_heights( StringIO(self.input) )
79
 
class _WLHeight_Setup( unittest.TestCase ):
80
 
    def setUp(self):
81
 
        self.m = WidelandsMap()
82
 
        self.m._dim = self.dim
83
 
        self.input = StringIO(self.input)
84
 
 
85
 
#################
86
 
# Working Tests #
87
 
#################
88
 
class TestHeightReading_ValidInput_ExceptCorrectResult( _WLHeight_Base ):
89
 
    # {{{ Data
90
 
    dim = (4,6) # w6, h4
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]])
96
 
    # }}}
97
 
    def runTest(self):
98
 
        self.assertTrue( all(self.wanted == self.m.heights ) )
99
 
 
100
 
##########
101
 
# Raises #
102
 
##########
103
 
class TestHeightReading_WrongVersion_ExceptRaises(_WLHeight_Setup ):
104
 
    dim = (5,7)
105
 
    input = "\x00\x02jdhf"
106
 
    def runTest(self):
107
 
        self.assertRaises( InvalidMapPackage, self.m._read_heights, self.input )
108
 
class TestHeightReading_PackageToShort_ExceptRaises(_WLHeight_Setup ):
109
 
    dim = (5,7)
110
 
    input = "\x01\x00jdhf"
111
 
    def runTest(self):
112
 
        self.assertRaises( InvalidMapPackage, self.m._read_heights, self.input )
113
 
class TestHeightReading_PackageToLong(_WLHeight_Setup ):
114
 
    dim = (2,2)
115
 
    input = "\x01\x00jdhkkf"
116
 
    def runTest(self):
117
 
        self.assertRaises( InvalidMapPackage, self.m._read_heights, self.input )
118
 
# }}}
119
 
 
120
 
# {{{ Terrain package tests
121
 
class _WLTerrain_Base( unittest.TestCase ):
122
 
    def setUp(self):
123
 
        self.m = WidelandsMap()
124
 
        self.m._dim = self.dim
125
 
        self.m._read_terrains( StringIO(self.input) )
126
 
class _WLTerrain_Setup( unittest.TestCase ):
127
 
    def setUp(self):
128
 
        self.m = WidelandsMap()
129
 
        self.m._dim = self.dim
130
 
        self.input = StringIO(self.input)
131
 
 
132
 
#################
133
 
# Working Tests #
134
 
#################
135
 
class TestTerrainReading_ValidInput_ExceptCorrectResult( _WLTerrain_Base ):
136
 
    # {{{ Data
137
 
    dim = (1,2) # w6, h4
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
142
 
    )
143
 
    ter_r_names = array([[ "Haus", "Baum" ]] )
144
 
    ter_d_names = array([[ "Baum", "Haus" ]] )
145
 
    # }}}
146
 
    def test_R(self):
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))
149
 
    def test_D(self):
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))
152
 
 
153
 
##########
154
 
# Raises #
155
 
##########
156
 
class TestTerrainReading_WrongVersion_ExceptRaises(_WLTerrain_Setup ):
157
 
    dim = (5,7)
158
 
    input = "\x00\x02jdhf"
159
 
    def runTest(self):
160
 
        self.assertRaises( InvalidMapPackage, self.m._read_terrains, self.input )
161
 
class TestTerrainReading_PackageToShort_ExceptRaises(_WLTerrain_Setup ):
162
 
    dim = (5,7)
163
 
    input = "\x01\x00jdhf"
164
 
    def runTest(self):
165
 
        self.assertRaises( InvalidMapPackage, self.m._read_terrains, self.input )
166
 
class TestTerrainReading_PackageToLong(_WLTerrain_Setup ):
167
 
    dim = (1,2) # w6, h4
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
172
 
    )
173
 
    ter_r_names = array([[ "Haus", "Baum" ]] )
174
 
    ter_d_names = array([[ "Baum", "Haus" ]] )
175
 
    def runTest(self):
176
 
        self.assertRaises( InvalidMapPackage, self.m._read_terrains, self.input )
177
 
class TestTerrainReading_WrongTerrainId(_WLTerrain_Setup ):
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
 
            "\x00\x00\x02\x00" # Terrain data (ter_r,ter_d)*nr_of_fields
183
 
    )
184
 
    def runTest(self):
185
 
        self.assertRaises( InvalidMapPackage, self.m._read_terrains, self.input )
186
 
# }}}