From 3bc09ff86fd4fbd989e50bdc4796e4f39f5c2541 Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Mon, 2 Feb 2026 14:00:03 +0000 Subject: [PATCH] Add test configuration and parser/language detector tests --- tests/test_language_detector.py | 77 +++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 tests/test_language_detector.py diff --git a/tests/test_language_detector.py b/tests/test_language_detector.py new file mode 100644 index 0000000..7fd5212 --- /dev/null +++ b/tests/test_language_detector.py @@ -0,0 +1,77 @@ +"""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