source: TI02-CSML/trunk/services/3rdParty/GeoTypes-0.6.0/tests/CollectionClassTestBase.py @ 2194

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI02-CSML/trunk/services/3rdParty/GeoTypes-0.6.0/tests/CollectionClassTestBase.py@2194
Revision 2194, 2.8 KB checked in by lawrence, 13 years ago (diff)

Adding various specs and 3rd party code of interest for the CSML
services development.

Line 
1
2################################################################################
3# Copyright (c) QinetiQ Plc 2003
4#
5# Licensed under the LGPL. For full license details see the LICENSE file.
6################################################################################
7
8import unittest
9
10import os
11
12class CollectionClassTestBase(unittest.TestCase):   
13    """
14    Base class to contain unittests for the collection
15    semantics of all the OpenGIS classess that act as
16    python collectioning.
17    """
18
19    def getEnumClass(self):
20        """
21        This method should return a object of the type
22        that the container class is meant to hold.
23       
24        All sub classes should overide this.
25        """
26        raise NotImplementedError
27
28    def getCollectionClass(self):
29        """
30        This method returns an instance the class under test.
31        All sub classes should overide this.
32        """
33        raise NotImplementedError
34       
35   
36    def _testEqualities(self):
37       
38        geom1 = self.getCollectionClass()
39        geom2 = self.getEnumClass()
40       
41        geom1.append(geom2)
42
43        geom3 = self.getCollectionClass()
44        geom3.append(geom2)
45
46
47        assert geom1 == geom3
48       
49        geom3.append(self.getEnumClass())
50        assert geom1 != geom3
51
52        # Equality with a different type should be false.
53        assert geom1 != 0
54
55    def _testContainerMethods(self):   
56        geom = self.getCollectionClass()
57
58        # append
59        a = self.getEnumClass()
60        geom.append(a)
61        assert len(geom) == 1
62        assert geom.count(a) == 1
63        assert geom.index(a) == 0
64       
65
66        b = self.getEnumClass()
67        geom.append(b)
68        assert len(geom) == 2
69
70        # index
71        assert geom[0] == a
72        assert geom[1] == b
73
74        # extend
75        geom1 = self.getCollectionClass()
76        geom1.append(self.getEnumClass())
77        geom1.append(self.getEnumClass())
78        assert len(geom1) == 2
79
80        geom.extend(geom1)
81        assert len(geom) == 4
82
83        # insert
84        c= self.getEnumClass()
85        geom.insert(0,c)
86        assert geom[0] == c
87
88        # pop
89        l = len(geom)
90        d = self.getEnumClass()
91        geom.append(d)
92        assert len(geom) == l+1
93        assert geom.pop() == d
94        assert len(geom) == l
95
96        # __contains__
97        p = self.getEnumClass()
98        geom.append(p)
99        assert p in geom
100
101        # remove
102        geom.remove(p)
103        assert p not in geom, str(p)+" should not have been in "+str(geom)
104
105        # __setitem__, __getitem
106        p = self.getEnumClass()
107        geom[2] = p
108        assert geom[2] == p
109
110        # __delitem__
111        del geom[2]
112        assert geom[2] != p
113
114        # __iter__
115        cls = self.getEnumClass().__class__
116        for geo in geom:
117            assert geo.__class__ == cls
118       
Note: See TracBrowser for help on using the repository browser.