/[thuban]/branches/WIP-pyshapelib-bramz/test/test_session.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/test/test_session.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1039 by bh, Mon May 26 17:31:24 2003 UTC revision 1068 by bh, Tue May 27 15:02:37 2003 UTC
# Line 21  support.initthuban() Line 21  support.initthuban()
21    
22  from Thuban.Model.messages import CHANGED, MAPS_CHANGED, FILENAME_CHANGED, \  from Thuban.Model.messages import CHANGED, MAPS_CHANGED, FILENAME_CHANGED, \
23       MAP_PROJECTION_CHANGED, MAP_LAYERS_CHANGED, \       MAP_PROJECTION_CHANGED, MAP_LAYERS_CHANGED, \
24       LAYER_VISIBILITY_CHANGED, LAYER_CHANGED       LAYER_VISIBILITY_CHANGED, LAYER_CHANGED, TABLE_REMOVED
25  from Thuban.Model.session import Session  from Thuban.Model.session import Session
26  from Thuban.Model.map import Map  from Thuban.Model.map import Map
27  from Thuban.Model.layer import Layer  from Thuban.Model.layer import Layer
# Line 30  from Thuban.Model.color import Color Line 30  from Thuban.Model.color import Color
30  from Thuban.Model.table import MemoryTable, FIELDTYPE_STRING, \  from Thuban.Model.table import MemoryTable, FIELDTYPE_STRING, \
31                                 FIELDTYPE_INT, FIELDTYPE_DOUBLE                                 FIELDTYPE_INT, FIELDTYPE_DOUBLE
32  from Thuban.Model.data import DerivedShapeStore  from Thuban.Model.data import DerivedShapeStore
33    from Thuban.Model.transientdb import TransientJoinedTable
34    
35  class TestSessionSimple(unittest.TestCase):  class TestSessionSimple(unittest.TestCase):
36    
# Line 79  class TestSessionSimple(unittest.TestCas Line 79  class TestSessionSimple(unittest.TestCas
79          table = session.OpenTableFile(filename)          table = session.OpenTableFile(filename)
80          self.assertEquals(session.Tables(), [table])          self.assertEquals(session.Tables(), [table])
81    
     def test_remove_table(self):  
         """Test Session.RemoveTable()"""  
         session = self.session = Session("Test Session")  
         memtable = MemoryTable([("type", FIELDTYPE_STRING),  
                                 ("value", FIELDTYPE_DOUBLE),  
                                 ("code", FIELDTYPE_INT)],  
                                [("OTHER/UNKNOWN", -1.5, 11),  
                                 ("RUINS", 0.0, 1),  
                                 ("FARM", 3.141, 2),  
                                 ("BUILDING", 2.5, 3),  
                                 ("HUT", 1e6, 4),  
                                 ("LIGHTHOUSE", -0.01, 5)])  
         table = session.AddTable(memtable)  
         self.assertEquals(session.Tables(), [table])  
         session.RemoveTable(table)  
         self.assertEquals(session.Tables(), [])  
         self.assertRaises(ValueError, session.RemoveTable, table)  
   
