def test_display_addr_refs_no_offset(): """should display n/a for offset when there are no offset bits""" refs = sim.get_addr_refs( word_addrs=WORD_ADDRS, num_addr_bits=8, num_tag_bits=4, num_index_bits=4, num_offset_bits=0) ref_statuses = ['miss'] * 12 out = io.StringIO() with contextlib.redirect_stdout(out): sim.display_addr_refs(refs, ref_statuses) table_output = out.getvalue() nose.assert_regexp_matches( table_output, r'\s*{}\s*{}\s*{}'.format( '\d\d', 'n/a', 'miss'))
def test_display_addr_refs(): """should display table of address references""" refs = sim.get_addr_refs( word_addrs=WORD_ADDRS, num_addr_bits=8, num_tag_bits=5, num_index_bits=2, num_offset_bits=1) ref_statuses = ['miss', 'miss', 'HIT', 'miss'] out = io.StringIO() with contextlib.redirect_stdout(out): sim.display_addr_refs(refs, ref_statuses) table_output = out.getvalue() num_cols = 6 col_width = TABLE_WIDTH // num_cols nose.assert_regexp_matches( table_output, r'{}\s*{}\s*{}\s*{}\s*{}\s*{}\n{}'.format( 'WordAddr'.rjust(col_width), 'BinAddr'.rjust(col_width), 'Tag'.rjust(col_width), 'Index'.rjust(col_width), 'Offset'.rjust(col_width), 'Hit/Miss'.rjust(col_width), ('-' * TABLE_WIDTH))) nose.assert_regexp_matches( table_output, r'{}\s*{}\s*{}\s*{}\s*{}\s*{}'.format( '253'.rjust(col_width), '1111 1101'.rjust(col_width), '11111'.rjust(col_width), '10'.rjust(col_width), '1'.rjust(col_width), 'HIT'.rjust(col_width)))