Skip to content

Commit ca53fad

Browse files
committed
Implement DecimalField; close #5
1 parent a1be6d0 commit ca53fad

2 files changed

Lines changed: 19 additions & 1 deletion

File tree

adapters/fields.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
from __future__ import unicode_literals
44

5+
from decimal import Decimal
6+
57
from .base import BaseField
68

79

8-
__all__ = ['Field', 'CharField', 'FloatField', 'IntField']
10+
__all__ = ['Field', 'CharField', 'DecimalField', 'FloatField', 'IntField']
911

1012

1113
class Field(BaseField):
@@ -17,6 +19,11 @@ def adapt(self, data):
1719
return unicode(data)
1820

1921

22+
class DecimalField(BaseField):
23+
def adapt(self, data):
24+
return Decimal(data)
25+
26+
2027
class FloatField(BaseField):
2128
def adapt(self, data):
2229
return float(data)

tests/test_fields.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from __future__ import unicode_literals
44

5+
from decimal import Decimal
56
import unittest
67

78
import adapters
@@ -32,3 +33,13 @@ def test_float_field_from_string(self):
3233
actual = adapters.FloatField().adapt('3.14159265359')
3334
expected = 3.14159265359
3435
self.assertEqual(actual, expected)
36+
37+
def test_decimal_field(self):
38+
actual = adapters.DecimalField().adapt(0.4032505476)
39+
expected = Decimal(0.4032505476)
40+
self.assertAlmostEqual(actual, expected)
41+
42+
def test_decimal_field_from_string(self):
43+
actual = adapters.DecimalField().adapt('0.7350977618')
44+
expected = Decimal(0.7350977618)
45+
self.assertAlmostEqual(actual, expected)

0 commit comments

Comments
 (0)