~widelands-dev/widelands-website/django_staticfiles

« back to all changes in this revision

Viewing changes to widelandslib/test/test_map.py

  • Committer: Timo Paulssen
  • Date: 2010-11-01 01:06:11 UTC
  • mto: This revision was merged to the branch mainline in revision 227.
  • Revision ID: timonator@perpetuum-immobile.de-20101101010611-ve6y7773nlofd9dh
moved over widelandslib from lp:~tmk/widelands/help-gen-ng with some fixes,
changed update_help to use widelandslib.

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
# }}}