def __init__(self): self._line_feeder = LineFeeder() self._combinations = [] # combination of file path and pattern self._algorithms = set() self._time_results = {} self._mem_results = {} self._tick_labels = []
def test_match_letter(self): self._algorithm.get_pattern = Mock(return_value="l") self._algorithm.get_results = Mock( side_effect=[[1], [3, 7], [], [0, 5, 10, 16], [6, 10, 12, 15, 23], [11, 16], [1], [0, 4], [14], [1]]) lf = LineFeeder(self._algorithm, self._filename) self.assertEqual([ 1, 5, 9, 21, 26, 31, 37, 44, 48, 50, 53, 61, 74, 79, 83, 87, 91, 106, 111 ], lf.get_results())
def test_single_letter(self): _filename = "line_feeder_integrationtest_file.txt" file = open(_filename, 'w') file.write("aa\naa\naaa\naa") file.close() pattern = "a" algorithm = BoyerMoore(self._get_heuristic(), pattern) lf = LineFeeder(algorithm, _filename) res = lf.get_results() self.assertEqual(res, [0, 1, 2, 3, 4, 5, 6, 7, 8]) os.remove(_filename)
def test_find_single_match(self): _filename = "line_feeder_integrationtest_file.txt" file = open(_filename, 'w') file.write("asdjasd\nvhajsdv\najsdbh\nasjd\n asdbha sjasdjasv\nbdjas") file.close() pattern = "jasdj" algorithm = BoyerMoore(self._get_heuristic(), pattern) lf = LineFeeder(algorithm, _filename) res = lf.get_results() self.assertEqual(res, [33]) os.remove(_filename)
def test_more_match(self): _filename = "line_feeder_integrationtest_file.txt" file = open(_filename, 'w') file.write( "\nasaj\nakvhajsdajakvvajsd\nbajakvhas\njd asajakvdbha sjasdjaja\nkvasvbd\njas\n\n\n" ) file.close() pattern = "ajakv" algorithm = BoyerMoore(self._get_heuristic(), pattern) lf = LineFeeder(algorithm, _filename) res = lf.get_results() self.assertEqual(res, [2, 12, 23, 36, 52]) os.remove(_filename)
class PerformanceAnalyser: def __init__(self): self._line_feeder = LineFeeder() self._combinations = [] # combination of file path and pattern self._algorithms = set() self._time_results = {} self._mem_results = {} self._tick_labels = [] def add_path_pattern(self, path, pattern): self._combinations.append((path, pattern)) def add_algorithm(self, algorithm_): self._algorithms.add(algorithm_) def analyse(self): for path, pattern in self._combinations: self._tick_labels.append('PATTERN: ' + pattern + ' PATH: ' + path) for algo in self._algorithms: algo.set_pattern(pattern) self._line_feeder.set_algorithm(algo) self._line_feeder.set_file_path(path) execution_time = timer_decorator( self._line_feeder.get_results)() self._time_results.setdefault(algo.get_name(), []).append(execution_time) algo.set_pattern(pattern) self._line_feeder.set_algorithm(algo) self._line_feeder.set_file_path(path) self._mem_results.setdefault(algo.get_name(), []).append( memory_decorator( self._line_feeder.get_results)(execution_time)) def show_results(self): BarChartTable.create_result_window( "Time analysis", '', 'Time(sec)', self._time_results, [str(i + 1) for i in range(len(self._tick_labels))]) BarChartTable.create_result_window( "Memory analysis", '', 'Memory(MB)', self._mem_results, [str(i + 1) for i in range(len(self._tick_labels))]) data = [[str(i + 1), elem] for i, elem in enumerate(self._tick_labels)] BarChartTable.create_table(data) BarChartTable.show_result()
def test_match(self): self._algorithm.get_pattern = Mock(return_value="lamil") self._algorithm.get_results = Mock( side_effect=[[5], [], [], [10], [], [], [4], [], []]) lf = LineFeeder(self._algorithm, self._filename) self.assertEqual([5, 44, 87], lf.get_results())
def test_no_match(self): self._algorithm.get_pattern = Mock(return_value="aaaaa") self._algorithm.get_results = Mock(return_value=[]) lf = LineFeeder(self._algorithm, self._filename) self.assertEqual([], lf.get_results())