82      def test_open_shapefile(self):      def test_open_shapefile(self):
83          """Test Session.OpenShapefile()"""          """Test Session.OpenShapefile()"""
84          session = self.session = Session("Test Session")          session = self.session = Session("Test Session")
# Line 127  class TestSessionSimple(unittest.TestCas Line 109  class TestSessionSimple(unittest.TestCas
109              store = derived = None              store = derived = None
110    
111    
112        def test_unreferenced_tables(self):
113            """Test Session.UnreferencedTables()"""
114            session = self.session = Session("Test Session")
115            filename = os.path.join("..", "Data", "iceland",
116                                    "roads-line.shp")
117            try:
118                store = session.OpenShapefile(filename)
119                filename = os.path.join("..", "Data", "iceland",
120                                        "roads-line.dbf")
121                table = session.OpenTableFile(filename)
122                self.assertEquals(session.Tables(), [table, store.Table()])
123                # The store's table is reference by the store, so the only
124                # unreferenced table is the roads-line table
125                self.assertEquals(session.UnreferencedTables(), [table])
126            finally:
127                store = table = None
128    
129    
130    class UnreferencedTablesTests(unittest.TestCase):
131    
132        """Test cases for the session.UnreferencedTables() method"""
133    
134        def setUp(self):
135            """Create a session with a few test tables"""
136            self.session = Session("Test Session")
137            memtable = MemoryTable([("type", FIELDTYPE_STRING),
138                                    ("value", FIELDTYPE_DOUBLE),
139                                    ("code", FIELDTYPE_INT)],
140                                   [("OTHER/UNKNOWN", -1.5, 11),
141                                    ("RUINS", 0.0, 1),
142                                    ("FARM", 3.141, 2),
143                                    ("BUILDING", 2.5, 3),
144                                    ("HUT", 1e6, 4),
145                                    ("LIGHTHOUSE", -0.01, 5)])
146            self.memtable = self.session.AddTable(memtable)
147            filename = os.path.join("..", "Data", "iceland",
148                                    "roads-line.dbf")
149            self.roads_line = self.session.OpenTableFile(filename)
150            filename = os.path.join("..", "Data", "iceland",
151                                    "cultural_landmark-point.dbf")
152            self.landmarks = self.session.OpenTableFile(filename)
153    
154        def tearDown(self):
155            """Clear the session and layers"""
156            self.session = self.memtable = self.roads_line = self.landmarks = None
157    
158        def test_unreferenced_tables(self):
159            """Test Session.UnreferencedTables()"""
160            self.assertEquals(self.session.UnreferencedTables(),
161                              [self.memtable, self.roads_line, self.landmarks])
162    
163        def test_unreferenced_tables_with_joins(self):
164            """Test Session.UnreferencedTables() with joins"""
165            joined = TransientJoinedTable(self.session.TransientDB(),
166                                          self.landmarks, "CLPTLABEL",
167                                          self.memtable, "type", outer_join = True)
168            try:
169                joined = self.session.AddTable(joined)
170                # After the join, landmarks and memtable are referenced by
171                # joined which in turn is referenced by nothing
172                self.assertEquals(self.session.UnreferencedTables(),
173                                  [self.roads_line, joined])
174                # Creating a DerivedShapeStore that references the joined table
175                # will remove it from the list of unreferenced tables,
176                store = self.session.OpenShapefile(os.path.join("..", "Data",
177                                                                "iceland",
178                                                                "political.dbf"))
179                derived = DerivedShapeStore(store, joined)
180                self.session.AddShapeStore(derived)
181                self.assertEquals(self.session.UnreferencedTables(),
182                                  [self.roads_line])
183            finally:
184                joined = derived = store = None
185    
186  class TestSessionBase(unittest.TestCase, support.SubscriberMixin):  class TestSessionBase(unittest.TestCase, support.SubscriberMixin):
187    
188      """Base class for Session test cases that test the messages"""      """Base class for Session test cases that test the messages"""
# Line 141  class TestSessionBase(unittest.TestCase, Line 197  class TestSessionBase(unittest.TestCase,
197    
198          # Create a Session and subscribe to all interesting channels.          # Create a Session and subscribe to all interesting channels.
199          self.session = Session("Test Session")          self.session = Session("Test Session")
200          for channel in (CHANGED,          for channel in (CHANGED,
201                          MAPS_CHANGED,                            MAPS_CHANGED,
202                          FILENAME_CHANGED,                          FILENAME_CHANGED,
203                          MAP_PROJECTION_CHANGED,                          MAP_PROJECTION_CHANGED,
204                          MAP_LAYERS_CHANGED,                          MAP_LAYERS_CHANGED,
205                          LAYER_VISIBILITY_CHANGED,                          LAYER_VISIBILITY_CHANGED,
206                          LAYER_CHANGED):                          LAYER_CHANGED,
207                            TABLE_REMOVED):
208              self.session.Subscribe(channel,              self.session.Subscribe(channel,
209                                     self.subscribe_with_params, channel)                                     self.subscribe_with_params, channel)
210    
# Line 180  class TestSessionMessages(TestSessionBas Line 237  class TestSessionMessages(TestSessionBas
237          self.check_messages([(FILENAME_CHANGED,),          self.check_messages([(FILENAME_CHANGED,),
238                               (self.session, CHANGED)])                               (self.session, CHANGED)])
239    
240        def test_remove_table(self):
241            """Test Session.RemoveTable()"""
242            memtable = MemoryTable([("type", FIELDTYPE_STRING),
243                                    ("value", FIELDTYPE_DOUBLE),
244                                    ("code", FIELDTYPE_INT)],
245                                   [("OTHER/UNKNOWN", -1.5, 11),
246                                    ("RUINS", 0.0, 1),
247                                    ("FARM", 3.141, 2),
248                                    ("BUILDING", 2.5, 3),
249                                    ("HUT", 1e6, 4),
250                                    ("LIGHTHOUSE", -0.01, 5)])
251            table = self.session.AddTable(memtable)
252            self.assertEquals(self.session.Tables(), [table])
253            self.clear_messages()
254            self.session.RemoveTable(table)
255            self.check_messages([(table, TABLE_REMOVED),
256                                 (self.session, CHANGED)])
257            self.assertEquals(self.session.Tables(), [])
258            self.assertRaises(ValueError, self.session.RemoveTable, table)
259    
260    
261  class TestSessionWithContent(TestSessionBase):  class TestSessionWithContent(TestSessionBase):
262    

Legend:
Removed from v.1039  
changed lines
  Added in v.1068

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26