def convert_to_boolean(data):
- try:
- i = int(data)
- if i in [True, False]:
- # Ensure that the value is True or False
- if i:
- return True
- else:
- return False
- except (ValueError, TypeError):
- if (data == "True" or data == "true"):
+ if isinstance(data, basestring):
+ val = data.lower()
+ if val == "true" or val == "1":
return True
- if (data == "False" or data == "false"):
+ if val == "false" or val == "0":
return False
- msg = _("'%s' is not boolean") % data
+ elif isinstance(data, bool):
+ return data
+ elif isinstance(data, int):
+ if data == 0:
+ return False
+ elif data == 1:
+ return True
+ msg = _("'%s' cannot be converted to boolean") % data
raise q_exc.InvalidInput(error_message=msg)
self.assertEquals(msg, error)
+class TestConvertToBoolean(unittest2.TestCase):
+
+ def test_convert_to_boolean_bool(self):
+ self.assertIs(attributes.convert_to_boolean(True), True)
+ self.assertIs(attributes.convert_to_boolean(False), False)
+
+ def test_convert_to_boolean_int(self):
+ self.assertIs(attributes.convert_to_boolean(0), False)
+ self.assertIs(attributes.convert_to_boolean(1), True)
+ self.assertRaises(q_exc.InvalidInput,
+ attributes.convert_to_boolean,
+ 7)
+
+ def test_convert_to_boolean_str(self):
+ self.assertIs(attributes.convert_to_boolean('True'), True)
+ self.assertIs(attributes.convert_to_boolean('true'), True)
+ self.assertIs(attributes.convert_to_boolean('False'), False)
+ self.assertIs(attributes.convert_to_boolean('false'), False)
+ self.assertIs(attributes.convert_to_boolean('0'), False)
+ self.assertIs(attributes.convert_to_boolean('1'), True)
+ self.assertRaises(q_exc.InvalidInput,
+ attributes.convert_to_boolean,
+ '7')
+
+
class TestConvertKvp(unittest2.TestCase):
def test_convert_kvp_list_to_dict_succeeds_for_missing_values(self):