/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package com.facebook.react.bridge;
import java.io.IOException;
import java.io.StringWriter;
import org.junit.Test;
import static org.fest.assertions.api.Assertions.assertThat;
public class JsonWriterTest {
private final StringWriter mStringWriter;
private final JsonWriter mWriter;
public JsonWriterTest() {
mStringWriter = new StringWriter();
mWriter = new JsonWriter(mStringWriter);
}
@Test
public void emptyObject() throws IOException {
mWriter.beginObject();
mWriter.endObject();
verify("{}");
}
@Test
public void emptyNestedObject() throws IOException {
mWriter.beginObject();
mWriter.beginObject();
mWriter.endObject();
mWriter.endObject();
verify("{{}}");
}
@Test
public void emptyArray() throws IOException {
mWriter.beginArray();
mWriter.endArray();
verify("[]");
}
@Test
public void emptyNestedArray() throws IOException {
mWriter.beginArray();
mWriter.beginArray();
mWriter.endArray();
mWriter.endArray();
verify("[[]]");
}
@Test
public void smallObject() throws IOException {
mWriter.beginObject();
mWriter.name("hello").value(true);
mWriter.name("hello_again").value("hi!");
mWriter.endObject();
verify("{\"hello\":true,\"hello_again\":\"hi!\"}");
}
@Test
public void smallArray() throws IOException {
mWriter.beginArray();
mWriter.value(true);
mWriter.value(1);
mWriter.value(1.0);
mWriter.value("hi!");
mWriter.endArray();
verify("[true,1,1.0,\"hi!\"]");
}
@Test
public void string() throws IOException {
mWriter.beginObject();
mWriter.name("string").value("hello!");
mWriter.endObject();
verify("{\"string\":\"hello!\"}");
}
@Test
public void complexString() throws IOException {
mWriter.beginObject();
mWriter.name("string").value("\t\uD83D\uDCA9");
mWriter.endObject();
verify("{\"string\":\"\\t\uD83D\uDCA9\"}");
}
private void verify(String expected) throws IOException {
mWriter.close();
assertThat(mStringWriter.getBuffer().toString()).isEqualTo(expected);
}
}