def test_serialize_true(self): cv = types.Boolean() result = cv.serialize(True) assert isinstance(result, str) assert result == "true"
def test_serialize_false(self): cv = types.Boolean() result = cv.serialize(False) assert isinstance(result, str) assert result == "false"
def test_serialize_invalid_values(self): cv = types.Boolean() with pytest.raises(ValueError): cv.serialize([]) with pytest.raises(ValueError): cv.serialize("1")
def test_deserialize_conversion_failure(self): cv = types.Boolean() with pytest.raises(ValueError): cv.deserialize("nope") with pytest.raises(ValueError): cv.deserialize("sure")
def test_deserialize_conversion_success(self): value = types.Boolean() for true in ('1', 'yes', 'true', 'on'): self.assertIs(value.deserialize(true), True) self.assertIs(value.deserialize(true.upper()), True) self.assertIs(value.deserialize(true.capitalize()), True) for false in ('0', 'no', 'false', 'off'): self.assertIs(value.deserialize(false), False) self.assertIs(value.deserialize(false.upper()), False) self.assertIs(value.deserialize(false.capitalize()), False)
def test_serialize_none_as_false(self): # TODO We should consider making `None` an invalid value, but we have # existing code that assumes it to work like False. cv = types.Boolean() result = cv.serialize(None) assert isinstance(result, str) assert result == "false"
def test_deserialize_conversion_success(self): cv = types.Boolean() for true in ("1", "yes", "true", "on"): assert cv.deserialize(true) is True assert cv.deserialize(true.upper()) is True assert cv.deserialize(true.capitalize()) is True for false in ("0", "no", "false", "off"): assert cv.deserialize(false) is False assert cv.deserialize(false.upper()) is False assert cv.deserialize(false.capitalize()) is False
def test_serialize_false(self): value = types.Boolean() result = value.serialize(False) self.assertEqual(b'false', result) self.assertIsInstance(result, bytes)
def test_serialize_true(self): value = types.Boolean() result = value.serialize(True) self.assertEqual(b'true', result) self.assertIsInstance(result, bytes)
def test_deserialize_conversion_failure(self): value = types.Boolean() self.assertRaises(ValueError, value.deserialize, 'nope') self.assertRaises(ValueError, value.deserialize, 'sure') self.assertRaises(ValueError, value.deserialize, '')
def test_deserialize_respects_optional(self): cv = types.Boolean(optional=True) assert cv.deserialize("") is None
def test_deserialize_enforces_required(self): cv = types.Boolean() with pytest.raises(ValueError): cv.deserialize("")
def test_deserialize_respects_optional(self): value = types.Boolean(optional=True) self.assertEqual(None, value.deserialize(''))