def testCorrectValueType(self): # TODO: We should not allow for a None valeu type. Set(value_type=None) # do not allow arbitrary value types self.assertRaises(ValueError, Set, value_type=object()) self.assertRaises(ValueError, Set, value_type=Field) # however, allow anything that implements IField Set(value_type=Field()) class FakeField(object): implements(IField) Set(value_type=FakeField())
def testValidateRequired(self): field = Set(title=u'Set field', description=u'', readonly=False, required=True) field.validate(sets.Set()) field.validate(sets.Set((1, 2))) field.validate(sets.Set((3, ))) self.assertRaises(RequiredMissing, field.validate, None)
def testValidateMaxValues(self): field = Set(title=u'Set field', description=u'', readonly=False, required=False, max_length=2) field.validate(None) field.validate(sets.Set()) field.validate(sets.Set((1, 2))) self.assertRaises(TooLong, field.validate, sets.Set((1, 2, 3, 4))) self.assertRaises(TooLong, field.validate, sets.Set((1, 2, 3)))
def testValidateMinValues(self): field = Set(title=u'Set field', description=u'', readonly=False, required=False, min_length=2) field.validate(None) field.validate(sets.Set((1, 2))) field.validate(sets.Set((1, 2, 3))) self.assertRaises(TooShort, field.validate, sets.Set(())) self.assertRaises(TooShort, field.validate, sets.Set((3, )))
def testValidateValueTypes(self): field = Set(title=u'Set field', description=u'', readonly=False, required=False, value_type=Int()) field.validate(None) field.validate(sets.Set((5, ))) field.validate(sets.Set((2, 3))) self.assertRaises(WrongContainedType, field.validate, sets.Set(('', ))) self.assertRaises(WrongContainedType, field.validate, sets.Set((3.14159, )))
def testValidate(self): field = Set(title=u'Set field', description=u'', readonly=False, required=False) field.validate(None) field.validate(sets.Set()) field.validate(sets.Set((1, 2))) field.validate(sets.Set((3, ))) self.assertRaises(WrongType, field.validate, [1, 2, 3]) self.assertRaises(WrongType, field.validate, 'abc') self.assertRaises(WrongType, field.validate, 1) self.assertRaises(WrongType, field.validate, {}) self.assertRaises(WrongType, field.validate, (1, 2, 3))
def testValidateDefaultAltMissingValue(self): missing = object() field = Set(required=True, missing_value=missing) field.default = missing
def testValidateDefault(self): field = Set(required=True) field.default = None
def testValidateRequiredAltMissingValue(self): missing = object() field = Set(required=True, missing_value=missing) field.validate(sets.Set()) self.assertRaises(RequiredMissing, field.validate, missing)
def testImplements(self): field = Set() self.failUnless(ISet.providedBy(field)) self.failUnless(IUnorderedCollection.providedBy(field)) self.failUnless(ICollection.providedBy(field))
def testNoUniqueArgument(self): self.assertRaises(TypeError, Set, unique=False) self.assertRaises(TypeError, Set, unique=True) self.failUnless(Set().unique)