Skip to content

Commit 3a18a14

Browse files
committed
Implement BooleanField; close #6
1 parent ca53fad commit 3a18a14

2 files changed

Lines changed: 25 additions & 3 deletions

File tree

adapters/fields.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,14 @@
77
from .base import BaseField
88

99

10-
__all__ = ['Field', 'CharField', 'DecimalField', 'FloatField', 'IntField']
10+
__all__ = [
11+
'BooleanField', 'CharField', 'DecimalField', 'Field', 'FloatField',
12+
'IntField']
1113

1214

13-
class Field(BaseField):
14-
pass
15+
class BooleanField(BaseField):
16+
def adapt(self, data):
17+
return bool(data)
1518

1619

1720
class CharField(BaseField):
@@ -24,6 +27,10 @@ def adapt(self, data):
2427
return Decimal(data)
2528

2629

30+
class Field(BaseField):
31+
pass
32+
33+
2734
class FloatField(BaseField):
2835
def adapt(self, data):
2936
return float(data)

tests/test_fields.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,18 @@ def test_decimal_field_from_string(self):
4343
actual = adapters.DecimalField().adapt('0.7350977618')
4444
expected = Decimal(0.7350977618)
4545
self.assertAlmostEqual(actual, expected)
46+
47+
def test_boolean_field(self):
48+
actual = adapters.BooleanField().adapt(True)
49+
self.assertTrue(actual)
50+
51+
def test_boolean_field_from_string(self):
52+
actual = adapters.BooleanField().adapt('Lorem ipsum')
53+
self.assertTrue(actual)
54+
55+
actual = adapters.BooleanField().adapt('')
56+
self.assertFalse(actual)
57+
58+
def test_boolean_field_from_null(self):
59+
actual = adapters.BooleanField().adapt(None)
60+
self.assertFalse(actual)

0 commit comments

Comments
 (0)