1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.puppycrawl.tools.checkstyle.bdd;
21
22 import java.util.Objects;
23 import java.util.regex.Pattern;
24
25
26
27
28
29
30
31 public record TestInputViolation(int lineNo, String message)
32 implements Comparable<TestInputViolation> {
33
34
35 private static final Pattern OPEN_CURLY_PATTERN = Pattern.compile("\\{");
36
37
38 private static final Pattern OPEN_PAREN_PATTERN = Pattern.compile("\\(");
39
40
41 private static final Pattern CLOSE_PAREN_PATTERN = Pattern.compile("\\)");
42
43
44 public int getLineNo() {
45 return lineNo;
46 }
47
48
49 public String getMessage() {
50 return message;
51 }
52
53
54
55
56
57
58 public String toRegex() {
59 String regex = lineNo + ":(?:\\d+:)?\\s.*";
60 if (message != null) {
61 String rawMessage = message;
62 rawMessage = OPEN_CURLY_PATTERN.matcher(rawMessage).replaceAll("\\\\{");
63 rawMessage = OPEN_PAREN_PATTERN.matcher(rawMessage).replaceAll("\\\\(");
64 rawMessage = CLOSE_PAREN_PATTERN.matcher(rawMessage).replaceAll("\\\\)");
65 regex += rawMessage + ".*";
66 }
67 return regex;
68 }
69
70 @Override
71 public int compareTo(TestInputViolation other) {
72 final int result;
73 if (message != null && lineNo == other.lineNo) {
74 result = message.compareTo(other.message);
75 }
76 else {
77 result = Integer.compare(lineNo, other.lineNo);
78 }
79 return result;
80 }
81
82 @Override
83 public int hashCode() {
84 return Objects.hash(lineNo);
85 }
86
87 @Override
88 public boolean equals(Object object) {
89 return getClass() == object.getClass() && compareTo((TestInputViolation) object) == 0;
90 }
91 }