from data import regexes import re import unittest class TestRegexes(unittest.TestCase): def test_contains(self): pattern = {"pattern": "ABC123"} self.assertTrue(regexes.contains("ABC123TESTSTRING", pattern)) # Beginning self.assertTrue(regexes.contains("TESTABC123STRING", pattern)) # Middle self.assertTrue(regexes.contains("TESTSTRINGABC123", pattern)) # End self.assertTrue(regexes.contains("ABC123", pattern)) # Entire string self.assertFalse(regexes.contains("aBC123TESTSTRING", pattern)) # Wrong casing self.assertFalse(regexes.contains("SOMETHING ELSE", pattern)) # No match # Add case insensitive flag pattern["flags"] = re.IGNORECASE self.assertTrue(regexes.contains("aBC123TESTSTRING", pattern)) # Incorrect casing should now pass def test_steam_codes(self): self.assertTrue(regexes.contains("AAAAA-BBBBB-CCCCC", regexes.STEAM_CODE)) # Only letters self.assertTrue(regexes.contains("11111-22222-33333", regexes.STEAM_CODE)) # Only numbers self.assertTrue(regexes.contains("ABC12-34DEF-GHI56", regexes.STEAM_CODE)) # Both self.assertTrue(regexes.contains("abcde-fghij-lmnop", regexes.STEAM_CODE)) # Case insensitive flag self.assertTrue(regexes.contains("AAAAAA-BBBBB-CCCCC", regexes.STEAM_CODE)) # Extra characters can be in front self.assertFalse(regexes.contains("A-BBBBB-CCCCC", regexes.STEAM_CODE)) # First group is too small self.assertFalse(regexes.contains("AAAAA-BBBBBB-CCCCC", regexes.STEAM_CODE)) # Second group is too big self.assertFalse(regexes.contains("AA??A-#ù$B6-!ÈCMa", regexes.STEAM_CODE)) # Invalid characters self.assertFalse(regexes.contains("Something something communism", regexes.STEAM_CODE)) # Random string