@@ -52,6 +52,57 @@ class TestEmailAddressDetector:
52
52
('user@gmail.com' , True ),
53
53
('user@yahoo.com' , True ),
54
54
('user@hotmail.com' , True ),
55
+
56
+ # Additional test cases
57
+
58
+ # Valid email addresses with different domain extensions
59
+ ('user@domain.co.uk' , True ),
60
+ ('user@domain.io' , True ),
61
+ ('user@domain.org' , True ),
62
+ ('user@sub.domain.com' , True ),
63
+
64
+ # Valid email addresses with numbers
65
+ ('user123@example.com' , True ),
66
+ ('123user@example.com' , True ),
67
+ ('user123@123example.com' , True ),
68
+
69
+ # Valid email addresses, part of larger text with special characters
70
+ ('Contact us at: user@example.com!' , True ),
71
+ ('Email: user@example.com for more info.' , True ),
72
+
73
+ # Invalid email addresses with missing components
74
+ ('user@example' , False ),
75
+ ('user@.example.com' , False ),
76
+ ('@example.com' , False ),
77
+ ('user@' , False ),
78
+
79
+ # Invalid email addresses with special characters
80
+ ('user@exa*mple.com' , False ),
81
+ ('user@examp!e.com' , False ),
82
+ ('user@exampl$.com' , False ),
83
+ ('user@exam^ple.com' , False ),
84
+
85
+ # Unusual formats, mark as false
86
+ ('"user"@example.com' , False ), # Quoted local part
87
+ ('user@[123.123.123.123]' , False ), # IP address domain
88
+
89
+ # Invalid email addresses, incorrect use of special characters
90
+ ('user@exa,mple.com' , False ),
91
+ ('user@examp<le.com' , False ),
92
+ ('user@exampl>com' , False ),
93
+ ('user@exampl;e.com' , False ),
94
+
95
+ # Edge cases - rare but valid email formats
96
+ ('user+mailbox/department=shipping@example.com' , True ),
97
+ ('customer/department=shipping@example.com' , True ),
98
+ ('!def!xyz%abc@example.com' , True ),
99
+ ('_Yosemite.Sam@example.com' , True ),
100
+
101
+ # Edge cases - position of . (dot)
102
+ ('user@example..com' , False ), # Double dot in domain
103
+ ('.user@example.com' , True ), # Leading dot in local part
104
+ ('user@.example.com' , False ), # Leading dot in domain
105
+ ('user@example.com.' , True ), # Trailing dot in domain
55
106
],
56
107
)
57
108
def test_analyze_line (self , payload , should_flag ):
0 commit comments