Merge lp:~ack/txaws/parameter-type-float into lp:txaws

Proposed by Alberto Donato
Status: Merged
Merged at revision: 159
Proposed branch: lp:~ack/txaws/parameter-type-float
Merge into: lp:txaws
Diff against target: 95 lines (+65/-2)
2 files modified
txaws/server/schema.py (+24/-0)
txaws/server/tests/test_schema.py (+41/-2)
To merge this branch: bzr merge lp:~ack/txaws/parameter-type-float
Reviewer Review Type Date Requested Status
Free Ekanayaka (community) Approve
Review via email: mp+302010@code.launchpad.net

Description of the change

Add a Float parameter type.

To post a comment you must log in.
Revision history for this message
Free Ekanayaka (free.ekanayaka) wrote :

+1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== 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 @@
237 return int(value)237 return int(value)
238238
239239
240class Float(Parameter):
241 """A parameter that must be a {float}."""
242
243 kind = "float"
244
245 lower_than_min_template = "Value must be at least %s."
246 greater_than_max_template = "Value exceeds maximum of %s."
247
248 def __init__(self, name=None, optional=False, default=None,
249 min=0, max=None, allow_none=False, validator=None,
250 doc=None):
251 super(Float, self).__init__(
252 name, optional, default, min, max, allow_none, validator, doc=doc)
253
254 def parse(self, value):
255 return float(value)
256
257 def format(self, value):
258 return str(value)
259
260 def measure(self, value):
261 return float(value)
262
263
240class Bool(Parameter):264class Bool(Parameter):
241 """A parameter that must be a C{bool}."""265 """A parameter that must be a C{bool}."""
242266
243267
=== 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 @@
88
9from txaws.server.exception import APIError9from txaws.server.exception import APIError
10from txaws.server.schema import (10from txaws.server.schema import (
11 Arguments, Bool, Date, Enum, Integer, Parameter, RawStr, Schema, Unicode,11 Arguments, Bool, Date, Enum, Integer, Float, Parameter, RawStr, Schema,
12 UnicodeLine, List, Structure, InconsistentParameterError)12 Unicode, UnicodeLine, List, Structure, InconsistentParameterError)
1313
1414
15class ArgumentsTestCase(TestCase):15class ArgumentsTestCase(TestCase):
@@ -343,6 +343,45 @@
343 self.assertIn("Invalid integer value %s" % garbage, error.message)343 self.assertIn("Invalid integer value %s" % garbage, error.message)
344344
345345
346class FloatTestCase(TestCase):
347
348 def test_parse(self):
349 """L{Float.parse} converts the given raw C{value} to C{float}."""
350 parameter = Float("Test")
351 self.assertEqual(123.45, parameter.parse("123.45"))
352
353 def test_format(self):
354 """L{Float.format} converts the given float to a string."""
355 parameter = Float("Test")
356 self.assertEqual("123.45", parameter.format(123.45))
357
358 def test_min_and_max(self):
359 """The L{Float} parameter properly supports ranges."""
360 parameter = Float("Test", min=2.3, max=4.5)
361
362 error = self.assertRaises(APIError, parameter.coerce, "1.2")
363 self.assertEqual(400, error.status)
364 self.assertEqual("InvalidParameterValue", error.code)
365 self.assertIn("Value must be at least 2.3.", error.message)
366
367 error = self.assertRaises(APIError, parameter.coerce, "5")
368 self.assertIn("Value exceeds maximum of 4.5.", error.message)
369 self.assertEqual(400, error.status)
370 self.assertEqual("InvalidParameterValue", error.code)
371
372 def test_non_float_string(self):
373 """
374 The L{Float} parameter raises an L{APIError} when passed non-float
375 values (in this case, a string).
376 """
377 garbage = "blah"
378 parameter = Float("Test")
379 error = self.assertRaises(APIError, parameter.coerce, garbage)
380 self.assertEqual(400, error.status)
381 self.assertEqual("InvalidParameterValue", error.code)
382 self.assertIn("Invalid float value {}".format(garbage), error.message)
383
384
346class BoolTestCase(TestCase):385class BoolTestCase(TestCase):
347386
348 def test_parse(self):387 def test_parse(self):

Subscribers

People subscribed via source and target branches