"""Tests for the LanguageDetector module.""" import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent.parent / 'src')) from gdiffer.language_detector import LanguageDetector, detect_language class TestLanguageDetector: def test_detect_python_extension(self, language_detector): assert language_detector.detect_from_filename("test.py") == "python" assert language_detector.detect_from_filename("script.pyw") == "python" def test_detect_javascript_extension(self, language_detector): assert language_detector.detect_from_filename("app.js") == "javascript" assert language_detector.detect_from_filename("component.tsx") == "typescript" def test_detect_java_extension(self, language_detector): assert language_detector.detect_from_filename("Main.java") == "java" def test_detect_go_extension(self, language_detector): assert language_detector.detect_from_filename("main.go") == "go" def test_detect_rust_extension(self, language_detector): assert language_detector.detect_from_filename("lib.rs") == "rust" def test_detect_c_extensions(self, language_detector): assert language_detector.detect_from_filename("file.c") == "c" assert language_detector.detect_from_filename("source.cpp") == "cpp" def test_detect_ruby_extension(self, language_detector): assert language_detector.detect_from_filename("script.rb") == "ruby" def test_detect_php_extension(self, language_detector): assert language_detector.detect_from_filename("index.php") == "php" def test_detect_unknown_extension(self, language_detector): assert language_detector.detect_from_filename("file.xyz") is None assert language_detector.detect_from_filename("README") is None def test_detect_from_content_python(self, language_detector): code = """def hello(): return "Hello" """ assert language_detector.detect_from_content(code) == "python" def test_detect_from_content_javascript(self, language_detector): code = """function greet(name) { return "Hello"; }""" assert language_detector.detect_from_content(code) == "javascript" def test_detect_combined_filename_content(self, language_detector): result = language_detector.detect("test.py", "def hello(): pass") assert result == "python" def test_get_supported_languages(self, language_detector): languages = language_detector.get_supported_languages() assert "python" in languages assert "javascript" in languages assert "java" in languages def test_is_language_supported(self, language_detector): assert language_detector.is_language_supported("python") assert not language_detector.is_language_supported("brainfuck") class TestDetectLanguageFunction: def test_detect_language_python(self): result = detect_language("script.py", "def test(): pass") assert result == "python" def test_detect_language_unknown(self): result = detect_language("file.xyz", "") assert result == "text" or result is None