diff --git a/tests/test_examples.py b/tests/test_examples.py index d05e0b4..05bf1da 100644 --- a/tests/test_examples.py +++ b/tests/test_examples.py @@ -1,17 +1,19 @@ """Tests for the examples module.""" -import pytest - from regex_humanizer.examples import generate_examples, generate_match_examples class TestGenerateExamples: + """Tests for the generate_examples function.""" + def test_generate_literal_examples(self): + """Test generating examples for a literal pattern.""" examples = generate_examples("hello", count=3) assert len(examples) >= 1 assert "hello" in examples def test_generate_character_class_examples(self): + """Test generating examples for a character class.""" examples = generate_examples("[abc]", count=5) assert len(examples) > 0 for example in examples: @@ -19,35 +21,79 @@ class TestGenerateExamples: assert example in "abc" def test_generate_quantifier_examples(self): + """Test generating examples for a quantifier pattern.""" examples = generate_examples("a*", count=3) assert len(examples) >= 1 for example in examples: assert all(c == "a" for c in example) def test_generate_digit_examples(self): + """Test generating examples for digit pattern.""" examples = generate_examples(r"\d+", count=3) assert len(examples) >= 1 for example in examples: assert example.isdigit() def test_generate_word_examples(self): + """Test generating examples for word character pattern.""" examples = generate_examples(r"\w+", count=3) assert len(examples) >= 1 for example in examples: assert example.replace("_", "").isalnum() def test_generate_alternation_examples(self): + """Test generating examples for alternation.""" examples = generate_examples("foo|bar", count=3) assert len(examples) >= 1 for example in examples: assert example in ("foo", "bar") def test_generate_complex_pattern_examples(self): + """Test generating examples for a complex pattern.""" examples = generate_examples(r"\d{3}-\d{4}", count=3) assert len(examples) >= 1 for example in examples: assert "-" in example + def test_generate_with_count(self): + """Test that the count parameter works.""" + examples = generate_examples("a", count=5) + assert len(examples) <= 5 + def test_generate_invalid_pattern(self): + """Test generating examples for an invalid pattern.""" examples = generate_examples("[unclosed", count=3) assert examples == [] + + def test_generate_email_examples(self): + """Test generating examples for an email pattern.""" + examples = generate_examples(r"\w+@\w+\.\w+", count=3) + assert len(examples) >= 1 + for example in examples: + assert "@" in example + assert "." in example.split("@")[1] + + +class TestGenerateMatchExamples: + """Tests for the generate_match_examples function.""" + + def test_generate_matches_from_string(self): + """Test generating matches from a test string.""" + examples = generate_match_examples(r"\d+", "abc123def456ghi", count=3) + assert len(examples) >= 1 + assert "123" in examples or "456" in examples + + def test_generate_matches_no_match(self): + """Test generating matches when no match found.""" + examples = generate_match_examples(r"\d+", "abcdef", count=3) + assert examples == [] + + def test_generate_matches_count(self): + """Test that count limits results.""" + examples = generate_match_examples(r"\w+", "one two three four five", count=2) + assert len(examples) <= 2 + + def test_generate_matches_complex(self): + """Test generating matches for complex pattern.""" + examples = generate_match_examples(r"\b\w+@[\w.]", "contact: test@example.com, support@company.org", count=3) + assert len(examples) >= 1