Skip to content

Commit 7c0fde5

Browse files
authored
More tests (#240)
1 parent 216c160 commit 7c0fde5

File tree

7 files changed

+208
-27
lines changed

7 files changed

+208
-27
lines changed

impl/core/src/main/java/com/github/skjolber/jsonfilter/core/pp/Indent.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,6 @@ public Builder withPreparedLevels(int preparedLevels) {
5151
return this;
5252
}
5353

54-
public Builder withoutLinebreak() {
55-
return withLinebreak(LinebreakType.NONE);
56-
}
57-
5854
public Builder withWindowsLinebreak() {
5955
return withLinebreak(LinebreakType.CarriageReturnLineFeed);
6056
}
@@ -190,9 +186,6 @@ public String asIndent() {
190186
}
191187

192188
public String asLinebreak() {
193-
if(linebreakType != null) {
194-
return linebreakType.characters;
195-
}
196-
return null;
189+
return linebreakType.characters;
197190
}
198191
}

impl/core/src/main/java/com/github/skjolber/jsonfilter/core/util/ByteArrayWhitespaceSizeFilter.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,11 @@ public void setMark(int mark) {
5252
this.mark = mark;
5353
}
5454

55-
public void setLimit(int limit) {
55+
public void setMaxSizeLimit(int limit) {
5656
this.limit = limit;
5757
}
5858

59-
public int getLimit() {
59+
public int getMaxSizeLimit() {
6060
return limit;
6161
}
6262

@@ -69,7 +69,7 @@ public int skipObjectOrArrayMaxSizeMaxStringLength(final byte[] chars, int offse
6969
int bracketLevel = getLevel();
7070
int levelLimit = bracketLevel - 1;
7171

72-
int maxSizeLimit = getLimit();
72+
int maxSizeLimit = getMaxSizeLimit();
7373

7474
boolean[] squareBrackets = getSquareBrackets();
7575

@@ -226,7 +226,7 @@ public int skipObjectOrArrayMaxSizeMaxStringLength(final byte[] chars, int offse
226226
setFlushOffset(flushOffset);
227227
setMark(mark);
228228
setLevel(bracketLevel);
229-
setLimit(maxSizeLimit);
229+
setMaxSizeLimit(maxSizeLimit);
230230

231231
return offset;
232232
}
@@ -235,7 +235,7 @@ public int anonymizeObjectOrArrayMaxSize(final byte[] chars, int offset, int max
235235
int levelLimit = getLevel() - 1;
236236
int bracketLevel = getLevel();
237237

238-
int maxSizeLimit = getLimit();
238+
int maxSizeLimit = getMaxSizeLimit();
239239

240240
boolean[] squareBrackets = getSquareBrackets();
241241

@@ -410,7 +410,7 @@ public int anonymizeObjectOrArrayMaxSize(final byte[] chars, int offset, int max
410410
setFlushOffset(flushOffset);
411411
setMark(mark);
412412
setLevel(bracketLevel);
413-
setLimit(maxSizeLimit);
413+
setMaxSizeLimit(maxSizeLimit);
414414

415415
return offset;
416416
}

impl/core/src/main/java/com/github/skjolber/jsonfilter/core/util/CharArrayWhitespaceSizeFilter.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,6 @@ public int getMaxSizeLimit() {
5959
return maxSizeLimit;
6060
}
6161

62-
public char[] getTruncateString() {
63-
return truncateMessage;
64-
}
65-
6662
public int skipObjectOrArrayMaxSizeMaxStringLength(final char[] chars, int offset, int maxReadLimit, final StringBuilder buffer, int maxStringLength, JsonFilterMetrics metrics) {
6763

6864
int bracketLevel = getLevel();

impl/core/src/main/java/com/github/skjolber/jsonfilter/core/ws/PathMaxStringLengthMaxSizeRemoveWhitespaceJsonFilter.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@ public boolean process(final byte[] chars, int offset, int length, final Resizab
439439

440440
ByteArrayWhitespaceSizeFilter filter = new ByteArrayWhitespaceSizeFilter(pruneJsonValueAsBytes, anonymizeJsonValueAsBytes, truncateStringValueAsBytes);
441441

442-
filter.setLimit(maxSizeLimit);
442+
filter.setMaxSizeLimit(maxSizeLimit);
443443

444444
processMaxSize(chars, offset, maxReadLimit, 0, output, 0, maxPathMatches, filter, metrics);
445445

@@ -466,7 +466,7 @@ protected void processMaxSize(final byte[] chars, int offset, int maxReadLimit,
466466

467467
int maxStringLength = this.maxStringLength;
468468

469-
int maxSizeLimit = filter.getLimit();
469+
int maxSizeLimit = filter.getMaxSizeLimit();
470470

471471
int flushOffset = filter.getFlushOffset();
472472
int mark = filter.getMark();
@@ -666,7 +666,7 @@ protected void processMaxSize(final byte[] chars, int offset, int maxReadLimit,
666666
filter.setLevel(bracketLevel);
667667
filter.setMark(nextOffset + 1);
668668

669-
filter.setLimit(maxSizeLimit);
669+
filter.setMaxSizeLimit(maxSizeLimit);
670670
filter.setFlushOffset(flushOffset);
671671
filter.setWrittenMark(streamMark);
672672

@@ -679,7 +679,7 @@ protected void processMaxSize(final byte[] chars, int offset, int maxReadLimit,
679679
streamMark = filter.getWrittenMark();
680680

681681
squareBrackets = filter.getSquareBrackets();
682-
maxSizeLimit = filter.getLimit();
682+
maxSizeLimit = filter.getMaxSizeLimit();
683683
} else if(chars[nextOffset] == '"') {
684684
flushOffset = nextOffset;
685685

@@ -737,7 +737,7 @@ protected void processMaxSize(final byte[] chars, int offset, int maxReadLimit,
737737
squareBrackets = filter.grow(squareBrackets);
738738
}
739739

740-
filter.setLimit(maxSizeLimit);
740+
filter.setMaxSizeLimit(maxSizeLimit);
741741
filter.setFlushOffset(flushOffset);
742742
filter.setLevel(bracketLevel);
743743
filter.setMark(nextOffset + 1);
@@ -750,7 +750,7 @@ protected void processMaxSize(final byte[] chars, int offset, int maxReadLimit,
750750
mark = filter.getMark();
751751
streamMark = filter.getWrittenMark();
752752
squareBrackets = filter.getSquareBrackets();
753-
maxSizeLimit = filter.getLimit();
753+
maxSizeLimit = filter.getMaxSizeLimit();
754754
} else {
755755
if(nextOffset + filter.getAnonymizeMessageLength() > maxSizeLimit) {
756756
offset = nextOffset;

impl/core/src/test/java/com/github/skjolber/jsonfilter/core/pp/IndentTest.java

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,54 @@
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
44

5+
import org.junit.jupiter.api.Assertions;
56
import org.junit.jupiter.api.Test;
67

78
public class IndentTest {
9+
10+
@Test
11+
public void testConstructors() {
12+
Assertions.assertThrows(
13+
IllegalArgumentException.class,
14+
() -> {
15+
new Indent(' ', -1, 0, LinebreakType.CarriageReturn);
16+
}
17+
);
18+
Assertions.assertThrows(
19+
IllegalArgumentException.class,
20+
() -> {
21+
new Indent(' ', 0, -1, LinebreakType.CarriageReturn);
22+
}
23+
);
24+
Assertions.assertThrows(
25+
IllegalArgumentException.class,
26+
() -> {
27+
new Indent(' ', 0, 0, null);
28+
}
29+
);
30+
}
831

932
@Test
1033
public void testSpaces() {
1134
Indent build = Indent.newBuilder().withSpace(2).withUnixLinebreak().build();
12-
1335
assertEquals(build.asIndent(), " ");
1436
}
1537

1638
@Test
1739
public void testTab() {
1840
Indent build = Indent.newBuilder().withTab().withUnixLinebreak().build();
19-
2041
assertEquals(build.asIndent(), "\t");
2142
}
2243

2344
@Test
2445
public void testWindows() {
2546
Indent build = Indent.newBuilder().withTab().withWindowsLinebreak().build();
26-
2747
assertEquals(build.asLinebreak(), "\r\n");
2848
}
2949

50+
@Test
51+
public void testPreparedLevels() {
52+
Indent build = Indent.newBuilder().withSpace(2).withUnixLinebreak().withPreparedLevels(64).build();
53+
assertEquals(build.asIndent(), " ");
54+
}
3055
}
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
package com.github.skjolber.jsonfilter.core.util;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
5+
import java.nio.charset.StandardCharsets;
6+
7+
import org.junit.jupiter.api.Test;
8+
9+
import com.github.skjolber.jsonfilter.ResizableByteArrayOutputStream;
10+
11+
public class ByteArrayWhitespaceSizeFilterTest {
12+
13+
@Test
14+
public void testDeepBrackets1() {
15+
ByteArrayWhitespaceSizeFilter filter = new ByteArrayWhitespaceSizeFilter("pruneMessage".getBytes(StandardCharsets.UTF_8), "anonymizeMessage".getBytes(StandardCharsets.UTF_8), "truncateMessage".getBytes(StandardCharsets.UTF_8));
16+
17+
String text = createBracket('{', '}', 100);
18+
19+
ResizableByteArrayOutputStream builder = new ResizableByteArrayOutputStream(1024);
20+
int offset = filter.skipObjectMaxStringLength(text.getBytes(StandardCharsets.UTF_8), 1, 1, builder, null);
21+
assertEquals(offset, 200);
22+
}
23+
24+
@Test
25+
public void testDeepBrackets2() {
26+
ByteArrayWhitespaceSizeFilter filter = new ByteArrayWhitespaceSizeFilter("pruneMessage".getBytes(StandardCharsets.UTF_8), "anonymizeMessage".getBytes(StandardCharsets.UTF_8), "truncateMessage".getBytes(StandardCharsets.UTF_8));
27+
28+
String text = createBracket('{', '}', 100);
29+
30+
ResizableByteArrayOutputStream builder = new ResizableByteArrayOutputStream(1024);
31+
filter.setMaxSizeLimit(200);
32+
int offset = filter.skipObjectOrArrayMaxSizeMaxStringLength(text.getBytes(StandardCharsets.UTF_8), 1, 200, builder, 1, null);
33+
assertEquals(offset, 200);
34+
}
35+
36+
@Test
37+
public void testDeepBrackets3() {
38+
ByteArrayWhitespaceSizeFilter filter = new ByteArrayWhitespaceSizeFilter("pruneMessage".getBytes(StandardCharsets.UTF_8), "anonymizeMessage".getBytes(StandardCharsets.UTF_8), "truncateMessage".getBytes(StandardCharsets.UTF_8));
39+
40+
String text = createBracket('[', ']', 100);
41+
42+
ResizableByteArrayOutputStream builder = new ResizableByteArrayOutputStream(1024);
43+
filter.setMaxSizeLimit(200);
44+
int offset = filter.skipObjectOrArrayMaxSizeMaxStringLength(text.getBytes(StandardCharsets.UTF_8), 1, 200, builder, 1, null);
45+
assertEquals(offset, 200);
46+
}
47+
48+
public String createBracket(char start, char end, int count) {
49+
StringBuilder builder = new StringBuilder();
50+
51+
for(int i = 0; i < count; i++) {
52+
builder.append(start);
53+
}
54+
for(int i = 0; i < count; i++) {
55+
builder.append(end);
56+
}
57+
58+
return builder.toString();
59+
}
60+
61+
@Test
62+
public void testLongKey() {
63+
ByteArrayWhitespaceSizeFilter filter = new ByteArrayWhitespaceSizeFilter("pruneMessage".getBytes(StandardCharsets.UTF_8), "anonymizeMessage".getBytes(StandardCharsets.UTF_8), "truncateMessage".getBytes(StandardCharsets.UTF_8));
64+
65+
String text = "{\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\":\"x\"}";
66+
67+
ResizableByteArrayOutputStream builder = new ResizableByteArrayOutputStream(1024);
68+
filter.setMaxSizeLimit(19);
69+
int offset = filter.skipObjectOrArrayMaxSizeMaxStringLength(text.getBytes(StandardCharsets.UTF_8), 1, 20, builder, 1, null);
70+
assertEquals(offset, text.length() - 4);
71+
}
72+
73+
74+
@Test
75+
public void testLongKeyWhitespace() {
76+
ByteArrayWhitespaceSizeFilter filter = new ByteArrayWhitespaceSizeFilter("pruneMessage".getBytes(StandardCharsets.UTF_8), "anonymizeMessage".getBytes(StandardCharsets.UTF_8), "truncateMessage".getBytes(StandardCharsets.UTF_8));
77+
78+
String text = "{\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\" : \"x\"}";
79+
80+
ResizableByteArrayOutputStream builder = new ResizableByteArrayOutputStream(1024);
81+
filter.setMaxSizeLimit(19);
82+
int offset = filter.skipObjectOrArrayMaxSizeMaxStringLength(text.getBytes(StandardCharsets.UTF_8), 1, 20, builder, 1, null);
83+
assertEquals(offset, text.length() - 4);
84+
}
85+
86+
87+
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package com.github.skjolber.jsonfilter.core.util;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
5+
import org.junit.jupiter.api.Test;
6+
7+
public class CharArrayWhitespaceSizeFilterTest {
8+
9+
@Test
10+
public void testDeepBrackets1() {
11+
CharArrayWhitespaceSizeFilter filter = new CharArrayWhitespaceSizeFilter("pruneMessage".toCharArray(), "anonymizeMessage".toCharArray(), "truncateMessage".toCharArray());
12+
13+
String text = createBracket('{', '}', 100);
14+
15+
StringBuilder builder = new StringBuilder();
16+
int offset = filter.skipObjectMaxStringLength(text.toCharArray(), 1, 1, builder, null);
17+
assertEquals(offset, 200);
18+
}
19+
20+
@Test
21+
public void testDeepBrackets2() {
22+
CharArrayWhitespaceSizeFilter filter = new CharArrayWhitespaceSizeFilter("pruneMessage".toCharArray(), "anonymizeMessage".toCharArray(), "truncateMessage".toCharArray());
23+
24+
String text = createBracket('{', '}', 100);
25+
26+
StringBuilder builder = new StringBuilder();
27+
filter.setMaxSizeLimit(200);
28+
int offset = filter.skipObjectOrArrayMaxSizeMaxStringLength(text.toCharArray(), 1, 200, builder, 1, null);
29+
assertEquals(offset, 200);
30+
}
31+
32+
@Test
33+
public void testDeepBrackets3() {
34+
CharArrayWhitespaceSizeFilter filter = new CharArrayWhitespaceSizeFilter("pruneMessage".toCharArray(), "anonymizeMessage".toCharArray(), "truncateMessage".toCharArray());
35+
36+
String text = createBracket('[', ']', 100);
37+
38+
StringBuilder builder = new StringBuilder();
39+
filter.setMaxSizeLimit(200);
40+
int offset = filter.skipObjectOrArrayMaxSizeMaxStringLength(text.toCharArray(), 1, 200, builder, 1, null);
41+
assertEquals(offset, 200);
42+
}
43+
44+
public String createBracket(char start, char end, int count) {
45+
StringBuilder builder = new StringBuilder();
46+
47+
for(int i = 0; i < count; i++) {
48+
builder.append(start);
49+
}
50+
for(int i = 0; i < count; i++) {
51+
builder.append(end);
52+
}
53+
54+
return builder.toString();
55+
}
56+
57+
@Test
58+
public void testLongKey() {
59+
CharArrayWhitespaceSizeFilter filter = new CharArrayWhitespaceSizeFilter("pruneMessage".toCharArray(), "anonymizeMessage".toCharArray(), "truncateMessage".toCharArray());
60+
61+
String text = "{\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\":\"x\"}";
62+
63+
StringBuilder builder = new StringBuilder();
64+
filter.setMaxSizeLimit(19);
65+
int offset = filter.skipObjectOrArrayMaxSizeMaxStringLength(text.toCharArray(), 1, 20, builder, 1, null);
66+
assertEquals(offset, text.length() - 4);
67+
}
68+
69+
@Test
70+
public void testLongKeyWhitespace() {
71+
CharArrayWhitespaceSizeFilter filter = new CharArrayWhitespaceSizeFilter("pruneMessage".toCharArray(), "anonymizeMessage".toCharArray(), "truncateMessage".toCharArray());
72+
73+
String text = "{\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\" : \"x\"}";
74+
75+
StringBuilder builder = new StringBuilder();
76+
filter.setMaxSizeLimit(19);
77+
int offset = filter.skipObjectOrArrayMaxSizeMaxStringLength(text.toCharArray(), 1, 20, builder, 1, null);
78+
assertEquals(offset, text.length() - 4);
79+
}
80+
}

0 commit comments

Comments
 (0)