mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
test_classify_ambiguous_languages was not running any test, since it was looking only for languages that are ambiguous on filename for known filenames (rather than ambiguous for filename or extension). Note that test time and assertions. Before: Finished in 0.149294s, 40.1892 runs/s, 46.8874 assertions/s. After: Finished in 3.043109s, 1.9717 runs/s, 224.7702 assertions/s.
64 lines
2.1 KiB
Ruby
64 lines
2.1 KiB
Ruby
require_relative "./helper"
|
|
|
|
class TestClassifier < Minitest::Test
|
|
include Linguist
|
|
|
|
def fixture(name)
|
|
File.read(File.join(samples_path, name))
|
|
end
|
|
|
|
def test_classify
|
|
db = {}
|
|
Classifier.train! db, "Ruby", fixture("Ruby/foo.rb")
|
|
Classifier.train! db, "Objective-C", fixture("Objective-C/Foo.h")
|
|
Classifier.train! db, "Objective-C", fixture("Objective-C/Foo.m")
|
|
|
|
results = Classifier.classify(db, fixture("Objective-C/hello.m"))
|
|
assert_equal "Objective-C", results.first[0]
|
|
|
|
tokens = Tokenizer.tokenize(fixture("Objective-C/hello.m"))
|
|
results = Classifier.classify(db, tokens)
|
|
assert_equal "Objective-C", results.first[0]
|
|
end
|
|
|
|
def test_restricted_classify
|
|
db = {}
|
|
Classifier.train! db, "Ruby", fixture("Ruby/foo.rb")
|
|
Classifier.train! db, "Objective-C", fixture("Objective-C/Foo.h")
|
|
Classifier.train! db, "Objective-C", fixture("Objective-C/Foo.m")
|
|
|
|
results = Classifier.classify(db, fixture("Objective-C/hello.m"), ["Objective-C"])
|
|
assert_equal "Objective-C", results.first[0]
|
|
|
|
results = Classifier.classify(db, fixture("Objective-C/hello.m"), ["Ruby"])
|
|
assert_equal "Ruby", results.first[0]
|
|
end
|
|
|
|
def test_instance_classify_empty
|
|
results = Classifier.classify(Samples.cache, "")
|
|
assert results.first[1] < 0.5, results.first.inspect
|
|
end
|
|
|
|
def test_instance_classify_nil
|
|
assert_equal [], Classifier.classify(Samples.cache, nil)
|
|
end
|
|
|
|
def test_classify_ambiguous_languages
|
|
Samples.each do |sample|
|
|
language = Linguist::Language.find_by_name(sample[:language])
|
|
languages = Language.find_by_filename(sample[:path]).map(&:name)
|
|
next if languages.length == 1
|
|
|
|
languages = Language.find_by_extension(sample[:path]).map(&:name)
|
|
next if languages.length <= 1
|
|
|
|
results = Classifier.classify(Samples.cache, File.read(sample[:path]), languages)
|
|
assert_equal language.name, results.first[0], "#{sample[:path]}\n#{results.inspect}"
|
|
end
|
|
end
|
|
|
|
def test_classify_empty_languages
|
|
assert_equal [], Classifier.classify(Samples.cache, fixture("Ruby/foo.rb"), [])
|
|
end
|
|
end
|