From cd63600e0670890ce636c3d1b837fd1ca3b426c9 Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Thu, 29 Jan 2026 23:12:45 +0000 Subject: [PATCH] Add test configuration and CLI tests --- tests/test_analyzers.py | 160 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 tests/test_analyzers.py diff --git a/tests/test_analyzers.py b/tests/test_analyzers.py new file mode 100644 index 0000000..b7159d9 --- /dev/null +++ b/tests/test_analyzers.py @@ -0,0 +1,160 @@ +"""Tests for language analyzers and parsers.""" + +import pytest +from pathlib import Path + +from src.analyzers import PythonParser, JavaScriptParser, TypeScriptParser, ParserFactory + + +class TestPythonParser: + """Tests for Python parser.""" + + def setup_method(self): + self.parser = PythonParser() + + def test_parses_simple_function(self): + code = """ +def hello(): + print("Hello") +""" + tree = self.parser.parse(code) + assert tree is not None + assert tree.root_node is not None + + def test_extracts_functions(self): + code = """ +def foo(): + pass + +def bar(): + pass +""" + tree = self.parser.parse(code) + functions = self.parser.get_functions(tree.root_node) + assert len(functions) == 2 + + def test_extracts_calls(self): + code = """ +foo() +bar() +""" + tree = self.parser.parse(code) + calls = self.parser.get_calls(tree.root_node) + assert len(calls) == 2 + + def test_extracts_strings(self): + code = ''' +name = "hello" +message = 'world' +''' + tree = self.parser.parse(code) + strings = self.parser.get_strings(tree.root_node) + assert len(strings) >= 2 + + def test_language_name(self): + assert self.parser.language_name == "python" + + +class TestJavaScriptParser: + """Tests for JavaScript parser.""" + + def setup_method(self): + self.parser = JavaScriptParser() + + def test_parses_simple_function(self): + code = """ +function hello() { + console.log("Hello"); +} +""" + tree = self.parser.parse(code) + assert tree is not None + assert tree.root_node is not None + + def test_extracts_functions(self): + code = """ +function foo() {} +function bar() {} +""" + tree = self.parser.parse(code) + functions = self.parser.get_functions(tree.root_node) + assert len(functions) == 2 + + def test_extracts_calls(self): + code = """ +foo(); +bar(); +""" + tree = self.parser.parse(code) + calls = self.parser.get_calls(tree.root_node) + assert len(calls) == 2 + + def test_language_name(self): + assert self.parser.language_name == "javascript" + + +class TestTypeScriptParser: + """Tests for TypeScript parser.""" + + def setup_method(self): + self.parser = TypeScriptParser() + + def test_parses_simple_function(self): + code = """ +function hello(): void { + console.log("Hello"); +} +""" + tree = self.parser.parse(code) + assert tree is not None + assert tree.root_node is not None + + def test_extracts_functions(self): + code = """ +function foo(): void {} +function bar(): void {} +""" + tree = self.parser.parse(code) + functions = self.parser.get_functions(tree.root_node) + assert len(functions) == 2 + + def test_extracts_calls(self): + code = """ +foo(); +bar(); +""" + tree = self.parser.parse(code) + calls = self.parser.get_calls(tree.root_node) + assert len(calls) == 2 + + def test_language_name(self): + assert self.parser.language_name == "typescript" + + +class TestParserFactory: + """Tests for parser factory.""" + + def test_get_python_parser(self): + parser = ParserFactory.get_parser("python") + assert parser is not None + assert isinstance(parser, PythonParser) + + def test_get_javascript_parser(self): + parser = ParserFactory.get_parser("javascript") + assert parser is not None + assert isinstance(parser, JavaScriptParser) + + def test_get_typescript_parser(self): + parser = ParserFactory.get_parser("typescript") + assert parser is not None + assert isinstance(parser, TypeScriptParser) + + def test_get_unknown_parser(self): + parser = ParserFactory.get_parser("unknown") + assert parser is None + + def test_supported_languages(self): + languages = ParserFactory.supported_languages() + assert "python" in languages + assert "javascript" in languages + assert "typescript" in languages