72 lines
2.2 KiB
Python
72 lines
2.2 KiB
Python
import unittest
|
|
import decimal
|
|
from pyaccuwage.fields import TextField
|
|
from pyaccuwage.fields import IntegerField
|
|
from pyaccuwage.fields import StateField
|
|
from pyaccuwage.fields import BlankField
|
|
from pyaccuwage.fields import ZeroField
|
|
from pyaccuwage.fields import MoneyField
|
|
from pyaccuwage.fields import ValidationError
|
|
from pyaccuwage.model import Model
|
|
|
|
|
|
class TestTextField(unittest.TestCase):
|
|
|
|
def testStringShortOptional(self):
|
|
field = TextField(max_length=6, required=False)
|
|
field.validate() # optional
|
|
field.value = 'Hello'
|
|
field.validate()
|
|
self.assertEqual(field.get_data(), b'HELLO ')
|
|
|
|
def testStringShortRequired(self):
|
|
field = TextField(max_length=6, required=True)
|
|
with self.assertRaises(ValidationError):
|
|
field.validate()
|
|
field.value = 'Hello'
|
|
field.validate()
|
|
self.assertEqual(field.get_data(), b'HELLO ')
|
|
|
|
def testStringLongOptional(self):
|
|
field = TextField(max_length=6, required=False)
|
|
field.value = 'Hello, World!' # too long
|
|
self.assertEqual(len(field.get_data()), field.max_length)
|
|
|
|
|
|
class TestModelOutput(unittest.TestCase):
|
|
class TestModel(Model):
|
|
record_length = 128
|
|
record_identifier = 'TEST' # 4 bytes
|
|
field1 = TextField(max_length=16)
|
|
field2 = IntegerField(max_length=16)
|
|
blank1 = BlankField(max_length=16)
|
|
zero1 = ZeroField(max_length=16)
|
|
money = MoneyField(max_length=32)
|
|
state_txt = StateField()
|
|
state_num = StateField(use_numeric=True)
|
|
blank2 = BlankField(max_length=24)
|
|
|
|
def setUp(self):
|
|
self.model = TestModelOutput.TestModel()
|
|
|
|
def testModelOutput(self):
|
|
model = self.model
|
|
model.field1.value = 'Hello, sir!'
|
|
model.field2.value = 12345
|
|
model.money.value = decimal.Decimal('1234.56')
|
|
model.state_txt.value = 'IA'
|
|
model.state_num.value = 'IA'
|
|
|
|
expected = b''.join([
|
|
b'TEST',
|
|
b'HELLO, SIR!'.ljust(16),
|
|
b'12345'.zfill(16),
|
|
b' ' * 16,
|
|
b'0' * 16,
|
|
b'123456'.zfill(32),
|
|
b'IA',
|
|
b'19',
|
|
b' ' * 24,
|
|
])
|
|
|
|
self.assertEqual(model.output(), expected)
|