JacksonFactoryTest.java

/*
 * Copyright 2012 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */

package com.google.api.client.json.jackson2;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;

import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.JsonParser;
import com.google.api.client.test.json.AbstractJsonFactoryTest;
import com.google.api.client.util.StringUtils;
import java.io.IOException;
import java.util.ArrayList;
import org.junit.Test;

/**
 * Tests {@link JacksonFactory}.
 *
 * @author Yaniv Inbar
 */
public class JacksonFactoryTest extends AbstractJsonFactoryTest {

  private static final String JSON_ENTRY_PRETTY =
      "{" + StringUtils.LINE_SEPARATOR + "  \"title\" : \"foo\"" + StringUtils.LINE_SEPARATOR + "}";
  private static final String JSON_FEED_PRETTY =
      "{"
          + StringUtils.LINE_SEPARATOR
          + "  \"entries\" : [ {"
          + StringUtils.LINE_SEPARATOR
          + "    \"title\" : \"foo\""
          + StringUtils.LINE_SEPARATOR
          + "  }, {"
          + StringUtils.LINE_SEPARATOR
          + "    \"title\" : \"bar\""
          + StringUtils.LINE_SEPARATOR
          + "  } ]"
          + StringUtils.LINE_SEPARATOR
          + "}";

  @Override
  protected JsonFactory newFactory() {
    return new JacksonFactory();
  }

  @Test
  public final void testToPrettyString_entry() throws Exception {
    Entry entry = new Entry();
    entry.title = "foo";
    assertEquals(JSON_ENTRY_PRETTY, newFactory().toPrettyString(entry));
  }

  @Test
  public final void testToPrettyString_Feed() throws Exception {
    Feed feed = new Feed();
    Entry entryFoo = new Entry();
    entryFoo.title = "foo";
    Entry entryBar = new Entry();
    entryBar.title = "bar";
    feed.entries = new ArrayList<Entry>();
    feed.entries.add(entryFoo);
    feed.entries.add(entryBar);
    assertEquals(JSON_FEED_PRETTY, newFactory().toPrettyString(feed));
  }

  @Test
  public final void testParse_directValue() throws Exception {
    JsonParser parser = newFactory().createJsonParser("123");
    assertEquals(123, parser.parse(Integer.class, true));
  }

  @Test
  public final void testGetByteValue() throws IOException {
    JsonParser parser = newFactory().createJsonParser("123");

    try {
      parser.getByteValue();
      fail("should throw IOException");
    } catch (IOException ex) {
      assertNotNull(ex.getMessage());
    }
  }
}