6718c5a5355395b253e35147d04758d38bc6ec2f
[Sone.git] / src / test / java / net / pterodactylus / sone / template / JavascriptFilterTest.java
1 package net.pterodactylus.sone.template;
2
3 import static org.hamcrest.MatcherAssert.assertThat;
4 import static org.hamcrest.Matchers.is;
5
6 import net.pterodactylus.util.number.Hex;
7
8 import org.junit.Test;
9
10 /**
11  * Unit test for {@link JavascriptFilter}.
12  *
13  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
14  */
15 public class JavascriptFilterTest {
16
17         private final JavascriptFilter filter = new JavascriptFilter();
18
19         @Test
20         public void filterEscapesAllCharactersBelowSpace() {
21                 String source = buildStringWithAllCharactersToEscape();
22                 String target = buildStringWithEscapedCharacters();
23                 assertThat((String) filter.format(null, source, null), is("\"" + target + "\""));
24         }
25
26         private String buildStringWithAllCharactersToEscape() {
27                 StringBuilder stringBuilder = new StringBuilder();
28                 for (int i = 0; i < 32; i++) {
29                         stringBuilder.append((char) i);
30                 }
31                 stringBuilder.append('"').append("\\").append("!");
32                 return stringBuilder.toString();
33         }
34
35         private String buildStringWithEscapedCharacters() {
36                 StringBuilder stringBuilder = new StringBuilder();
37                 for (int i = 0; i < 32; i++) {
38                         switch (i) {
39                                 case 9:
40                                         stringBuilder.append("\\t");
41                                         break;
42                                 case 10:
43                                         stringBuilder.append("\\n");
44                                         break;
45                                 case 13:
46                                         stringBuilder.append("\\r");
47                                         break;
48                                 default:
49                                         stringBuilder.append("\\x").append(Hex.toHex(i, 2));
50                         }
51                 }
52                 stringBuilder.append("\\\"").append("\\\\").append("!");
53                 return stringBuilder.toString();
54         }
55
56 }