def test_render_first_items(self): """ Test we render properly when stuck to the top """ os.environ['TERM'] = 'dumb' app = Logria(None, False, False) # Fake window size: 10 x 100 app.height = 10 app.width = 100 # Set fake previous render app.last_row = app.height - 3 # simulate the last row we can render to app.current_end = 80 # Simulate the last message rendered # Set fake messages app.messages = [str(x) for x in range(100)] # Set positional booleans app.manually_controlled_line = False app.stick_to_top = True app.stick_to_bottom = False start, end = determine_position(app, app.messages) self.assertEqual(start, -1) self.assertEqual(end, 6) app.stop()
def test_can_render_matches(self): """ Test we render properly when using matches """ os.environ['TERM'] = 'dumb' app = Logria(None, False, False) # Fake window size: 10 x 100 app.height = 10 app.width = 100 # Set fake previous render app.last_row = app.height - 3 # simulate the last row we can render to app.current_end = 80 # Simulate the last message rendered # Set fake messages app.messages = [f'{x}|{x}' for x in range(20)] # Set fake filter app.func_handle = regex_generator.regex_test_generator(r'\d\|\d') process_matches(app) # Set positional booleans app.manually_controlled_line = False app.stick_to_top = True app.stick_to_bottom = False start, end = determine_position(app, app.matched_rows) self.assertEqual(start, -1) self.assertEqual(end, 6) app.stop()
def test_render_scroll_pgup_keystroke(self): """ Test we render properly when stuck to the bottom """ os.environ['TERM'] = 'dumb' app = Logria(None, False, False) # Fake window size: 10 x 100 app.height = 10 app.width = 100 # Set fake previous render app.last_row = app.height - 3 # simulate the last row we can render to app.current_end = 40 # Simulate the last message rendered # Set fake messages app.messages = [str(x) for x in range(100)] # Set positional booleans app.manually_controlled_line = False app.stick_to_top = True app.stick_to_bottom = True # Scroll action resolve_keypress(app, 'KEY_PPAGE') start, end = determine_position(app, app.messages) self.assertEqual(start, 25) self.assertEqual(end, 33) app.stop()
def test_process_parser_analytics_count(self): """ Test that we correctly process parser with count metric """ os.environ['TERM'] = 'dumb' app = Logria(None, False, False) # Fake window size: 10 x 100 app.height = 10 app.width = 100 # Set fake previous render app.last_row = app.height - 3 # simulate the last row we can render to app.current_end = 80 # Simulate the last message rendered # Set fake messages app.messages = [str(x) for x in range(10)] app.parser_index = 0 app.last_index_processed = 0 app.analytics_enabled = True # Set parser, activate app.parser = Parser() app.parser.set_pattern( pattern=r'(\d)', type_='regex', name='Test', example='4', analytics_methods={ 'Item': 'count' } ) # Set analytics method manually app.parser._analytics_map = dict( zip(range(len(app.parser._analytics_methods.keys())), app.parser._analytics_methods.keys())) # Store previous message pointer app.previous_messages = app.messages # Process parser process_parser(app) self.assertEqual( app.messages, ['Item', ' 0: 1', ' 1: 1', ' 2: 1', ' 3: 1', ' 4: 1'])
def test_process_parser_invalid_index(self): """ Test that we correctly process parser with invalid index """ os.environ['TERM'] = 'dumb' app = Logria(None, False, False) # Fake window size: 10 x 100 app.height = 10 app.width = 100 # Set fake previous render app.last_row = app.height - 3 # simulate the last row we can render to app.current_end = 80 # Simulate the last message rendered # Set fake messages app.messages = [f'{x}+{x}+{x}' for x in range(10)] app.parser_index = 3 app.last_index_processed = 0 # Set parser, activate app.parser = Parser() app.parser.set_pattern( pattern='\+', type_='split', name='Test', example='a-a', analytics_methods={ 'Item 1': 'count', 'Item 2': 'count' } ) # Store previous message pointer app.previous_messages = app.messages # Process parser process_parser(app) self.assertEqual(app.messages, [])
def test_process_parser_analytics_average_no_numbers(self): """ Test that we correctly process a parser with average metric but no source numbers """ os.environ['TERM'] = 'dumb' app = Logria(None, False, False) # Fake window size: 10 x 100 app.height = 10 app.width = 100 # Set fake previous render app.last_row = app.height - 3 # simulate the last row we can render to app.current_end = 80 # Simulate the last message rendered # Set fake messages app.messages = [chr(x) for x in range(64, 80)] app.parser_index = 0 app.last_index_processed = 0 app.analytics_enabled = True # Set parser, activate app.parser = Parser() app.parser.set_pattern( pattern=r'(\d)', type_='regex', name='Test', example='4', analytics_methods={ 'Item': 'average' } ) # Set analytics method manually app.parser._analytics_map = dict( zip(range(len(app.parser._analytics_methods.keys())), app.parser._analytics_methods.keys())) # Since we manually construct alaytics, create the the key app.parser.analytics[0] = None self.assertIsNone(app.parser.apply_analytics(0, 'A'))
def test_process_parser_no_analytics(self): """ Test that we correctly process parser with no analytics """ os.environ['TERM'] = 'dumb' app = Logria(None, False, False) # Fake window size: 10 x 100 app.height = 10 app.width = 100 # Set fake previous render app.last_row = app.height - 3 # simulate the last row we can render to app.current_end = 80 # Simulate the last message rendered # Set fake messages app.messages = [str(x) for x in range(10)] app.parser_index = 0 app.last_index_processed = 0 # Set parser, activate app.parser = Parser() app.parser.set_pattern( pattern=r'(\d)', type_='regex', name='Test', example='4', analytics_methods={ 'Item': 'average' } ) # Store previous message pointer app.previous_messages = app.messages # Process parser process_parser(app) self.assertEqual(app.messages, [str(x) for x in range(10)])
def test_process_matches(self): """ Test that we correctly process matches """ os.environ['TERM'] = 'dumb' app = Logria(None, False, False) # Fake window size: 10 x 100 app.height = 10 app.width = 100 # Set fake previous render app.last_row = app.height - 3 # simulate the last row we can render to app.current_end = 80 # Simulate the last message rendered # Set fake messages app.messages = [str(x) for x in range(20)] # Set regex function, process app.func_handle = regex_generator.regex_test_generator(r'\d') process_matches(app) self.assertEqual(app.messages, [str(x) for x in range(20)])