Mercurial > hg > Lemuriformes
diff tests/test_uniques.py @ 18:56596902e9ae default tip
add some setup + tests
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Sun, 10 Dec 2017 17:57:03 -0800 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test_uniques.py Sun Dec 10 17:57:03 2017 -0800 @@ -0,0 +1,69 @@ +#!/usr/bin/env python + +""" +test CSV file uniques counter +""" + +import csv +import os +import shutil +import tempfile +import unittest +from lemuriformes.uniques import uniques +from StringIO import StringIO + + +class TestUniques(unittest.TestCase): + + header = ['a', 'b', 'c'] + dataset = [[1,2,3], + [1,1,2], + [1,2,4]] + + def write_dataset(self, fp): + + writer = csv.writer(fp) + writer.writerow(self.header) + writer.writerows(self.dataset) + fp.flush() + + def validate(self, uniq): + """validate `uniq` for object dataset""" + + # count them + counts = {key: len(value) + for key, value in uniq.items()} + assert counts['a'] == 1 + assert counts['b'] == 2 + assert counts['c'] == 3 + + + def test_file(self): + """test reading uniques from a file""" + + tmpdir = tempfile.mkdtemp() + try: + # write test data + dst = os.path.join(tmpdir, 'test.csv') + with open(dst, 'w') as fp: + self.write_dataset(fp) + + # determine uniques + self.validate(uniques(dst)) + + finally: + shutil.rmtree(tmpdir, ignore_errors=True) + + def test_buffer(self): + """test using a StringIO buffer object""" + + # write test data to buffer + buffer = StringIO() + self.write_dataset(buffer) + buffer.seek(0) + + # determine uniques + self.validate(uniques(buffer)) + +if __name__ == '__main__': + unittest.main()