Alberto Donato has proposed merging lp:~ack/txaws/parameter-type-float into lp:txaws.
Requested reviews: txAWS Committers (txaws-dev) For more details, see: https://code.launchpad.net/~ack/txaws/parameter-type-float/+merge/302010 Add a Float parameter type. -- Your team txAWS Committers is requested to review the proposed merge of lp:~ack/txaws/parameter-type-float into lp:txaws.
=== modified file 'txaws/server/schema.py' --- txaws/server/schema.py 2013-08-14 12:10:05 +0000 +++ txaws/server/schema.py 2016-08-04 10:57:26 +0000 @@ -237,6 +237,30 @@ return int(value) +class Float(Parameter): + """A parameter that must be a {float}.""" + + kind = "float" + + lower_than_min_template = "Value must be at least %s." + greater_than_max_template = "Value exceeds maximum of %s." + + def __init__(self, name=None, optional=False, default=None, + min=0, max=None, allow_none=False, validator=None, + doc=None): + super(Float, self).__init__( + name, optional, default, min, max, allow_none, validator, doc=doc) + + def parse(self, value): + return float(value) + + def format(self, value): + return str(value) + + def measure(self, value): + return float(value) + + class Bool(Parameter): """A parameter that must be a C{bool}.""" === modified file 'txaws/server/tests/test_schema.py' --- txaws/server/tests/test_schema.py 2013-08-14 12:10:05 +0000 +++ txaws/server/tests/test_schema.py 2016-08-04 10:57:26 +0000 @@ -8,8 +8,8 @@ from txaws.server.exception import APIError from txaws.server.schema import ( - Arguments, Bool, Date, Enum, Integer, Parameter, RawStr, Schema, Unicode, - UnicodeLine, List, Structure, InconsistentParameterError) + Arguments, Bool, Date, Enum, Integer, Float, Parameter, RawStr, Schema, + Unicode, UnicodeLine, List, Structure, InconsistentParameterError) class ArgumentsTestCase(TestCase): @@ -343,6 +343,45 @@ self.assertIn("Invalid integer value %s" % garbage, error.message) +class FloatTestCase(TestCase): + + def test_parse(self): + """L{Float.parse} converts the given raw C{value} to C{float}.""" + parameter = Float("Test") + self.assertEqual(123.45, parameter.parse("123.45")) + + def test_format(self): + """L{Float.format} converts the given float to a string.""" + parameter = Float("Test") + self.assertEqual("123.45", parameter.format(123.45)) + + def test_min_and_max(self): + """The L{Float} parameter properly supports ranges.""" + parameter = Float("Test", min=2.3, max=4.5) + + error = self.assertRaises(APIError, parameter.coerce, "1.2") + self.assertEqual(400, error.status) + self.assertEqual("InvalidParameterValue", error.code) + self.assertIn("Value must be at least 2.3.", error.message) + + error = self.assertRaises(APIError, parameter.coerce, "5") + self.assertIn("Value exceeds maximum of 4.5.", error.message) + self.assertEqual(400, error.status) + self.assertEqual("InvalidParameterValue", error.code) + + def test_non_float_string(self): + """ + The L{Float} parameter raises an L{APIError} when passed non-float + values (in this case, a string). + """ + garbage = "blah" + parameter = Float("Test") + error = self.assertRaises(APIError, parameter.coerce, garbage) + self.assertEqual(400, error.status) + self.assertEqual("InvalidParameterValue", error.code) + self.assertIn("Invalid float value {}".format(garbage), error.message) + + class BoolTestCase(TestCase): def test_parse(self):
_______________________________________________ Mailing list: https://launchpad.net/~txaws-dev Post to : txaws-dev@lists.launchpad.net Unsubscribe : https://launchpad.net/~txaws-dev More help : https://help.launchpad.net/ListHelp