From 807123918b1ac8d6a113c8a36acd4872b663ce50 Mon Sep 17 00:00:00 2001 From: Martin Baeuml Date: Tue, 7 Jun 2011 16:20:03 +0200 Subject: [PATCH] add more container tests --- tests/container_factory_test.py | 11 ----- tests/container_test.py | 72 +++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 11 deletions(-) delete mode 100644 tests/container_factory_test.py create mode 100644 tests/container_test.py diff --git a/tests/container_factory_test.py b/tests/container_factory_test.py deleted file mode 100644 index 61ddc95..0000000 --- a/tests/container_factory_test.py +++ /dev/null @@ -1,11 +0,0 @@ -from sloth.annotations.container import * - -class MockupContainer: - pass - -def test_import_callable(): - containers = (('*', 'container_factory_test.MockupContainer'),) - factory = AnnotationContainerFactory(containers) - item = factory.create('test') - assert isinstance(item, MockupContainer) - diff --git a/tests/container_test.py b/tests/container_test.py new file mode 100644 index 0000000..e39e1c1 --- /dev/null +++ b/tests/container_test.py @@ -0,0 +1,72 @@ +from sloth.annotations.container import * + +class MockupContainer: + pass + +def someFileAnnotations(i): + annotations = [] + annotations.append({'type': 'rect', + 'x': 10 * i, + 'y': '20', + 'w': '40', + 'h': '60'}) + annotations.append({'type': 'rect', + 'x': '80', + 'y': 20 * i, + 'w': '40', + 'h': '60'}) + for k in range(i): + annotations.append({'type': 'point', + 'x': 30 * k, + 'y': 30 * k}) + return annotations + +def someAnnotations(): + annotations = [] + for i in range(5): + file = { + 'filename': 'file%d.png' % i, + 'type': 'image', + 'annotations': someFileAnnotations(i) + } + annotations.append(file) + return annotations + +def common_container_test(filename, container): + original_anns = someAnnotations() + + container.setAnnotations(original_anns) + assert len(container.annotations()) == len(original_anns) + + container.save(filename) + assert container.filename() == filename + assert os.path.exists(filename) + + container.clear() + assert container.filename() is None + assert len(container.annotations()) == 0 + + container.load(filename) + assert container.filename() == filename + assert len(container.annotations()) == len(original_anns) + +def test_import_callable(): + containers = (('*', 'container_test.MockupContainer'),) + factory = AnnotationContainerFactory(containers) + item = factory.create('test') + assert isinstance(item, MockupContainer) + +def test_PickleContainer(tmpdir): + filename = os.path.join(str(tmpdir), "test_PickleContainer.pickle") + container = PickleContainer() + common_container_test(filename, container) + +def test_JsonContainer(tmpdir): + filename = os.path.join(str(tmpdir), "test_JsonContainer.json") + container = JsonContainer() + common_container_test(filename, container) + +def test_YamlContainer(tmpdir): + filename = os.path.join(str(tmpdir), "test_YamlContainer.yaml") + container = YamlContainer() + common_container_test(filename, container)