TestJSONArrayTest.java

package net.minidev.json.test.unit;

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

import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import net.minidev.json.JSONArray;
import net.minidev.json.JSONStyle;
import org.junit.jupiter.api.Test;

/** Test serialization of JSONArray to max coverage increase JSONArray coverage from 47% to 100% */
public class TestJSONArrayTest {

  @Test
  public void testAlloc() {
    // test default constructor
    JSONArray a = new JSONArray(12);
    assertEquals(0, a.size());
  }

  @Test
  public void testToJSONStringWithEmptyList() {
    String jsonString = JSONArray.toJSONString(new ArrayList<>());
    assertEquals("[]", jsonString);
  }

  @Test
  public void testAppendElement() throws IOException {
    JSONArray a = new JSONArray(1);
    a.appendElement(1);
    assertEquals("[1]", a.toJSONString(JSONStyle.MAX_COMPRESS));

    assertEquals("[1]", a.toString());

    assertEquals("[1]", a.toString(JSONStyle.MAX_COMPRESS));

    StringBuilder sb = new StringBuilder();
    a.writeJSONString(sb);
    assertEquals("[1]", sb.toString());

    sb = new StringBuilder();
    JSONArray.writeJSONString(Arrays.asList(1), sb);

    sb = new StringBuilder();
    JSONArray.writeJSONString(null, sb, JSONStyle.MAX_COMPRESS);
    assertEquals("null", sb.toString());
  }

  @Test
  public void testToJSONStringWithSingleElement() {
    List<Object> list = Arrays.asList(1);
    String jsonString = JSONArray.toJSONString(list);
    assertEquals("[1]", jsonString);
  }

  @Test
  public void testToJSONStringWithMultipleElements() {
    List<Object> list = Arrays.asList(1, "two", 3.0);
    String jsonString = JSONArray.toJSONString(list);
    assertEquals("[1,\"two\",3.0]", jsonString);
  }

  @Test
  public void testWriteJSONStringWithEmptyList() throws Exception {
    StringWriter out = new StringWriter();
    JSONArray.writeJSONString(new ArrayList<>(), out);
    assertEquals("[]", out.toString());
  }

  @Test
  public void testWriteJSONStringWithSingleElement() throws Exception {
    StringWriter out = new StringWriter();
    List<Object> list = Arrays.asList(1);
    JSONArray.writeJSONString(list, out);
    assertEquals("[1]", out.toString());
  }

  @Test
  public void testWriteJSONStringWithMultipleElements() throws Exception {
    StringWriter out = new StringWriter();
    List<Object> list = Arrays.asList(1, "two", 3.0);
    JSONArray.writeJSONString(list, out);
    assertEquals("[1,\"two\",3.0]", out.toString());
  }
}