File size: 1,503 Bytes
03a907a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import pytest
from dataset.problem_22.buggy import parse_and_validate_emails

def test_parse_and_validate_emails():
    emails = [
        "user1@example.com",
        "user2@test.org",
        "invalid_email@example.com ",  # Trailing space
        "bad-format.com",             # No @ symbol
        "user@notallowed.com",        # Not in allowed domains
        "user_3@example.com"
    ]
    
    allowed_domains = {"example.com", "test.org"}
    
    result = parse_and_validate_emails(emails, allowed_domains)
    
    # valid_emails: "user1@example.com", "user2@test.org", "user_3@example.com"
    # "invalid_email@example.com " should be valid after trimming space
    assert len(result['valid_emails']) == 4
    assert "invalid_email@example.com" in result['valid_emails']
    
    # invalid_emails: "bad-format.com", "user@notallowed.com"
    assert len(result['invalid_emails']) == 2
    assert "bad-format.com" in result['invalid_emails']
    assert "user@notallowed.com" in result['invalid_emails']
    
    # domain_counts
    assert isinstance(result['domain_counts'], dict)
    assert result['domain_counts']['example.com'] == 3
    assert result['domain_counts']['test.org'] == 1
    
def test_empty_list():
    result = parse_and_validate_emails([], {"example.com"})
    assert result['valid_emails'] == []
    assert result['invalid_emails'] == []
    assert isinstance(result['domain_counts'], dict)
    assert len(result['domain_counts']) == 0