"""Tests for ASCII generator.""" import pytest from termflow.exporters.ascii_generator import ASCIIGenerator, GitGraphGenerator class TestASCIIGenerator: """Test ASCII generator.""" def test_generate_empty(self): """Test generating empty diagram.""" gen = ASCIIGenerator() result = gen.generate_from_commands([]) assert result is not None def test_generate_single_command(self): """Test generating diagram with single command.""" gen = ASCIIGenerator() result = gen.generate_from_commands(["ls -la"]) assert "ls -la" in result def test_generate_multiple_commands(self): """Test generating diagram with multiple commands.""" gen = ASCIIGenerator() commands = ["ls -la", "cd /tmp", "pwd"] result = gen.generate_from_commands(commands) for cmd in commands: assert cmd in result def test_different_styles(self): """Test different visualization styles.""" commands = ["ls -la", "cd /tmp", "pwd"] for style in ["compact", "detailed", "minimal"]: gen = ASCIIGenerator(style=style) result = gen.generate_from_commands(commands, {"title": "Test"}) assert result is not None def test_with_metadata(self): """Test generating with metadata.""" gen = ASCIIGenerator() commands = ["ls -la", "cd /tmp"] metadata = {"title": "Test Session", "command_count": len(commands)} result = gen.generate_from_commands(commands, metadata) assert "Test Session" in result assert str(len(commands)) in result class TestGitGraphGenerator: """Test git graph generator.""" def test_generate_empty(self): """Test generating empty graph.""" gen = GitGraphGenerator() class MockParser: commits = [] result = gen.generate_from_parser(MockParser()) assert result is not None def test_generate_with_commits(self): """Test generating graph with commits.""" gen = GitGraphGenerator() class MockCommit: def __init__(self, hash, message): self.hash = hash self.message = message self.parents = [] class MockParser: commits = [MockCommit("abc123", "Initial commit"), MockCommit("def456", "Add feature")] result = gen.generate_from_parser(MockParser()) assert "abc123" in result assert "def456" in result