Skip to content

Commit d7593fb

Browse files
authored
Merge pull request #992 from surajdm123/add-tests
Added JUnit test cases for HTTPTokener
2 parents 1eed44a + 7ac773b commit d7593fb

File tree

1 file changed

+107
-0
lines changed

1 file changed

+107
-0
lines changed
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
package org.json.junit;
2+
3+
import org.json.HTTPTokener;
4+
import org.json.JSONException;
5+
import org.junit.Test;
6+
7+
import static org.junit.Assert.*;
8+
/**
9+
* Tests for JSON-Java HTTPTokener.java
10+
*/
11+
public class HTTPTokenerTest {
12+
13+
/**
14+
* Test parsing a simple unquoted token.
15+
*/
16+
@Test
17+
public void parseSimpleToken() {
18+
HTTPTokener tokener = new HTTPTokener("Content-Type");
19+
String token = tokener.nextToken();
20+
assertEquals("Content-Type", token);
21+
}
22+
23+
/**
24+
* Test parsing multiple tokens separated by whitespace.
25+
*/
26+
@Test
27+
public void parseMultipleTokens() {
28+
HTTPTokener tokener = new HTTPTokener("Content-Type application/json");
29+
String token1 = tokener.nextToken();
30+
String token2 = tokener.nextToken();
31+
assertEquals("Content-Type", token1);
32+
assertEquals("application/json", token2);
33+
}
34+
35+
/**
36+
* Test parsing a double-quoted token.
37+
*/
38+
@Test
39+
public void parseDoubleQuotedToken() {
40+
HTTPTokener tokener = new HTTPTokener("\"application/json\"");
41+
String token = tokener.nextToken();
42+
assertEquals("application/json", token);
43+
}
44+
45+
/**
46+
* Test parsing a single-quoted token.
47+
*/
48+
@Test
49+
public void parseSingleQuotedToken() {
50+
HTTPTokener tokener = new HTTPTokener("'application/json'");
51+
String token = tokener.nextToken();
52+
assertEquals("application/json", token);
53+
}
54+
55+
/**
56+
* Test parsing a quoted token that includes spaces and semicolons.
57+
*/
58+
@Test
59+
public void parseQuotedTokenWithSpaces() {
60+
HTTPTokener tokener = new HTTPTokener("\"text/html; charset=UTF-8\"");
61+
String token = tokener.nextToken();
62+
assertEquals("text/html; charset=UTF-8", token);
63+
}
64+
65+
/**
66+
* Test that unterminated quoted strings throw a JSONException.
67+
*/
68+
@Test
69+
public void throwExceptionOnUnterminatedString() {
70+
HTTPTokener tokener = new HTTPTokener("\"incomplete");
71+
JSONException exception = assertThrows(JSONException.class, tokener::nextToken);
72+
assertTrue(exception.getMessage().contains("Unterminated string"));
73+
}
74+
75+
/**
76+
* Test behavior with empty input string.
77+
*/
78+
@Test
79+
public void parseEmptyInput() {
80+
HTTPTokener tokener = new HTTPTokener("");
81+
String token = tokener.nextToken();
82+
assertEquals("", token);
83+
}
84+
85+
/**
86+
* Test behavior with input consisting only of whitespace.
87+
*/
88+
@Test
89+
public void parseWhitespaceOnly() {
90+
HTTPTokener tokener = new HTTPTokener(" \t \n ");
91+
String token = tokener.nextToken();
92+
assertEquals("", token);
93+
}
94+
95+
/**
96+
* Test parsing tokens separated by multiple whitespace characters.
97+
*/
98+
@Test
99+
public void parseTokensWithMultipleWhitespace() {
100+
HTTPTokener tokener = new HTTPTokener("GET /index.html");
101+
String method = tokener.nextToken();
102+
String path = tokener.nextToken();
103+
assertEquals("GET", method);
104+
assertEquals("/index.html", path);
105+
}
106+
107+
}

0 commit comments

Comments
 (0)