]>
Commit | Line | Data |
---|---|---|
abe05a73 XL |
1 | |
2 | ||
ea8adc8c XL |
3 | |
4 | #![allow(unused)] | |
5 | #![warn(invalid_regex, trivial_regex, regex_macro)] | |
6 | ||
7 | extern crate regex; | |
8 | ||
9 | use regex::{Regex, RegexSet, RegexBuilder}; | |
10 | use regex::bytes::{Regex as BRegex, RegexSet as BRegexSet, RegexBuilder as BRegexBuilder}; | |
11 | ||
abe05a73 XL |
12 | const OPENING_PAREN: &str = "("; |
13 | const NOT_A_REAL_REGEX: &str = "foobar"; | |
ea8adc8c XL |
14 | |
15 | fn syntax_error() { | |
16 | let pipe_in_wrong_position = Regex::new("|"); | |
17 | let pipe_in_wrong_position_builder = RegexBuilder::new("|"); | |
18 | let wrong_char_ranice = Regex::new("[z-a]"); | |
19 | let some_unicode = Regex::new("[é-è]"); | |
20 | ||
21 | let some_regex = Regex::new(OPENING_PAREN); | |
22 | ||
23 | let binary_pipe_in_wrong_position = BRegex::new("|"); | |
24 | let some_binary_regex = BRegex::new(OPENING_PAREN); | |
25 | let some_binary_regex_builder = BRegexBuilder::new(OPENING_PAREN); | |
26 | ||
27 | let closing_paren = ")"; | |
28 | let not_linted = Regex::new(closing_paren); | |
29 | ||
30 | let set = RegexSet::new(&[ | |
31 | r"[a-z]+@[a-z]+\.(com|org|net)", | |
32 | r"[a-z]+\.(com|org|net)", | |
33 | ]); | |
34 | let bset = BRegexSet::new(&[ | |
35 | r"[a-z]+@[a-z]+\.(com|org|net)", | |
36 | r"[a-z]+\.(com|org|net)", | |
37 | ]); | |
38 | ||
39 | let set_error = RegexSet::new(&[ | |
40 | OPENING_PAREN, | |
41 | r"[a-z]+\.(com|org|net)", | |
42 | ]); | |
43 | let bset_error = BRegexSet::new(&[ | |
44 | OPENING_PAREN, | |
45 | r"[a-z]+\.(com|org|net)", | |
46 | ]); | |
47 | } | |
48 | ||
49 | fn trivial_regex() { | |
50 | let trivial_eq = Regex::new("^foobar$"); | |
51 | ||
52 | let trivial_eq_builder = RegexBuilder::new("^foobar$"); | |
53 | ||
54 | let trivial_starts_with = Regex::new("^foobar"); | |
55 | ||
56 | let trivial_ends_with = Regex::new("foobar$"); | |
57 | ||
58 | let trivial_contains = Regex::new("foobar"); | |
59 | ||
60 | let trivial_contains = Regex::new(NOT_A_REAL_REGEX); | |
61 | ||
62 | let trivial_backslash = Regex::new("a\\.b"); | |
63 | ||
64 | // unlikely corner cases | |
65 | let trivial_empty = Regex::new(""); | |
66 | ||
67 | let trivial_empty = Regex::new("^"); | |
68 | ||
69 | let trivial_empty = Regex::new("^$"); | |
70 | ||
71 | let binary_trivial_empty = BRegex::new("^$"); | |
72 | ||
73 | // non-trivial regexes | |
74 | let non_trivial_dot = Regex::new("a.b"); | |
75 | let non_trivial_dot_builder = RegexBuilder::new("a.b"); | |
76 | let non_trivial_eq = Regex::new("^foo|bar$"); | |
77 | let non_trivial_starts_with = Regex::new("^foo|bar"); | |
78 | let non_trivial_ends_with = Regex::new("^foo|bar"); | |
79 | let non_trivial_ends_with = Regex::new("foo|bar"); | |
80 | let non_trivial_binary = BRegex::new("foo|bar"); | |
81 | let non_trivial_binary_builder = BRegexBuilder::new("foo|bar"); | |
82 | } | |
83 | ||
84 | fn main() { | |
85 | syntax_error(); | |
86 | trivial_regex(); | |
87 | } |