|
@@ -25,83 +25,91 @@ from Database import sqlutils
|
25
|
25
|
from Database import sqlsetup
|
26
|
26
|
import sqlalchemy as sqla
|
27
|
27
|
|
|
28
|
+from EditorialModel.model import Model
|
|
29
|
+from EditorialModel.backend.json_backend import EmBackendJson
|
28
|
30
|
|
29
|
31
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Lodel.settings")
|
30
|
32
|
|
31
|
33
|
TEST_COMPONENT_DBNAME = 'test_em_component_db.sqlite'
|
32
|
34
|
|
33
|
|
-#=#############=#
|
|
35
|
+EM_TEST = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'me.json')
|
|
36
|
+EM_TEST_OBJECT = None
|
|
37
|
+
|
|
38
|
+#=#############=#
|
34
|
39
|
# TESTS SETUP #
|
35
|
40
|
#=#############=#
|
36
|
41
|
|
37
|
42
|
def setUpModule():
|
38
|
43
|
""" This function is run once for this module.
|
39
|
|
-
|
|
44
|
+
|
40
|
45
|
The goal are to overwrtie Db configs, and prepare objects for test_case initialisation
|
41
|
46
|
"""
|
42
|
|
- cleanDb(TEST_COMPONENT_DBNAME)
|
|
47
|
+ global EM_TEST_OBJECT
|
|
48
|
+ EM_TEST_OBJECT = Model(EmBackendJson(EM_TEST))
|
|
49
|
+
|
|
50
|
+ # cleanDb(TEST_COMPONENT_DBNAME)
|
43
|
51
|
|
44
|
|
- setDbConf(TEST_COMPONENT_DBNAME)
|
|
52
|
+ # setDbConf(TEST_COMPONENT_DBNAME)
|
45
|
53
|
#Disable logging but CRITICAL
|
46
|
54
|
logging.basicConfig(level=logging.CRITICAL)
|
47
|
55
|
|
48
|
56
|
#testDB setup
|
49
|
|
- tables = sqlsetup.get_schema()
|
50
|
|
- ttest = { 'name':'ttest',
|
51
|
|
- 'columns': [
|
52
|
|
- {"name":"uid", "type":"INTEGER", "extra":{"foreignkey":"uids.uid", "nullable":False, "primarykey":True}},
|
53
|
|
- {"name":"name", "type":"VARCHAR(50)", "extra":{"nullable":False, "unique":True}},
|
54
|
|
- {"name":"string", "type":"TEXT"},
|
55
|
|
- {"name":"help", "type":"TEXT"},
|
56
|
|
- {"name":"rank", "type":"INTEGER"},
|
57
|
|
- {"name":"rank_fam", "type":"VARCHAR(1)"},
|
58
|
|
- {"name":"date_update", "type":"DATETIME"},
|
59
|
|
- {"name":"date_create", "type":"DATETIME"}
|
60
|
|
- ]
|
61
|
|
- }
|
62
|
|
- tables.append(ttest)
|
63
|
|
-
|
64
|
|
- globals()['tables'] = tables
|
|
57
|
+ # tables = sqlsetup.get_schema()
|
|
58
|
+ # ttest = { 'name':'ttest',
|
|
59
|
+ # 'columns': [
|
|
60
|
+ # {"name":"uid", "type":"INTEGER", "extra":{"foreignkey":"uids.uid", "nullable":False, "primarykey":True}},
|
|
61
|
+ # {"name":"name", "type":"VARCHAR(50)", "extra":{"nullable":False, "unique":True}},
|
|
62
|
+ # {"name":"string", "type":"TEXT"},
|
|
63
|
+ # {"name":"help", "type":"TEXT"},
|
|
64
|
+ # {"name":"rank", "type":"INTEGER"},
|
|
65
|
+ # {"name":"rank_fam", "type":"VARCHAR(1)"},
|
|
66
|
+ # {"name":"date_update", "type":"DATETIME"},
|
|
67
|
+ # {"name":"date_create", "type":"DATETIME"}
|
|
68
|
+ # ]
|
|
69
|
+ # }
|
|
70
|
+ # tables.append(ttest)
|
|
71
|
+ #
|
|
72
|
+ # globals()['tables'] = tables
|
65
|
73
|
|
66
|
74
|
#Creating db structure
|
67
|
75
|
|
68
|
|
- initTestDb(TEST_COMPONENT_DBNAME)
|
69
|
|
- setDbConf(TEST_COMPONENT_DBNAME)
|
|
76
|
+ # initTestDb(TEST_COMPONENT_DBNAME)
|
|
77
|
+ # setDbConf(TEST_COMPONENT_DBNAME)
|
70
|
78
|
|
71
|
|
- sqlsetup.init_db('default', False, tables)
|
|
79
|
+ # sqlsetup.init_db('default', False, tables)
|
72
|
80
|
|
73
|
|
- dbe = sqlutils.get_engine('default')
|
|
81
|
+ # dbe = sqlutils.get_engine('default')
|
74
|
82
|
|
75
|
83
|
# Insertion of testings datas
|
76
|
|
- conn = dbe.connect()
|
77
|
|
- test_table = sqla.Table(EmTestComp.table, sqlutils.meta(dbe))
|
78
|
|
- uids_table = sqla.Table('uids', sqlutils.meta(dbe))
|
|
84
|
+ # conn = dbe.connect()
|
|
85
|
+ # test_table = sqla.Table(EmTestComp.table, sqlutils.meta(dbe))
|
|
86
|
+ # uids_table = sqla.Table('uids', sqlutils.meta(dbe))
|
79
|
87
|
|
80
|
88
|
#Creating uid for the EmTestComp
|
81
|
|
- for v in ComponentTestCase.test_values:
|
82
|
|
- uid = v['uid']
|
83
|
|
- req = uids_table.insert(values={'uid':uid, 'table': EmTestComp.table })
|
84
|
|
- conn.execute(req)
|
|
89
|
+ # for v in ComponentTestCase.test_values:
|
|
90
|
+ # uid = v['uid']
|
|
91
|
+ # req = uids_table.insert(values={'uid':uid, 'table': EmTestComp.table })
|
|
92
|
+ # conn.execute(req)
|
85
|
93
|
|
86
|
94
|
# WARNING !!! Rank has to be ordened and incremented by one for the modify_rank tests
|
87
|
95
|
|
88
|
|
- for i in range(len(ComponentTestCase.test_values)):
|
89
|
|
- ComponentTestCase.test_values[i]['date_create'] = datetime.datetime.utcnow()
|
90
|
|
- ComponentTestCase.test_values[i]['date_update'] = datetime.datetime.utcnow()
|
91
|
|
- ComponentTestCase.test_values[i]['rank_fam'] = '1'
|
92
|
|
-
|
93
|
|
-
|
94
|
|
- req = test_table.insert(values=ComponentTestCase.test_values)
|
95
|
|
- conn.execute(req)
|
96
|
|
- conn.close()
|
97
|
|
-
|
98
|
|
- saveDbState(TEST_COMPONENT_DBNAME)
|
99
|
|
-
|
100
|
|
- logging.getLogger().setLevel(logging.CRITICAL)
|
|
96
|
+ # for i in range(len(ComponentTestCase.test_values)):
|
|
97
|
+ # ComponentTestCase.test_values[i]['date_create'] = datetime.datetime.utcnow()
|
|
98
|
+ # ComponentTestCase.test_values[i]['date_update'] = datetime.datetime.utcnow()
|
|
99
|
+ # ComponentTestCase.test_values[i]['rank_fam'] = '1'
|
|
100
|
+ #
|
|
101
|
+ #
|
|
102
|
+ # req = test_table.insert(values=ComponentTestCase.test_values)
|
|
103
|
+ # conn.execute(req)
|
|
104
|
+ # conn.close()
|
|
105
|
+ #
|
|
106
|
+ # saveDbState(TEST_COMPONENT_DBNAME)
|
|
107
|
+
|
|
108
|
+ # logging.getLogger().setLevel(logging.CRITICAL)
|
101
|
109
|
pass
|
102
|
110
|
|
103
|
111
|
def tearDownModule():
|
104
|
|
- cleanDb(TEST_COMPONENT_DBNAME)
|
|
112
|
+ # cleanDb(TEST_COMPONENT_DBNAME)
|
105
|
113
|
"""
|
106
|
114
|
try:
|
107
|
115
|
os.unlink(TEST_COMPONENT_DBNAME)
|
|
@@ -110,38 +118,46 @@ def tearDownModule():
|
110
|
118
|
os.unlink(TEST_COMPONENT_DBNAME+'_bck')
|
111
|
119
|
except:pass
|
112
|
120
|
"""
|
|
121
|
+ pass
|
|
122
|
+
|
113
|
123
|
|
114
|
124
|
#A dummy EmComponent child class use to make tests
|
115
|
|
-class EmTestComp(EmComponent):
|
116
|
|
- table = 'ttest'
|
117
|
|
- ranked_in = 'rank_fam'
|
118
|
|
- _fields = [('rank_fam', ftypes.EmField_char)]
|
|
125
|
+#class EmTestComp(EmComponent):
|
|
126
|
+# table = 'ttest'
|
|
127
|
+# ranked_in = 'rank_fam'
|
|
128
|
+# _fields = [('rank_fam', ftypes.EmField_char)]
|
119
|
129
|
|
120
|
130
|
# The parent class of all other test cases for component
|
121
|
131
|
# It defines a SetUp function and some utility functions for EmComponent tests
|
122
|
132
|
class ComponentTestCase(TestCase):
|
123
|
133
|
|
124
|
|
- test_values = [
|
125
|
|
- { 'uid': 1, 'name': 'test', 'string': '{"fr":"testcomp"}', 'help': '{"en":"help test", "fr":"test help"}', 'rank': 0},
|
126
|
|
- { 'uid': 2, 'name': 'test-em_comp', 'string': '{"fr":"Super test comp"}', 'help': '{}', 'rank': 1},
|
127
|
|
- { 'uid': 3, 'name': 'test2', 'string': '{}', 'help': '{}', 'rank': 2},
|
128
|
|
- { 'uid': 42, 'name': 'foo', 'string': '{"foo":"bar"}', 'help': '{"foo":"foobar"}', 'rank': 3},
|
129
|
|
- { 'uid': 84, 'name': '123', 'string': '{"num":"456"}', 'help': '{"num":"4242"}', 'rank': 4},
|
130
|
|
- { 'uid': 1025, 'name': 'name', 'string': '{}', 'help': '{}', 'rank': 5},
|
131
|
|
- ]
|
132
|
|
-
|
133
|
|
- @property
|
134
|
|
- def tables(self):
|
135
|
|
- return globals()['tables']
|
136
|
|
-
|
|
134
|
+ test_values = []
|
|
135
|
+
|
|
136
|
+ # test_values = [
|
|
137
|
+ # {'uid': 1, 'name': 'test', 'string': '{"fr":"testcomp"}', 'help': '{"en":"help test", "fr":"test help"}', 'rank': 0},
|
|
138
|
+ # {'uid': 2, 'name': 'test-em_comp', 'string': '{"fr":"Super test comp"}', 'help': '{}', 'rank': 1},
|
|
139
|
+ # {'uid': 3, 'name': 'test2', 'string': '{}', 'help': '{}', 'rank': 2},
|
|
140
|
+ # {'uid': 42, 'name': 'foo', 'string': '{"foo":"bar"}', 'help': '{"foo":"foobar"}', 'rank': 3},
|
|
141
|
+ # {'uid': 84, 'name': '123', 'string': '{"num":"456"}', 'help': '{"num":"4242"}', 'rank': 4},
|
|
142
|
+ # {'uid': 1025, 'name': 'name', 'string': '{}', 'help': '{}', 'rank': 5},
|
|
143
|
+ # ]
|
|
144
|
+
|
|
145
|
+ # @property
|
|
146
|
+ # def tables(self):
|
|
147
|
+ # return globals()['tables']
|
|
148
|
+
|
137
|
149
|
def setUp(self):
|
138
|
|
- self.dber = sqlutils.get_engine('default')
|
139
|
|
- self.test_values = self.__class__.test_values
|
|
150
|
+ self.test_values.append(EM_TEST_OBJECT.create_component(EmClass.__name__,{'name': 'testclass1', 'classtype': 'entity'}))
|
|
151
|
+ self.test_values.append(EM_TEST_OBJECT.create_component(EmClass.__name__,{'name': 'testclass2', 'classtype': 'entry'}))
|
|
152
|
+ self.test_values.append(EM_TEST_OBJECT.create_component(EmClass.__name__,{'name': 'testclass3', 'classtype': 'person'}))
|
|
153
|
+
|
|
154
|
+ # self.dber = sqlutils.get_engine('default')
|
|
155
|
+ # self.test_values = self.__class__.test_values
|
140
|
156
|
#Db RAZ
|
141
|
157
|
#shutil.copyfile(TEST_COMPONENT_DBNAME+'_bck', globals()['component_test_dbfilename'])
|
142
|
|
- restoreDbState(TEST_COMPONENT_DBNAME)
|
143
|
|
- pass
|
144
|
|
-
|
|
158
|
+ # restoreDbState(TEST_COMPONENT_DBNAME)
|
|
159
|
+
|
|
160
|
+ '''
|
145
|
161
|
def check_equals(self, excepted_val, test_comp, check_date=True, msg=''):
|
146
|
162
|
""" This function check that a EmTestComp has excepted_val for values """
|
147
|
163
|
val = excepted_val
|
|
@@ -160,6 +176,7 @@ class ComponentTestCase(TestCase):
|
160
|
176
|
prop = vname
|
161
|
177
|
self.assertEqual(getattr(test_comp, prop), val[vname], msg+"Inconsistency for "+prop+" property")
|
162
|
178
|
pass
|
|
179
|
+ '''
|
163
|
180
|
|
164
|
181
|
def assertEqualDatetime(self, d1,d2, msg=""):
|
165
|
182
|
""" Compare a date from the database with a datetime (that have microsecs, in db we dont have microsecs) """
|
|
@@ -177,14 +194,15 @@ class ComponentTestCase(TestCase):
|
177
|
194
|
self.assertEqual(set(name for name in ms1t), set(name for name in ms2t), msg+" The two MlString hasn't the same lang list")
|
178
|
195
|
for n in ms1t:
|
179
|
196
|
self.assertEqual(ms1t[n], ms2t[n])
|
180
|
|
-
|
|
197
|
+ '''
|
181
|
198
|
def run(self, result=None):
|
182
|
199
|
super(ComponentTestCase, self).run(result)
|
183
|
|
-
|
|
200
|
+ '''
|
184
|
201
|
#=#############=#
|
185
|
202
|
# TESTS BEGIN #
|
186
|
203
|
#=#############=#
|
187
|
|
-
|
|
204
|
+
|
|
205
|
+
|
188
|
206
|
#===========================#
|
189
|
207
|
# EmComponent.__init__ #
|
190
|
208
|
#===========================#
|
|
@@ -193,73 +211,67 @@ class TestInit(ComponentTestCase):
|
193
|
211
|
def test_component_abstract_init(self):
|
194
|
212
|
""" Test not valid call (from EmComponent) of __init__ """
|
195
|
213
|
with self.assertRaises(NotImplementedError):
|
196
|
|
- test_comp = EmComponent(2)
|
|
214
|
+ test_comp = EmComponent(EmComponent, 2, 'testcomp')
|
197
|
215
|
with self.assertRaises(NotImplementedError):
|
198
|
|
- test_comp = EmComponent('name')
|
199
|
|
- pass
|
200
|
|
-
|
|
216
|
+ test_comp = EmComponent(EmComponent, 2, 'name')
|
201
|
217
|
|
202
|
218
|
def test_component_init_not_exist(self):
|
203
|
219
|
""" Test __init__ with non existing objects """
|
204
|
|
- with self.assertRaises(EmComponentNotExistError):
|
205
|
|
- test_comp = EmTestComp('not_exist')
|
|
220
|
+ self.assertFalse(EM_TEST_OBJECT.component(4096))
|
|
221
|
+
|
|
222
|
+ # with self.assertRaises(EmComponentNotExistError):
|
|
223
|
+ # test_comp = EM_TEST_OBJECT.component(4096)
|
206
|
224
|
|
207
|
225
|
# TODO this assertion depends of the EmComponent behavior when instanciate with an ID
|
208
|
226
|
#with self.assertRaises(EmComponentNotExistError):
|
209
|
227
|
# test_comp = EmTestComp(4096)
|
210
|
228
|
|
211
|
|
- pass
|
212
|
|
-
|
213
|
229
|
def test_component_init_uid(self):
|
214
|
230
|
""" Test __init__ with numerical ID """
|
215
|
|
- for val in self.test_values:
|
216
|
|
- test_comp = EmTestComp(val['uid'])
|
217
|
|
- self.assertIsInstance(test_comp, EmTestComp)
|
218
|
|
- self.assertEqual(test_comp.uid, val['uid'])
|
219
|
|
- pass
|
220
|
231
|
|
221
|
|
- def test_component_init_name(self):
|
222
|
|
- """ Test __init__ with names """
|
223
|
232
|
for val in self.test_values:
|
224
|
|
- test_comp = EmTestComp(val['name'])
|
225
|
|
- self.check_equals(val, test_comp)
|
226
|
|
- pass
|
|
233
|
+ test_comp = EM_TEST_OBJECT.component(val.uid)
|
|
234
|
+ self.assertIsInstance(test_comp, EmClass)
|
|
235
|
+ self.assertEqual(test_comp.uid, val.uid)
|
227
|
236
|
|
228
|
237
|
def test_component_init_badargs(self):
|
229
|
238
|
for badarg in [ print, json, [], [1,2,3,4,5,6], {'hello': 'world'} ]:
|
230
|
|
- with self.assertRaises(TypeError):
|
231
|
|
- EmTestComp(badarg)
|
232
|
|
- pass
|
|
239
|
+ if isinstance(badarg, list) or isinstance(badarg, dict):
|
|
240
|
+ with self.assertRaises(TypeError):
|
|
241
|
+ EM_TEST_OBJECT.component(badarg)
|
|
242
|
+ else:
|
|
243
|
+ self.assertFalse(EM_TEST_OBJECT.component(badarg))
|
233
|
244
|
|
|
245
|
+'''
|
234
|
246
|
#=======================#
|
235
|
247
|
# EmComponent.new_uid #
|
236
|
248
|
#=======================#
|
237
|
249
|
class TestUid(ComponentTestCase):
|
238
|
250
|
|
239
|
|
-
|
|
251
|
+
|
240
|
252
|
def test_newuid(self):
|
241
|
253
|
""" Test valid calls for new_uid method """
|
242
|
254
|
for _ in range(10):
|
243
|
255
|
nuid = EmTestComp.new_uid(self.dber)
|
244
|
|
-
|
|
256
|
+
|
245
|
257
|
conn = self.dber.connect()
|
246
|
258
|
tuid = sqla.Table('uids', sqlutils.meta(self.dber))
|
247
|
259
|
req = sqla.select([tuid]).where(tuid.c.uid == nuid)
|
248
|
260
|
rep = conn.execute(req)
|
249
|
261
|
res = rep.fetchall()
|
250
|
|
-
|
|
262
|
+
|
251
|
263
|
self.assertEqual(len(res), 1, "Error when selecting : mutliple rows returned for 1 UID")
|
252
|
264
|
res = res[0]
|
253
|
265
|
self.assertEqual(res.uid, nuid, "Selected UID didn't match created uid")
|
254
|
266
|
self.assertEqual(res.table, EmTestComp.table, "Table not match with class table : expected '"+res.table+"' but got '"+EmTestComp.table+"'")
|
255
|
267
|
pass
|
256
|
|
-
|
|
268
|
+
|
257
|
269
|
def test_newuid_abstract(self):
|
258
|
270
|
""" Test not valit call for new_uid method """
|
259
|
271
|
with self.assertRaises(NotImplementedError):
|
260
|
272
|
EmComponent.new_uid(self.dber)
|
261
|
273
|
pass
|
262
|
|
-
|
|
274
|
+
|
263
|
275
|
#=======================#
|
264
|
276
|
# EmComponent.save #
|
265
|
277
|
#=======================#
|
|
@@ -269,7 +281,7 @@ class TestSave(ComponentTestCase):
|
269
|
281
|
def _savecheck(self, test_comp, newval):
|
270
|
282
|
""" Utility function for test_component_save_namechange """
|
271
|
283
|
test_comp2 = EmTestComp(newval['name'])
|
272
|
|
-
|
|
284
|
+
|
273
|
285
|
#Check if properties other than date are equals in the instance fetched from Db
|
274
|
286
|
self.check_equals(newval, test_comp2, check_date=False)
|
275
|
287
|
|
|
@@ -304,7 +316,7 @@ class TestSave(ComponentTestCase):
|
304
|
316
|
newval = val.copy()
|
305
|
317
|
|
306
|
318
|
time.sleep(2) # We have to sleep 2 secs here, so the update_date will be at least 2 secs more than newval['date_update']
|
307
|
|
-
|
|
319
|
+
|
308
|
320
|
#name change
|
309
|
321
|
newval['name'] = test_comp.name = 'newname'
|
310
|
322
|
test_comp.save()
|
|
@@ -317,7 +329,7 @@ class TestSave(ComponentTestCase):
|
317
|
329
|
test_comp.save()
|
318
|
330
|
self._savecheck(test_comp, newval)
|
319
|
331
|
self.assertTrue(True)
|
320
|
|
-
|
|
332
|
+
|
321
|
333
|
#string change
|
322
|
334
|
newval['string'] = '{"fr": "string fr", "en":"string en", "es":"string es"}'
|
323
|
335
|
test_comp.string = MlString.load(newval['string'])
|
|
@@ -352,7 +364,7 @@ class TestSave(ComponentTestCase):
|
352
|
364
|
for prop in changes:
|
353
|
365
|
test_comp = EmTestComp(val['name'])
|
354
|
366
|
self.check_equals(val, test_comp, False)
|
355
|
|
-
|
|
367
|
+
|
356
|
368
|
with self.assertRaises(TypeError):
|
357
|
369
|
setattr(test_comp, prop, changes[prop])
|
358
|
370
|
test_comp.save()
|
|
@@ -374,7 +386,7 @@ class TestSave(ComponentTestCase):
|
374
|
386
|
# EmComponent.create #
|
375
|
387
|
#====================#
|
376
|
388
|
class TestCreate(ComponentTestCase):
|
377
|
|
-
|
|
389
|
+
|
378
|
390
|
def test_create(self):
|
379
|
391
|
"""Testing EmComponent.create()"""
|
380
|
392
|
vals = {'name': 'created1', 'rank_fam': 'f', 'string': '{"fr":"testcomp"}', 'help': '{"en":"help test", "fr":"test help"}'}
|
|
@@ -382,7 +394,7 @@ class TestCreate(ComponentTestCase):
|
382
|
394
|
self.check_equals(vals, tc, "The created EmTestComp hasn't the good properties values")
|
383
|
395
|
tcdb = EmTestComp('created1')
|
384
|
396
|
self.check_equals(vals, tc, "When fetched from Db the created EmTestComp hasn't the good properties values")
|
385
|
|
-
|
|
397
|
+
|
386
|
398
|
# This test assume that string and help has default values
|
387
|
399
|
vals = { 'name': 'created2', 'rank_fam': 'f' }
|
388
|
400
|
tc = EmTestComp.create(**vals)
|
|
@@ -408,7 +420,7 @@ class TestCreate(ComponentTestCase):
|
408
|
420
|
with self.assertRaises(TypeError, msg="But invalid keyword argument given"):
|
409
|
421
|
vals = {'invalid': 42, 'name': 'created1', 'rank_fam': 'f', 'string': '{"fr":"testcomp"}', 'help': '{"en":"help test", "fr":"test help"}'}
|
410
|
422
|
tc = EmTestComp.create(**vals)
|
411
|
|
-
|
|
423
|
+
|
412
|
424
|
pass
|
413
|
425
|
|
414
|
426
|
def test_create_existing_failure(self):
|
|
@@ -443,7 +455,7 @@ class TestCreate(ComponentTestCase):
|
443
|
455
|
# EmComponent.delete #
|
444
|
456
|
#====================#
|
445
|
457
|
class TestDelete(ComponentTestCase):
|
446
|
|
-
|
|
458
|
+
|
447
|
459
|
def test_delete(self):
|
448
|
460
|
""" Create and delete TestComponent """
|
449
|
461
|
vals = [
|
|
@@ -501,10 +513,10 @@ class TestModifyRank(ComponentTestCase):
|
501
|
513
|
|
502
|
514
|
def test_modify_rank_absolute(self):
|
503
|
515
|
""" Testing modify_rank with absolute rank """
|
504
|
|
-
|
|
516
|
+
|
505
|
517
|
names = [ v['name'] for v in self.test_values ]
|
506
|
518
|
nmax = len(names)-1
|
507
|
|
-
|
|
519
|
+
|
508
|
520
|
#moving first to 3
|
509
|
521
|
#-----------------
|
510
|
522
|
test_comp = EmTestComp(names[0])
|
|
@@ -534,7 +546,7 @@ class TestModifyRank(ComponentTestCase):
|
534
|
546
|
test_comp = EmTestComp(names[nmax])
|
535
|
547
|
|
536
|
548
|
test_comp.modify_rank(2, '=')
|
537
|
|
-
|
|
549
|
+
|
538
|
550
|
for i in [0,1]:
|
539
|
551
|
test_comp = EmTestComp(names[i])
|
540
|
552
|
self.assertEqual(test_comp.rank, i)
|
|
@@ -546,12 +558,12 @@ class TestModifyRank(ComponentTestCase):
|
546
|
558
|
test_comp = EmTestComp(names[nmax])
|
547
|
559
|
test_comp.modify_rank(nmax,'=')
|
548
|
560
|
self.assertEqual(test_comp.rank, nmax)
|
549
|
|
-
|
|
561
|
+
|
550
|
562
|
#Checking that we are in original state again
|
551
|
563
|
for i,name in enumerate(names):
|
552
|
564
|
test_comp = EmTestComp(name)
|
553
|
565
|
self.assertEqual(test_comp.rank, i, "Excepted rank was '"+str(i-1)+"' but found '"+str(test_comp.rank)+"'. Ranks dump : "+self.dump_ranks())
|
554
|
|
-
|
|
566
|
+
|
555
|
567
|
#Inverting the list
|
556
|
568
|
#------------------
|
557
|
569
|
for i,name in enumerate(names):
|
|
@@ -570,7 +582,7 @@ class TestModifyRank(ComponentTestCase):
|
570
|
582
|
""" Testing modify_rank with relative rank modifier """
|
571
|
583
|
names = [ v['name'] for v in self.test_values ]
|
572
|
584
|
nmax = len(names)-1
|
573
|
|
-
|
|
585
|
+
|
574
|
586
|
test_comp = EmTestComp(names[0])
|
575
|
587
|
#Running modify_rank(i,'+') and the modify_rank(i,'-') for i in range(1,nmax)
|
576
|
588
|
for i in range(1,nmax):
|
|
@@ -619,7 +631,7 @@ class TestModifyRank(ComponentTestCase):
|
619
|
631
|
""" Testing modify_rank with bad arguments """
|
620
|
632
|
names = [ v['name'] for v in self.test_values ]
|
621
|
633
|
tc = EmTestComp(names[3])
|
622
|
|
-
|
|
634
|
+
|
623
|
635
|
badargs = [
|
624
|
636
|
#Bad types
|
625
|
637
|
(('0','+'), TypeError),
|
|
@@ -627,17 +639,17 @@ class TestModifyRank(ComponentTestCase):
|
627
|
639
|
((print, '='), TypeError),
|
628
|
640
|
((3, print), TypeError),
|
629
|
641
|
((0.0, '='), TypeError),
|
630
|
|
-
|
|
642
|
+
|
631
|
643
|
#Bad new_rank
|
632
|
644
|
((-1, '='), ValueError),
|
633
|
645
|
((-1,), ValueError),
|
634
|
|
-
|
|
646
|
+
|
635
|
647
|
#Bad sign
|
636
|
648
|
((2, 'a'), ValueError),
|
637
|
649
|
((1, '=='), ValueError),
|
638
|
650
|
((1, '+-'), ValueError),
|
639
|
651
|
((1, 'Hello world !'), ValueError),
|
640
|
|
-
|
|
652
|
+
|
641
|
653
|
#Out of bounds
|
642
|
654
|
((42*10**9, '+'), ValueError),
|
643
|
655
|
((-42*10**9, '+'), ValueError),
|
|
@@ -655,3 +667,4 @@ class TestModifyRank(ComponentTestCase):
|
655
|
667
|
pass
|
656
|
668
|
|
657
|
669
|
|
|
670
|
+'''
|