Skip to content

Commit

Permalink
Merge pull request #51 from techatpark/perf-prep
Browse files Browse the repository at this point in the history
Welcome Test cases
  • Loading branch information
rmhari committed Feb 29, 2024
2 parents ec91f1d + bfffc88 commit 96b716a
Show file tree
Hide file tree
Showing 8 changed files with 66 additions and 22 deletions.
5 changes: 3 additions & 2 deletions src/main/java/com/techatpark/sjson/core/ArrayParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import java.util.List;

import static com.techatpark.sjson.core.util.ReaderUtil.getCharacter;
import static com.techatpark.sjson.core.util.ReaderUtil.nextClean;

public final class ArrayParser {

Expand All @@ -29,15 +30,15 @@ public static List<Object> getArray(final Reader reader,
final Object value = contentExtractor.getValue();
// If not Empty Array
if (value == contentExtractor) {
contentExtractor.moveCursorToNextClean();
contentExtractor.setCursor(nextClean(reader));
return Collections.emptyList();
}
final List<Object> list = new ArrayList<>();
list.add(value);
while (!endOfArray(reader, contentExtractor)) {
list.add(contentExtractor.getValue());
}
contentExtractor.moveCursorToNextClean();
contentExtractor.setCursor(nextClean(reader));
return list;
}
/**
Expand Down
17 changes: 3 additions & 14 deletions src/main/java/com/techatpark/sjson/core/Json.java
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,8 @@ private ContentExtractor(final Reader theReader) {
*/
Object getValue() throws IOException {
// 1. move to the first clean character to determine the Data type
final char character = moveCursorToNextClean();
final char character = nextClean(reader);
setCursor(character);
// 2. Call corresponding get methods based on the type
return switch (character) {
case '"' -> getString(reader);
Expand All @@ -219,23 +220,11 @@ Object getValue() throws IOException {
};
}

/**
* Skip Spaces and land reader at the valid character.
*
* @return valid character
* @throws IOException
*/
char moveCursorToNextClean() throws IOException {
char character = nextClean(this.reader);
setCursor(character);
return character;
}

/**
* Sets Cursor at given Character.
* @param character
*/
public void setCursor(final Character character) {
public void setCursor(final char character) {
cursor = character;
}

Expand Down
5 changes: 3 additions & 2 deletions src/main/java/com/techatpark/sjson/core/ObjectParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

import static com.techatpark.sjson.core.StringParser.getString;
import static com.techatpark.sjson.core.util.ReaderUtil.next;
import static com.techatpark.sjson.core.util.ReaderUtil.nextClean;
import static com.techatpark.sjson.core.util.ReaderUtil.getCharacter;

public final class ObjectParser {
Expand All @@ -32,7 +33,7 @@ public static Map<String, Object> getObject(final Reader reader,
boolean eoo = endOfObject(reader, contentExtractor);
// This is Empty Object
if (eoo) {
contentExtractor.moveCursorToNextClean();
contentExtractor.setCursor(nextClean(reader));
return Collections.emptyMap();
}
final Map<String, Object> jsonMap = new HashMap<>();
Expand All @@ -44,7 +45,7 @@ public static Map<String, Object> getObject(final Reader reader,
contentExtractor.getValue());
eoo = endOfObject(reader, contentExtractor);
}
contentExtractor.moveCursorToNextClean();
contentExtractor.setCursor(nextClean(reader));
return jsonMap;
}

Expand Down
57 changes: 57 additions & 0 deletions src/test/java/com/techatpark/sjson/core/BooleanParserTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package com.techatpark.sjson.core;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

import java.io.IOException;
import java.io.StringReader;

import static org.junit.jupiter.api.Assertions.assertThrows;

/**
* Tests for Boolean Parsers.
*/
class BooleanParserTest {

final ObjectMapper objectMapper = new ObjectMapper();

/**
* Tests Valid Boolean Values.
* <p>
* Steps:
* 1) Pass valid boolean value ( originalValue ).
* 2) Get JSON String from Jackson.
* 3) Read JSON String as Java Object using SJson.
* <p>
* Expected Result:
* This value should be equal to originalValue.
* @param originalValue - Valid Boolean Value
* @throws IOException
*/
@ParameterizedTest
@ValueSource(booleans = {true, false})
void testValid(final Boolean originalValue) throws IOException {
String jsonString = objectMapper.writeValueAsString(originalValue);
Assertions.assertEquals(originalValue ,
new Json().read(new StringReader(jsonString)));
}
/**
* Tests invalid Boolean Values.
* <p>
* Steps:
* 1) Pass invalid boolean value ( invalidJson ).
* 3) Read JSON String as Java Object using SJson.
* <p>
* Expected Result:
* IllegalArgumentException should be thrown .
* @param invalidJson - Valid Boolean Value
*/
@ParameterizedTest
@ValueSource(strings = {"tru", "fals"})
void testInvalid(final String invalidJson) {
assertThrows(IllegalArgumentException.class,
() -> new Json().read(new StringReader(invalidJson)));
}
}
1 change: 0 additions & 1 deletion src/test/resources/illegal/false.json

This file was deleted.

1 change: 0 additions & 1 deletion src/test/resources/illegal/true.json

This file was deleted.

1 change: 0 additions & 1 deletion src/test/resources/samples/false.json

This file was deleted.

1 change: 0 additions & 1 deletion src/test/resources/samples/true.json

This file was deleted.

0 comments on commit 96b716a

Please sign in to comment.