TestJSONValue.java

package net.minidev.json.test.unit;

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

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.StringReader;
import net.minidev.json.JSONValue;
import org.junit.jupiter.api.Test;

/**
 * improve coverage for
 *
 * @see JSONValue
 */
public class TestJSONValue {

  static void Parse4Times(String text, Object expected) {
    Object ret = JSONValue.parse(text);
    assertEquals(ret, expected);

    byte[] b = text.getBytes();
    ret = JSONValue.parse(b);
    assertEquals(ret, expected);

    InputStream stream = new ByteArrayInputStream(b);
    ret = JSONValue.parse(stream);
    assertEquals(ret, expected);

    StringReader reader = new StringReader(text);
    ret = JSONValue.parse(reader);
    assertEquals(ret, expected);
  }

  static void Parse4TimesAs(String text, Object expected, Class<?> toClass) {
    Object ret = JSONValue.parse(text, toClass);
    assertEquals(ret, expected);

    byte[] b = text.getBytes();
    ret = JSONValue.parse(b, toClass);
    assertEquals(ret, expected);

    InputStream stream = new ByteArrayInputStream(b);
    ret = JSONValue.parse(stream, toClass);
    assertEquals(ret, expected);

    StringReader reader = new StringReader(text);
    ret = JSONValue.parse(reader, toClass);
    assertEquals(ret, expected);
  }

  /** all error are dropped as null */
  @Test
  public void testParseHideErrorString() {
    Parse4Times("{\"key\"", null);
    Parse4Times("\"key\"", "key");

    Parse4TimesAs("{\"key\"", null, String.class);
    Parse4TimesAs("\"key\"", "key", String.class);
  }
}