diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/irb/test_ruby_lex.rb | 129 |
1 files changed, 71 insertions, 58 deletions
diff --git a/test/irb/test_ruby_lex.rb b/test/irb/test_ruby_lex.rb index e4dea3d662..d9b1418cbe 100644 --- a/test/irb/test_ruby_lex.rb +++ b/test/irb/test_ruby_lex.rb @@ -10,14 +10,15 @@ module TestIRB Row = Struct.new(:content, :current_line_spaces, :new_line_spaces, :nesting_level) class MockIO_AutoIndent - def initialize(params, &assertion) + attr_reader :calculated_indent + + def initialize(*params) @params = params - @assertion = assertion + @calculated_indent end def auto_indent(&block) - result = block.call(*@params) - @assertion.call(result) + @calculated_indent = block.call(*@params) end end @@ -29,20 +30,56 @@ module TestIRB restore_encodings end - def assert_indenting(lines, correct_space_count, add_new_line) + def calculate_indenting(lines, add_new_line) lines = lines + [""] if add_new_line last_line_index = lines.length - 1 byte_pointer = lines.last.length context = build_context context.auto_indent_mode = true + ruby_lex = RubyLex.new(context) - io = MockIO_AutoIndent.new([lines, last_line_index, byte_pointer, add_new_line]) do |auto_indent| - error_message = "Calculated the wrong number of spaces for:\n #{lines.join("\n")}" - assert_equal(correct_space_count, auto_indent, error_message) - end - ruby_lex.set_input(io) + mock_io = MockIO_AutoIndent.new(lines, last_line_index, byte_pointer, add_new_line) + + ruby_lex.set_input(mock_io) ruby_lex.set_auto_indent + mock_io.calculated_indent + end + + def assert_row_indenting(lines, row) + actual_current_line_spaces = calculate_indenting(lines, false) + + error_message = <<~MSG + Incorrect spaces calculation for line: + + ``` + > #{lines.last} + ``` + + All lines: + + ``` + #{lines.join("\n")} + ``` + MSG + assert_equal(row.current_line_spaces, actual_current_line_spaces, error_message) + + error_message = <<~MSG + Incorrect spaces calculation for line after the current line: + + ``` + #{lines.last} + > + ``` + + All lines: + + ``` + #{lines.join("\n")} + ``` + MSG + actual_next_line_spaces = calculate_indenting(lines, true) + assert_equal(row.new_line_spaces, actual_next_line_spaces, error_message) end def assert_nesting_level(lines, expected, local_variables: []) @@ -108,8 +145,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) end end @@ -124,8 +160,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) end end @@ -143,8 +178,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) end end @@ -157,8 +191,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) end end @@ -177,8 +210,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) end end @@ -253,8 +285,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) end end @@ -266,8 +297,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) end end @@ -279,8 +309,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) end end @@ -292,8 +321,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) end end @@ -319,8 +347,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) end end @@ -350,8 +377,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) end end @@ -366,8 +392,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) assert_nesting_level(lines, row.nesting_level) end end @@ -387,8 +412,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) assert_nesting_level(lines, row.nesting_level) end end @@ -436,8 +460,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) assert_nesting_level(lines, row.nesting_level) end end @@ -452,8 +475,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) assert_nesting_level(lines, row.nesting_level) end end @@ -468,8 +490,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) assert_nesting_level(lines, row.nesting_level) end end @@ -485,8 +506,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) assert_nesting_level(lines, row.nesting_level) end end @@ -501,8 +521,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) assert_nesting_level(lines, row.nesting_level) end end @@ -517,8 +536,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) assert_nesting_level(lines, row.nesting_level) end end @@ -533,8 +551,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) assert_nesting_level(lines, row.nesting_level) end end @@ -549,8 +566,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) assert_nesting_level(lines, row.nesting_level) end end @@ -575,8 +591,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) assert_nesting_level(lines, row.nesting_level) end end @@ -592,8 +607,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) assert_nesting_level(lines, row.nesting_level) end end @@ -611,8 +625,7 @@ module TestIRB lines = [] input_with_correct_indents.each do |row| lines << row.content - assert_indenting(lines, row.current_line_spaces, false) - assert_indenting(lines, row.new_line_spaces, true) + assert_row_indenting(lines, row) assert_nesting_level(lines, row.nesting_level) end end |
