mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +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
 |