Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > 353749dc980aa8b988e686fbf75a3d22 > files > 37

python-dirq-1.4-1.fc18.noarch.rpm

# -*- coding: utf-8 -*-

import os
import shutil
import tempfile
import unittest

__all__ = ['TestQueueSet']

from dirq.queue import Queue
from dirq.Exceptions import QueueError
from dirq.QueueSet import QueueSet


class TestDirQueue(unittest.TestCase):

    def setUp(self):
        self.path = tempfile.mkdtemp()
        for i in range(1, 5):
            setattr(self, 'p%i' % i, '%s/%s' % (self.path, 'p%i' % i))
        shutil.rmtree(self.path, ignore_errors=True)

    def tearDown(self):
        shutil.rmtree(self.path, ignore_errors=True)


class TestQueueSet(TestDirQueue):
    """ TestQueueSet """

    def test1_init(self):
        """ QueueSet.__init__() """
        self.failUnlessRaises(TypeError, QueueSet, ('a'))
        self.failUnlessRaises(TypeError, QueueSet,
                              (Queue(self.p1, schema={'data': 'string'}), 'a'))
        self.failUnlessRaises(TypeError, QueueSet,
                              ([Queue(self.p1,
                                      schema={'data': 'string'}), 'a']))
        self.failUnlessRaises(TypeError, QueueSet, ([1, 2]))
        self.failUnlessRaises(TypeError, QueueSet, ((1, 2)))

    def test2_addremove(self):
        """ QueueSet.add()/remove() """
        q1 = Queue(self.p1, schema={'data': 'string'})
        q2 = Queue(self.p2, schema={'data': 'string'})
        q3 = Queue(self.p3, schema={'data': 'string'})
        q4 = Queue(self.p4, schema={'data': 'string'})
        for i in range(10):
            q1.add({'data': '%i A\n' % i})
            q2.add({'data': '%i A\n' % i})
            q3.add({'data': '%i A\n' % i})
            q4.add({'data': '%i A\n' % i})
        qs = QueueSet([q1, q2])
        qs.add(q3)
        qs.remove(q1)
        qs.add(q1, q4)
        self.failUnlessRaises(QueueError, qs.add, ([q1]))

    def test3_firstnext(self):
        """ QueueSet.first()/next() """
        q1 = Queue(self.p1, schema={'data': 'string'})
        q2 = Queue(self.p2, schema={'data': 'string'})
        for i in range(10):
            q1.add({'data': '%i A\n' % i})
            q2.add({'data': '%i A\n' % i})
        qs = QueueSet([q1, q2])
        e = qs.first()
        assert isinstance(e, tuple)
        assert isinstance(e[0], Queue)
        assert isinstance(e[1], str)
        while e[0]:
            e = qs.next()


def main():
    testcases = [TestQueueSet]
    for tc in testcases:
        unittest.TextTestRunner(verbosity=2).\
            run(unittest.TestLoader().loadTestsFromTestCase(tc))

if __name__ == "__main__":
    main()