diff --git a/test/test_regression.py b/test/test_regression.py new file mode 100644 index 0000000..e5d3245 --- /dev/null +++ b/test/test_regression.py @@ -0,0 +1,67 @@ +import pytest +import capnp +import os + +this_dir = os.path.dirname(__file__) + +@pytest.fixture +def addressbook(): + return capnp.load(os.path.join(this_dir, 'addressbook.capnp')) + +def test_addressbook(addressbook): + def writeAddressBook(fd): + message = capnp.MallocMessageBuilder() + addressBook = message.initRoot(addressbook.AddressBook) + people = addressBook.init('people', 2) + + alice = people[0] + alice.id = 123 + alice.name = 'Alice' + alice.email = 'alice@example.com' + alicePhones = alice.init('phones', 1) + alicePhones[0].number = "555-1212" + alicePhones[0].type = 'mobile' + alice.employment.school = "MIT" + + bob = people[1] + bob.id = 456 + bob.name = 'Bob' + bob.email = 'bob@example.com' + bobPhones = bob.init('phones', 2) + bobPhones[0].number = "555-4567" + bobPhones[0].type = 'home' + bobPhones[1].number = "555-7654" + bobPhones[1].type = 'work' + bob.employment.unemployed = None + + capnp.writePackedMessageToFd(fd, message) + + + def printAddressBook(fd): + message = capnp.PackedFdMessageReader(f.fileno()) + addressBook = message.getRoot(addressbook.AddressBook) + + for person in addressBook.people: + print(person.name, ':', person.email) + for phone in person.phones: + print(phone.type, ':', phone.number) + + which = person.employment.which() + print(which) + + if which == 'unemployed': + print('unemployed') + elif which == 'employer': + print('employer:', person.employment.employer) + elif which == 'school': + print('student at:', person.employment.school) + elif which == 'selfEmployed': + print('self employed') + print() + + + f = open('example', 'w') + writeAddressBook(f.fileno()) + + f = open('example', 'r') + printAddressBook(f.fileno())