import queue
import time

import worker


def test_worker():
    product_queue = queue.Queue()

    def multiply(a, b, q):
        return q.put(a * b)

    period = 1.0
    w = worker.Worker(period, fcn=multiply, args=(2, 3, product_queue))
    # Sleep 1/3 of the period and stop the worker before the subsequent
    # period
    time.sleep(period / 3)
    w.stop()
    product = product_queue.get()
    product_queue.task_done()
    assert (product == (2 * 3))
    assert (product_queue.empty())