blob: c1912e94cb8be47b28bb7044e02e39b8a6fc8170 [file] [log] [blame] [edit]
#!/usr/bin/python
# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from multithreaded_processor import MultithreadedProcessor
class EvenNumbersGenerator():
"""
An example and a simple test for multithreaded_processor.py.
These class is supposed to generate a table of even numbers using
many threads.
"""
def __init__(self):
# creates a processor class with 13 threads
self._processor = MultithreadedProcessor(13)
def getEvenNumbers(self, count):
"""
@param count: a count of even numbers to return
@returns a list of first 'count' even numbers in ascending order
"""
# prepares input data
self._data = range(count)
# runs the calculations and returns an output
return self._processor.run(self._thread, count)
def _thread(self, task_id):
# calculates single even number
return (self._data[task_id]*2)
def main():
"""
Unit test for MultithreadedProcessor
"""
# runs the test
gen = EvenNumbersGenerator()
evenNumbers = gen.getEvenNumbers(12345)
# checks the output
assert len(evenNumbers) == 12345
for i, number in enumerate(evenNumbers):
assert number == i*2
if __name__ == '__main__':
main()