mirror of
https://github.com/ethauvin/JSON-java.git
synced 2025-06-17 07:50:52 -07:00
More test cases for position information
This commit is contained in:
parent
47ff774f5c
commit
899cf528df
1 changed files with 43 additions and 0 deletions
|
@ -1,6 +1,8 @@
|
||||||
package org.json.junit;
|
package org.json.junit;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
import static org.junit.Assert.fail;
|
import static org.junit.Assert.fail;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
|
@ -121,7 +123,12 @@ public class JSONTokenerTest {
|
||||||
@Test
|
@Test
|
||||||
public void testNextBackComboWithNewLines() {
|
public void testNextBackComboWithNewLines() {
|
||||||
final String testString = "this is\nA test\r\nWith some different\rNew Lines";
|
final String testString = "this is\nA test\r\nWith some different\rNew Lines";
|
||||||
|
// ^ ^ ^ ^
|
||||||
|
// index positions 0 8 16 36
|
||||||
final JSONTokener tokener = new JSONTokener(testString);
|
final JSONTokener tokener = new JSONTokener(testString);
|
||||||
|
assertEquals(" at 0 [character 1 line 1]", tokener.toString());
|
||||||
|
assertEquals('t',tokener.next());
|
||||||
|
assertEquals(" at 1 [character 2 line 1]", tokener.toString());
|
||||||
tokener.skipTo('\n');
|
tokener.skipTo('\n');
|
||||||
assertEquals("skipTo() improperly modifying indexes"," at 7 [character 8 line 1]", tokener.toString());
|
assertEquals("skipTo() improperly modifying indexes"," at 7 [character 8 line 1]", tokener.toString());
|
||||||
assertEquals('\n',tokener.next());
|
assertEquals('\n',tokener.next());
|
||||||
|
@ -132,10 +139,12 @@ public class JSONTokenerTest {
|
||||||
assertEquals(" at 8 [character 0 line 2]", tokener.toString());
|
assertEquals(" at 8 [character 0 line 2]", tokener.toString());
|
||||||
tokener.skipTo('\r');
|
tokener.skipTo('\r');
|
||||||
assertEquals("skipTo() improperly modifying indexes"," at 14 [character 6 line 2]", tokener.toString());
|
assertEquals("skipTo() improperly modifying indexes"," at 14 [character 6 line 2]", tokener.toString());
|
||||||
|
// verify \r\n combo doesn't increment the line twice
|
||||||
assertEquals('\r', tokener.next());
|
assertEquals('\r', tokener.next());
|
||||||
assertEquals(" at 15 [character 0 line 3]", tokener.toString());
|
assertEquals(" at 15 [character 0 line 3]", tokener.toString());
|
||||||
assertEquals('\n', tokener.next());
|
assertEquals('\n', tokener.next());
|
||||||
assertEquals(" at 16 [character 0 line 3]", tokener.toString());
|
assertEquals(" at 16 [character 0 line 3]", tokener.toString());
|
||||||
|
// verify stepping back after reading the \n of an \r\n combo doesn't increment the line incorrectly
|
||||||
tokener.back();
|
tokener.back();
|
||||||
assertEquals(" at 15 [character 6 line 2]", tokener.toString());
|
assertEquals(" at 15 [character 6 line 2]", tokener.toString());
|
||||||
assertEquals('\n', tokener.next());
|
assertEquals('\n', tokener.next());
|
||||||
|
@ -154,5 +163,39 @@ public class JSONTokenerTest {
|
||||||
assertEquals(" at 36 [character 0 line 4]", tokener.toString());
|
assertEquals(" at 36 [character 0 line 4]", tokener.toString());
|
||||||
assertEquals('N', tokener.next());
|
assertEquals('N', tokener.next());
|
||||||
assertEquals(" at 37 [character 1 line 4]", tokener.toString());
|
assertEquals(" at 37 [character 1 line 4]", tokener.toString());
|
||||||
|
|
||||||
|
// verify we get the same data just walking though, no calls to back
|
||||||
|
final JSONTokener t2 = new JSONTokener(testString);
|
||||||
|
for(int i=0; i<7; i++) {
|
||||||
|
assertTrue(t2.toString().startsWith(" at " + i + " "));
|
||||||
|
assertEquals(testString.charAt(i), t2.next());
|
||||||
|
}
|
||||||
|
assertEquals(" at 7 [character 8 line 1]", t2.toString());
|
||||||
|
assertEquals(testString.charAt(7), t2.next());
|
||||||
|
assertEquals(" at 8 [character 0 line 2]", t2.toString());
|
||||||
|
for(int i=8; i<14; i++) {
|
||||||
|
assertTrue(t2.toString().startsWith(" at " + i + " "));
|
||||||
|
assertEquals(testString.charAt(i), t2.next());
|
||||||
|
}
|
||||||
|
assertEquals(" at 14 [character 6 line 2]", t2.toString());
|
||||||
|
assertEquals('\r', t2.next());
|
||||||
|
assertEquals(" at 15 [character 0 line 3]", t2.toString());
|
||||||
|
assertEquals('\n', t2.next());
|
||||||
|
assertEquals(" at 16 [character 0 line 3]", t2.toString());
|
||||||
|
assertEquals('W', t2.next());
|
||||||
|
assertEquals(" at 17 [character 1 line 3]", t2.toString());
|
||||||
|
for(int i=17; i<37; i++) {
|
||||||
|
assertTrue(t2.toString().startsWith(" at " + i + " "));
|
||||||
|
assertEquals(testString.charAt(i), t2.next());
|
||||||
|
}
|
||||||
|
assertEquals(" at 37 [character 1 line 4]", t2.toString());
|
||||||
|
for(int i=37; i<testString.length(); i++) {
|
||||||
|
assertTrue(t2.toString().startsWith(" at " + i + " "));
|
||||||
|
assertEquals(testString.charAt(i), t2.next());
|
||||||
|
}
|
||||||
|
assertEquals(" at "+ testString.length() +" [character 9 line 4]", t2.toString());
|
||||||
|
// end of the input
|
||||||
|
assertEquals(0, t2.next());
|
||||||
|
assertFalse(t2.more());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue