def test_example(self): RecordA.drop_table(fail_silently=True) RecordB.drop_table(fail_silently=True) RecordA.create_table(fail_silently=True) RecordB.create_table(fail_silently=True) f = FixedEngine([RecordA, RecordB], selector_slice=(0, 2)) client_id = 0 aux = [] for r in f.load('samples/sample_utf8.txt'): if type(r) is RecordA: client_id += 1 r.client_id = client_id if type(r) is RecordB: aux.append(r) r.save() c1 = RecordA.get(client_id=1) self.assertEquals(c1.typ, 1) self.assertEquals(c1.name, u'ariel') self.assertEquals(c1.age, 32) self.assertEquals(c1.salary, 123.45) self.assertEquals(RecordA.select().count(), 2) c2 = RecordB.select() self.assertEquals(c2.count(), 4) for y, t in zip(c2, aux): self.assertEquals(y.typ, t.typ) self.assertEquals(y.address, t.address) self.assertEquals(y.phone, t.phone)
def test_init_with_one_record(self): r = FixedEngine([RecordA]) self.assertEquals(len(r.records), 1) self.assertIs(r.records[0], RecordA) self.assertIs(r.selector('anything'), RecordA) obj = RecordA() self.assertIs(r.find_record(obj), RecordA)
def test_save(self): f = FixedEngine([RecordA, RecordB], self.selector) fi = 'samples/test_sample1.txt' f.save(fi, self.objs) self.assertTrue(os.path.exists(fi)) lines1 = open(fi, 'r').readlines() lines2 = open('samples/sample_utf8.txt', 'r').readlines() self.assertEquals(''.join(lines1), ''.join(lines2)) os.remove(fi)
def test_init_with_two_records_using_selector_string(self): self.assertRaises(AssertionError, FixedEngine, [RecordA, RecordB]) r = FixedEngine([RecordA, RecordB], selector_slice=(0, 2)) obj_a = RecordA() obj_b = RecordB() self.assertEquals(len(r.records), 2) self.assertIs(r.records[0], RecordA) self.assertIs(r.records[1], RecordB) self.assertIs(r.selector('01Ariel'), RecordA) self.assertIs(r.selector('02Ariel'), RecordB) self.assertIs(r.find_record(obj_a), RecordA) self.assertIs(r.find_record(obj_b), RecordB)
from pypfp.core import Field, Record from pypfp.core import FixedEngine from pypfp.converters import Float, Int, String class Header(Record): typ = Field(Int, 2) name = Field(String, 10) age = Field(Int, 2) salary = Field(Float, 14, precision=4) class Meta: selector_string = u'01' class Address(Record): typ = Field(Int, 2) address = Field(String, 10, truncate=True) phone = Field(String, 20) class Meta: selector_string = u'02' # read sample file engine = FixedEngine([Header, Address], selector_slice=(0, 2)) # print records for r in engine.load('../samples/sample_utf8.txt'): print unicode(r).encode('utf-8')
def test_load(self): f = FixedEngine([RecordA, RecordB], self.selector) objects = f.load('samples/sample_utf8.txt') self.assertEqual(len(objects), len(self.objs)) for y, t in zip(objects, self.objs): self.assertEqual(y, t)