Revision a464ce71 test/ganeti.ht_unittest.py

b/test/ganeti.ht_unittest.py
187 187
    self.assertFalse(fn({"x": None}))
188 188
    self.assertFalse(fn({"": 8234}))
189 189

  
190
  def testStrictDictRequireAllExclusive(self):
191
    fn = ht.TStrictDict(True, True, { "a": ht.TInt, })
192
    self.assertFalse(fn(1))
193
    self.assertFalse(fn(None))
194
    self.assertFalse(fn({}))
195
    self.assertFalse(fn({"a": "Hello", }))
196
    self.assertFalse(fn({"unknown": 999,}))
197
    self.assertFalse(fn({"unknown": None,}))
198

  
199
    self.assertTrue(fn({"a": 123, }))
200
    self.assertTrue(fn({"a": -5, }))
201

  
202
    fn = ht.TStrictDict(True, True, { "a": ht.TInt, "x": ht.TString, })
203
    self.assertFalse(fn({}))
204
    self.assertFalse(fn({"a": -5, }))
205
    self.assertTrue(fn({"a": 123, "x": "", }))
206
    self.assertFalse(fn({"a": 123, "x": None, }))
207

  
208
  def testStrictDictExclusive(self):
209
    fn = ht.TStrictDict(False, True, { "a": ht.TInt, "b": ht.TList, })
210
    self.assertTrue(fn({}))
211
    self.assertTrue(fn({"a": 123, }))
212
    self.assertTrue(fn({"b": range(4), }))
213
    self.assertFalse(fn({"b": 123, }))
214

  
215
    self.assertFalse(fn({"foo": {}, }))
216
    self.assertFalse(fn({"bar": object(), }))
217

  
218
  def testStrictDictRequireAll(self):
219
    fn = ht.TStrictDict(True, False, { "a": ht.TInt, "m": ht.TInt, })
220
    self.assertTrue(fn({"a": 1, "m": 2, "bar": object(), }))
221
    self.assertFalse(fn({}))
222
    self.assertFalse(fn({"a": 1, "bar": object(), }))
223
    self.assertFalse(fn({"a": 1, "m": [], "bar": object(), }))
224

  
225
  def testStrictDict(self):
226
    fn = ht.TStrictDict(False, False, { "a": ht.TInt, })
227
    self.assertTrue(fn({}))
228
    self.assertFalse(fn({"a": ""}))
229
    self.assertTrue(fn({"a": 11}))
230
    self.assertTrue(fn({"other": 11}))
231
    self.assertTrue(fn({"other": object()}))
232

  
190 233

  
191 234
if __name__ == "__main__":
192 235
  testutils.GanetiTestProgram()

Also available in: Unified diff