diff --git a/wsme/rest/args.py b/wsme/rest/args.py index 4574cdd..9b8f2e1 100644 --- a/wsme/rest/args.py +++ b/wsme/rest/args.py @@ -18,7 +18,7 @@ ARRAY_MAX_SIZE = 1000 @generic def from_param(datatype, value): - return datatype(value) if value else None + return datatype(value) if value is not None else None @from_param.when_object(datetime.date) diff --git a/wsme/tests/test_protocols_commons.py b/wsme/tests/test_protocols_commons.py index 19908b2..6a4c1a8 100644 --- a/wsme/tests/test_protocols_commons.py +++ b/wsme/tests/test_protocols_commons.py @@ -75,3 +75,32 @@ class TestProtocolsCommons(unittest.TestCase): assert fake_type.name in str(e) else: self.fail('Should have thrown an InvalidInput') + + +class ArgTypeConversion(unittest.TestCase): + + def test_int_zero(self): + self.assertEqual(0, from_param(int, 0)) + self.assertEqual(0, from_param(int, '0')) + + def test_int_nonzero(self): + self.assertEqual(1, from_param(int, 1)) + self.assertEqual(1, from_param(int, '1')) + + def test_int_none(self): + self.assertEqual(None, from_param(int, None)) + + def test_float_zero(self): + self.assertEqual(0.0, from_param(float, 0)) + self.assertEqual(0.0, from_param(float, 0.0)) + self.assertEqual(0.0, from_param(float, '0')) + self.assertEqual(0.0, from_param(float, '0.0')) + + def test_float_nonzero(self): + self.assertEqual(1.0, from_param(float, 1)) + self.assertEqual(1.0, from_param(float, 1.0)) + self.assertEqual(1.0, from_param(float, '1')) + self.assertEqual(1.0, from_param(float, '1.0')) + + def test_float_none(self): + self.assertEqual(None, from_param(float, None))