From 672a61b97fe0cdb256611c707e7cc69856208467 Mon Sep 17 00:00:00 2001 From: Yuki Nishijima Date: Mon, 23 Dec 2019 00:47:03 -0500 Subject: Port https://github.com/ruby/did_you_mean/commit/dd1dd86e6c3188c36224d5dd4389676e6653a727 --- test/did_you_mean/test_tree_spell_checker.rb | 173 +++++++++++++++++++++++++++ test/did_you_mean/tree_spell_checker_test.rb | 173 --------------------------- 2 files changed, 173 insertions(+), 173 deletions(-) create mode 100644 test/did_you_mean/test_tree_spell_checker.rb delete mode 100644 test/did_you_mean/tree_spell_checker_test.rb (limited to 'test') diff --git a/test/did_you_mean/test_tree_spell_checker.rb b/test/did_you_mean/test_tree_spell_checker.rb new file mode 100644 index 0000000000..b61a491e20 --- /dev/null +++ b/test/did_you_mean/test_tree_spell_checker.rb @@ -0,0 +1,173 @@ +require 'set' +require 'yaml' + +require_relative './helper' + +class TreeSpellCheckerTest < Test::Unit::TestCase + MINI_DIRECTORIES = YAML.load_file(File.expand_path('fixtures/mini_dir.yml', __dir__)) + RSPEC_DIRECTORIES = YAML.load_file(File.expand_path('fixtures/rspec_dir.yml', __dir__)) + + def setup + @dictionary = + %w( + spec/models/concerns/vixen_spec.rb + spec/models/concerns/abcd_spec.rb + spec/models/concerns/vixenus_spec.rb + spec/models/concerns/efgh_spec.rb + spec/modals/confirms/abcd_spec.rb + spec/modals/confirms/efgh_spec.rb + spec/models/gafafa_spec.rb + spec/models/gfsga_spec.rb + spec/controllers/vixen_controller_spec.rb + ) + @test_str = 'spek/modeks/confirns/viken_spec.rb' + @tsp = DidYouMean::TreeSpellChecker.new(dictionary: @dictionary) + end + + def test_corrupt_root + word = 'test/verbose_formatter_test.rb' + word_error = 'btets/cverbose_formatter_etst.rb suggestions' + tsp = DidYouMean::TreeSpellChecker.new(dictionary: MINI_DIRECTORIES) + s = tsp.correct(word_error).first + assert_match s, word + end + + def test_leafless_state + tsp = DidYouMean::TreeSpellChecker.new(dictionary: @dictionary.push('spec/features')) + word = 'spec/modals/confirms/efgh_spec.rb' + word_error = 'spec/modals/confirXX/efgh_spec.rb' + s = tsp.correct(word_error).first + assert_equal s, word + s = tsp.correct('spec/featuresXX') + assert_equal 'spec/features', s.first + end + + def test_rake_dictionary + dict = %w(parallel:prepare parallel:create parallel:rake parallel:migrate) + word_error = 'parallel:preprare' + tsp = DidYouMean::TreeSpellChecker.new(dictionary: dict, separator: ':') + s = tsp.correct(word_error).first + assert_match s, 'parallel:prepare' + end + + def test_special_words_mini + tsp = DidYouMean::TreeSpellChecker.new(dictionary: MINI_DIRECTORIES) + special_words_mini.each do |word, word_error| + s = tsp.correct(word_error).first + assert_match s, word + end + end + + def test_special_words_rspec + tsp = DidYouMean::TreeSpellChecker.new(dictionary: RSPEC_DIRECTORIES) + special_words_rspec.each do |word, word_error| + s = tsp.correct(word_error) + assert_match s.first, word + end + end + + def special_words_rspec + [ + ['spec/rspec/core/formatters/exception_presenter_spec.rb','spec/rspec/core/formatters/eception_presenter_spec.rb'], + ['spec/rspec/core/ordering_spec.rb', 'spec/spec/core/odrering_spec.rb'], + ['spec/rspec/core/metadata_spec.rb', 'spec/rspec/core/metadata_spe.crb'], + ['spec/support/mathn_integration_support.rb', 'spec/support/mathn_itegrtion_support.rb'] + ] + end + + def special_words_mini + [ + ['test/fixtures/book.rb', 'test/fixture/book.rb'], + ['test/fixtures/book.rb', 'test/fixture/book.rb'], + ['test/edit_distance/jaro_winkler_test.rb', 'test/edit_distace/jaro_winkler_test.rb'], + ['test/edit_distance/jaro_winkler_test.rb', 'teste/dit_distane/jaro_winkler_test.rb'], + ['test/fixtures/book.rb', 'test/fixturWes/book.rb'], + ['test/test_helper.rb', 'tes!t/test_helper.rb'], + ['test/fixtures/book.rb', 'test/hfixtures/book.rb'], + ['test/edit_distance/jaro_winkler_test.rb', 'test/eidt_distance/jaro_winkler_test.@rb'], + ['test/spell_checker_test.rb', 'test/spell_checke@r_test.rb'], + ['test/tree_spell_human_typo_test.rb', 'testt/ree_spell_human_typo_test.rb'], + ['test/spell_checking/variable_name_check_test.rb', 'test/spell_checking/vriabl_ename_check_test.rb'], + ['test/spell_checking/key_name_check_test.rb', 'tesit/spell_checking/key_name_choeck_test.rb'], + ['test/edit_distance/jaro_winkler_test.rb', 'test/edit_distance/jaro_winkler_tuest.rb'] + ] + end + + def test_file_in_root + word = 'test/spell_checker_test.rb' + word_error = 'test/spell_checker_test.r' + suggestions = DidYouMean::TreeSpellChecker.new(dictionary: MINI_DIRECTORIES).correct word_error + assert_equal word, suggestions.first + end + + def test_no_plausible_states + word_error = 'testspell_checker_test.rb' + suggestions = DidYouMean::TreeSpellChecker.new(dictionary: MINI_DIRECTORIES).correct word_error + assert_equal [], suggestions + end + + def test_no_plausible_states_with_augmentation + word_error = 'testspell_checker_test.rb' + suggestions = DidYouMean::TreeSpellChecker.new(dictionary: MINI_DIRECTORIES).correct word_error + assert_equal [], suggestions + suggestions = DidYouMean::TreeSpellChecker.new(dictionary: MINI_DIRECTORIES, augment: true).correct word_error + assert_equal 'test/spell_checker_test.rb', suggestions.first + end + + def test_no_idea_with_augmentation + word_error = 'test/spell_checking/key_name.rb' + suggestions = DidYouMean::TreeSpellChecker.new(dictionary: MINI_DIRECTORIES).correct word_error + assert_equal [], suggestions + suggestions = DidYouMean::TreeSpellChecker.new(dictionary: MINI_DIRECTORIES, augment: true).correct word_error + assert_equal 'test/spell_checking/key_name_check_test.rb', suggestions.first + end + + def test_works_out_suggestions + exp = ['spec/models/concerns/vixen_spec.rb', + 'spec/models/concerns/vixenus_spec.rb'] + suggestions = @tsp.correct(@test_str) + assert_equal suggestions.to_set, exp.to_set + end + + def test_works_when_input_is_correct + correct_input = 'spec/models/concerns/vixenus_spec.rb' + suggestions = @tsp.correct correct_input + assert_equal suggestions.first, correct_input + end + + def test_find_out_leaves_in_a_path + path = 'spec/modals/confirms' + names = @tsp.send(:find_leaves, path) + assert_equal names.to_set, %w(abcd_spec.rb efgh_spec.rb).to_set + end + + def test_works_out_nodes + exp_paths = ['spec/models/concerns', + 'spec/models/confirms', + 'spec/modals/concerns', + 'spec/modals/confirms', + 'spec/controllers/concerns', + 'spec/controllers/confirms'].to_set + states = @tsp.send(:parse_dimensions) + nodes = states[0].product(*states[1..-1]) + paths = @tsp.send(:possible_paths, nodes) + assert_equal paths.to_set, exp_paths.to_set + end + + def test_works_out_state_space + suggestions = @tsp.send(:plausible_dimensions, @test_str) + assert_equal suggestions, [["spec"], ["models", "modals"], ["confirms", "concerns"]] + end + + def test_parses_dictionary + states = @tsp.send(:parse_dimensions) + assert_equal states, [["spec"], ["models", "modals", "controllers"], ["concerns", "confirms"]] + end + + def test_parses_elementary_dictionary + dictionary = ['spec/models/user_spec.rb', 'spec/services/account_spec.rb'] + tsp = DidYouMean::TreeSpellChecker.new(dictionary: dictionary) + states = tsp.send(:parse_dimensions) + assert_equal states, [['spec'], ['models', 'services']] + end +end diff --git a/test/did_you_mean/tree_spell_checker_test.rb b/test/did_you_mean/tree_spell_checker_test.rb deleted file mode 100644 index b61a491e20..0000000000 --- a/test/did_you_mean/tree_spell_checker_test.rb +++ /dev/null @@ -1,173 +0,0 @@ -require 'set' -require 'yaml' - -require_relative './helper' - -class TreeSpellCheckerTest < Test::Unit::TestCase - MINI_DIRECTORIES = YAML.load_file(File.expand_path('fixtures/mini_dir.yml', __dir__)) - RSPEC_DIRECTORIES = YAML.load_file(File.expand_path('fixtures/rspec_dir.yml', __dir__)) - - def setup - @dictionary = - %w( - spec/models/concerns/vixen_spec.rb - spec/models/concerns/abcd_spec.rb - spec/models/concerns/vixenus_spec.rb - spec/models/concerns/efgh_spec.rb - spec/modals/confirms/abcd_spec.rb - spec/modals/confirms/efgh_spec.rb - spec/models/gafafa_spec.rb - spec/models/gfsga_spec.rb - spec/controllers/vixen_controller_spec.rb - ) - @test_str = 'spek/modeks/confirns/viken_spec.rb' - @tsp = DidYouMean::TreeSpellChecker.new(dictionary: @dictionary) - end - - def test_corrupt_root - word = 'test/verbose_formatter_test.rb' - word_error = 'btets/cverbose_formatter_etst.rb suggestions' - tsp = DidYouMean::TreeSpellChecker.new(dictionary: MINI_DIRECTORIES) - s = tsp.correct(word_error).first - assert_match s, word - end - - def test_leafless_state - tsp = DidYouMean::TreeSpellChecker.new(dictionary: @dictionary.push('spec/features')) - word = 'spec/modals/confirms/efgh_spec.rb' - word_error = 'spec/modals/confirXX/efgh_spec.rb' - s = tsp.correct(word_error).first - assert_equal s, word - s = tsp.correct('spec/featuresXX') - assert_equal 'spec/features', s.first - end - - def test_rake_dictionary - dict = %w(parallel:prepare parallel:create parallel:rake parallel:migrate) - word_error = 'parallel:preprare' - tsp = DidYouMean::TreeSpellChecker.new(dictionary: dict, separator: ':') - s = tsp.correct(word_error).first - assert_match s, 'parallel:prepare' - end - - def test_special_words_mini - tsp = DidYouMean::TreeSpellChecker.new(dictionary: MINI_DIRECTORIES) - special_words_mini.each do |word, word_error| - s = tsp.correct(word_error).first - assert_match s, word - end - end - - def test_special_words_rspec - tsp = DidYouMean::TreeSpellChecker.new(dictionary: RSPEC_DIRECTORIES) - special_words_rspec.each do |word, word_error| - s = tsp.correct(word_error) - assert_match s.first, word - end - end - - def special_words_rspec - [ - ['spec/rspec/core/formatters/exception_presenter_spec.rb','spec/rspec/core/formatters/eception_presenter_spec.rb'], - ['spec/rspec/core/ordering_spec.rb', 'spec/spec/core/odrering_spec.rb'], - ['spec/rspec/core/metadata_spec.rb', 'spec/rspec/core/metadata_spe.crb'], - ['spec/support/mathn_integration_support.rb', 'spec/support/mathn_itegrtion_support.rb'] - ] - end - - def special_words_mini - [ - ['test/fixtures/book.rb', 'test/fixture/book.rb'], - ['test/fixtures/book.rb', 'test/fixture/book.rb'], - ['test/edit_distance/jaro_winkler_test.rb', 'test/edit_distace/jaro_winkler_test.rb'], - ['test/edit_distance/jaro_winkler_test.rb', 'teste/dit_distane/jaro_winkler_test.rb'], - ['test/fixtures/book.rb', 'test/fixturWes/book.rb'], - ['test/test_helper.rb', 'tes!t/test_helper.rb'], - ['test/fixtures/book.rb', 'test/hfixtures/book.rb'], - ['test/edit_distance/jaro_winkler_test.rb', 'test/eidt_distance/jaro_winkler_test.@rb'], - ['test/spell_checker_test.rb', 'test/spell_checke@r_test.rb'], - ['test/tree_spell_human_typo_test.rb', 'testt/ree_spell_human_typo_test.rb'], - ['test/spell_checking/variable_name_check_test.rb', 'test/spell_checking/vriabl_ename_check_test.rb'], - ['test/spell_checking/key_name_check_test.rb', 'tesit/spell_checking/key_name_choeck_test.rb'], - ['test/edit_distance/jaro_winkler_test.rb', 'test/edit_distance/jaro_winkler_tuest.rb'] - ] - end - - def test_file_in_root - word = 'test/spell_checker_test.rb' - word_error = 'test/spell_checker_test.r' - suggestions = DidYouMean::TreeSpellChecker.new(dictionary: MINI_DIRECTORIES).correct word_error - assert_equal word, suggestions.first - end - - def test_no_plausible_states - word_error = 'testspell_checker_test.rb' - suggestions = DidYouMean::TreeSpellChecker.new(dictionary: MINI_DIRECTORIES).correct word_error - assert_equal [], suggestions - end - - def test_no_plausible_states_with_augmentation - word_error = 'testspell_checker_test.rb' - suggestions = DidYouMean::TreeSpellChecker.new(dictionary: MINI_DIRECTORIES).correct word_error - assert_equal [], suggestions - suggestions = DidYouMean::TreeSpellChecker.new(dictionary: MINI_DIRECTORIES, augment: true).correct word_error - assert_equal 'test/spell_checker_test.rb', suggestions.first - end - - def test_no_idea_with_augmentation - word_error = 'test/spell_checking/key_name.rb' - suggestions = DidYouMean::TreeSpellChecker.new(dictionary: MINI_DIRECTORIES).correct word_error - assert_equal [], suggestions - suggestions = DidYouMean::TreeSpellChecker.new(dictionary: MINI_DIRECTORIES, augment: true).correct word_error - assert_equal 'test/spell_checking/key_name_check_test.rb', suggestions.first - end - - def test_works_out_suggestions - exp = ['spec/models/concerns/vixen_spec.rb', - 'spec/models/concerns/vixenus_spec.rb'] - suggestions = @tsp.correct(@test_str) - assert_equal suggestions.to_set, exp.to_set - end - - def test_works_when_input_is_correct - correct_input = 'spec/models/concerns/vixenus_spec.rb' - suggestions = @tsp.correct correct_input - assert_equal suggestions.first, correct_input - end - - def test_find_out_leaves_in_a_path - path = 'spec/modals/confirms' - names = @tsp.send(:find_leaves, path) - assert_equal names.to_set, %w(abcd_spec.rb efgh_spec.rb).to_set - end - - def test_works_out_nodes - exp_paths = ['spec/models/concerns', - 'spec/models/confirms', - 'spec/modals/concerns', - 'spec/modals/confirms', - 'spec/controllers/concerns', - 'spec/controllers/confirms'].to_set - states = @tsp.send(:parse_dimensions) - nodes = states[0].product(*states[1..-1]) - paths = @tsp.send(:possible_paths, nodes) - assert_equal paths.to_set, exp_paths.to_set - end - - def test_works_out_state_space - suggestions = @tsp.send(:plausible_dimensions, @test_str) - assert_equal suggestions, [["spec"], ["models", "modals"], ["confirms", "concerns"]] - end - - def test_parses_dictionary - states = @tsp.send(:parse_dimensions) - assert_equal states, [["spec"], ["models", "modals", "controllers"], ["concerns", "confirms"]] - end - - def test_parses_elementary_dictionary - dictionary = ['spec/models/user_spec.rb', 'spec/services/account_spec.rb'] - tsp = DidYouMean::TreeSpellChecker.new(dictionary: dictionary) - states = tsp.send(:parse_dimensions) - assert_equal states, [['spec'], ['models', 'services']] - end -end -- cgit v1.2.3