Package net.opentsdb.utils

Source Code of net.opentsdb.utils.TestJSON

// This file is part of OpenTSDB.
// Copyright (C) 2013-2014  The OpenTSDB Authors.
//
// This program is free software: you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 2.1 of the License, or (at your
// option) any later version.  This program is distributed in the hope that it
// will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser
// General Public License for more details.  You should have received a copy
// of the GNU Lesser General Public License along with this program.  If not,
// see <http://www.gnu.org/licenses/>.
package net.opentsdb.utils;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.HashSet;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.core.type.TypeReference;
import org.junit.Test;

public final class TestJSON {

  @Test
  public void getMapperNotNull() {
    assertNotNull(JSON.getMapper());
  }
 
  @Test
  public void getFactoryNotNull() {
    assertNotNull(JSON.getFactory());
  }
 
  @Test
  public void mapperAllowNonNumerics() {
    assertTrue(JSON.getMapper().isEnabled(
        JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS));
  }
 
  // parseToObject - Strings && Class
  @Test
  public void parseToObjectStringUTFString() throws Exception {
    @SuppressWarnings("unchecked")
    HashMap<String, String> map = JSON.parseToObject(
        "{\"utf\":\"aériennes\",\"ascii\":\"aariennes\"}", HashMap.class);
    assertEquals("aériennes", map.get("utf"));
    assertEquals("aariennes", map.get("ascii"));
  }
 
  @Test
  public void parseToObjectStringAsciiString() throws Exception {
    @SuppressWarnings("unchecked")
    HashMap<String, String> map = JSON.parseToObject(
        "{\"utf\":\"aeriennes\",\"ascii\":\"aariennes\"}", HashMap.class);
    assertEquals("aeriennes", map.get("utf"));
    assertEquals("aariennes", map.get("ascii"));
  }
 
  @Test (expected = IllegalArgumentException.class)
  public void parseToObjectStringNull() throws Exception {
    JSON.parseToObject((String)null, HashMap.class);
  }
 
  @Test (expected = IllegalArgumentException.class)
  public void parseToObjectStringEmpty() throws Exception {
    JSON.parseToObject("", HashMap.class);
  }
 
  @Test (expected = IllegalArgumentException.class)
  public void parseToObjectStringBad() throws Exception {
    String json = "{\"notgonnafinish";
    JSON.parseToObject(json, HashMap.class);
  }
  @Test (expected = IllegalArgumentException.class)
  public void parseToObjectStringBadMap() throws Exception {
    JSON.parseToObject(
        "{\"utf\":\"aériennes\",\"ascii\":\"aariennes\"}", HashSet.class);
  }

  // parseToObject - Byte && Class
  public void parseToObjectByteUTFString() throws Exception {
    @SuppressWarnings("unchecked")
    HashMap<String, String> map = JSON.parseToObject(
        "{\"utf\":\"aériennes\",\"ascii\":\"aariennes\"}".getBytes(),
        HashMap.class);
    assertEquals("aériennes", map.get("utf"));
    assertEquals("aariennes", map.get("ascii"));
  }
 
  @Test
  public void parseToObjectByteString() throws Exception {
    @SuppressWarnings("unchecked")
    HashMap<String, String> map = JSON.parseToObject(
        "{\"utf\":\"aeriennes\",\"ascii\":\"aariennes\"}".getBytes(),
        HashMap.class);
    assertEquals("aeriennes", map.get("utf"));
    assertEquals("aariennes", map.get("ascii"));
  }
 
  @Test (expected = IllegalArgumentException.class)
  public void parseToObjectByteNull() throws Exception {
    byte[] json = null;
    JSON.parseToObject(json, HashMap.class);
  }

  @Test (expected = IllegalArgumentException.class)
  public void parseToObjectByteBad() throws Exception {
    byte[] json = "{\"notgonnafinish".getBytes();
    JSON.parseToObject(json, HashMap.class);
  }

  @Test (expected = IllegalArgumentException.class)
  public void parseToObjectByteBadMap() throws Exception {
    JSON.parseToObject(
        "{\"utf\":\"aériennes\",\"ascii\":\"aariennes\"}".getBytes(),
        HashSet.class);
  }

  //parseToObject - Strings && Type
  @Test
  public void parseToObjectStringTypeUTFString() throws Exception {
    HashMap<String, String> map = JSON.parseToObject(
        "{\"utf\":\"aériennes\",\"ascii\":\"aariennes\"}", getTRMap());
    assertEquals("aériennes", map.get("utf"));
    assertEquals("aariennes", map.get("ascii"));
  }
 
  @Test
  public void parseToObjectStringTypeAsciiString() throws Exception {
    HashMap<String, String> map = JSON.parseToObject(
        "{\"utf\":\"aeriennes\",\"ascii\":\"aariennes\"}", getTRMap());
    assertEquals("aeriennes", map.get("utf"));
    assertEquals("aariennes", map.get("ascii"));
  }
 
  @Test (expected = IllegalArgumentException.class)
  public void parseToObjectStringTypeNull() throws Exception {
    JSON.parseToObject((String)null, getTRMap());
  }
 
  @Test (expected = IllegalArgumentException.class)
  public void parseToObjectStringTypeEmpty() throws Exception {
    JSON.parseToObject("", getTRMap());
  }
 
  @Test (expected = IllegalArgumentException.class)
  public void parseToObjectStringTypeBad() throws Exception {
    JSON.parseToObject("{\"notgonnafinish", getTRMap());
  }

  @Test (expected = IllegalArgumentException.class)
  public void parseToObjectStringTypeBadMap() throws Exception {
    JSON.parseToObject(
        "{\"utf\":\"aériennes\",\"ascii\":\"aariennes\"}", getTRSet());
  }

  // parseToObject - Byte && Class
  public void parseToObjectByteTypeUTFString() throws Exception {
    HashMap<String, String> map =
      JSON.parseToObject(
          "{\"utf\":\"aériennes\",\"ascii\":\"aariennes\"}".getBytes(),
          getTRMap());
    assertEquals("aériennes", map.get("utf"));
    assertEquals("aariennes", map.get("ascii"));
  }
 
  @Test
  public void parseToObjectByteTypeString() throws Exception {
    HashMap<String, String> map =
      JSON.parseToObject(
          "{\"utf\":\"aeriennes\",\"ascii\":\"aariennes\"}".getBytes(),
          getTRMap());
    assertEquals("aeriennes", map.get("utf"));
    assertEquals("aariennes", map.get("ascii"));
  }
 
  @Test (expected = IllegalArgumentException.class)
  public void parseToObjectByteTypeNull() throws Exception {
    JSON.parseToObject((byte[])null, getTRMap());
  }

  @Test (expected = IllegalArgumentException.class)
  public void parseToObjectByteTypeBad() throws Exception {
    byte[] json = "{\"notgonnafinish".getBytes();
    JSON.parseToObject(json, getTRMap());
  }

  @Test (expected = IllegalArgumentException.class)
  public void parseToObjectByteTypeBadMap() throws Exception {
    JSON.parseToObject(
        "{\"utf\":\"aériennes\",\"ascii\":\"aariennes\"}".getBytes(),
        getTRSet());
  }

  // parseToStream - String
  @Test
  public void parseToStreamUTFString() throws Exception {
    JsonParser jp = JSON.parseToStream(
        "{\"utf\":\"aériennes\",\"ascii\":\"aariennes\"}");
    HashMap<String, String> map = this.parseToMap(jp);
    assertEquals("aériennes", map.get("utf"));
    assertEquals("aariennes", map.get("ascii"));
  }
 
  @Test
  public void parseToStreamASCIIString() throws Exception {
    JsonParser jp = JSON.parseToStream(
        "{\"utf\":\"aeriennes\",\"ascii\":\"aariennes\"}");
    HashMap<String, String> map = this.parseToMap(jp);
    assertEquals("aeriennes", map.get("utf"));
    assertEquals("aariennes", map.get("ascii"));
  }
 
  @Test (expected = IllegalArgumentException.class)
  public void parseToStreamStringNull() throws Exception {
    JSON.parseToStream((String)null);
  }
 
  @Test (expected = IllegalArgumentException.class)
  public void parseToStreamStringEmpty() throws Exception {
    JSON.parseToStream("");
  }

  @Test
  public void parseToStreamStringUnfinished() throws Exception {
    String json = "{\"notgonnafinish";
    JsonParser jp = JSON.parseToStream(json);
    assertNotNull(jp);
  }
 
  // parseToStream - Byte
  @Test
  public void parseToStreamUTFSByte() throws Exception {
    JsonParser jp = JSON.parseToStream(
        "{\"utf\":\"aériennes\",\"ascii\":\"aariennes\"}".getBytes("UTF8"));
    HashMap<String, String> map = this.parseToMap(jp);
    assertEquals("aériennes", map.get("utf"));
    assertEquals("aariennes", map.get("ascii"));
  }
 
  @Test
  public void parseToStreamASCIIByte() throws Exception {
    JsonParser jp = JSON.parseToStream(
        "{\"utf\":\"aeriennes\",\"ascii\":\"aariennes\"}".getBytes());
    HashMap<String, String> map = this.parseToMap(jp);
    assertEquals("aeriennes", map.get("utf"));
    assertEquals("aariennes", map.get("ascii"));
  }
 
  @Test (expected = IllegalArgumentException.class)
  public void parseToStreamByteNull() throws Exception {
    JSON.parseToStream((byte[])null);
  }

  // parseToStream - Stream
  @Test
  public void parseToStreamUTFSStream() throws Exception {
    InputStream is = new ByteArrayInputStream(
        "{\"utf\":\"aériennes\",\"ascii\":\"aariennes\"}".getBytes("UTF8"));
    HashMap<String, String> map = this.parseToMap(is);
    assertEquals("aériennes", map.get("utf"));
    assertEquals("aariennes", map.get("ascii"));
  }
 
  @Test
  public void parseToStreamASCIIStream() throws Exception {
    InputStream is = new ByteArrayInputStream(
        "{\"utf\":\"aeriennes\",\"ascii\":\"aariennes\"}".getBytes());
    HashMap<String, String> map = this.parseToMap(is);
    assertEquals("aeriennes", map.get("utf"));
    assertEquals("aariennes", map.get("ascii"));
  }
 
  @Test (expected = IllegalArgumentException.class)
  public void parseToStreamStreamNull() throws Exception {
    JSON.parseToStream((InputStream)null);
  }

  // serializeToString
  @Test
  public void serializeToString() throws Exception {
    HashMap<String, String> map = new HashMap<String, String>();
    map.put("utf", "aériennes");
    map.put("ascii", "aariennes");
    String json = JSON.serializeToString(map);
    assertNotNull(json);
    assertFalse(json.isEmpty());
    assertTrue(json.matches(".*[{,]\"ascii\":\"aariennes\"[,}].*"));
  }
 
  @Test (expected = IllegalArgumentException.class)
  public void serializeToStringNull() throws Exception {
    JSON.serializeToString((HashMap<String, String>)null);
  }

  // serializeToBytes
  @Test
  public void serializeToBytes() throws Exception {
    HashMap<String, String> map = new HashMap<String, String>();
    map.put("utf", "aériennes");
    map.put("ascii", "aariennes");
    byte[] raw = JSON.serializeToBytes(map);
    assertNotNull(raw);
    String json = new String(raw, "UTF8");
    assertTrue(json.matches(".*[{,]\"ascii\":\"aariennes\"[,}].*"));
  }
 
  @Test (expected = IllegalArgumentException.class)
  public void serializeToBytesNull() throws Exception {
    JSON.serializeToString((HashMap<String, String>)null);
  }

  // serializeToJSONString
  @Test
  public void serializeToJSONString() throws Exception {
    HashMap<String, String> map = new HashMap<String, String>();
    map.put("utf", "aériennes");
    map.put("ascii", "aariennes");
    String json = JSON.serializeToJSONPString("dummycb", map);
    assertNotNull(json);
    assertFalse(json.isEmpty());
    assertTrue(json.matches("dummycb\\(.*[{,]\"ascii\":\"aariennes\"[,}].*\\)"));
  }
 
  @Test (expected = IllegalArgumentException.class)
  public void serializeToJSONStringNullData() throws Exception {
    JSON.serializeToJSONPString("dummycb", (HashMap<String, String>)null);
  }
 
  @Test (expected = IllegalArgumentException.class)
  public void serializeToJSONStringNullCB() throws Exception {
    JSON.serializeToJSONPString((String)null, (HashMap<String, String>)null);
  }

  @Test (expected = IllegalArgumentException.class)
  public void serializeToJSONStringEmptyCB() throws Exception {
    JSON.serializeToJSONPString("", (HashMap<String, String>)null);
  }
 
  // serializeToJSONPBytes
  @Test
  public void serializeToJSONPBytes() throws Exception {
    HashMap<String, String> map = new HashMap<String, String>();
    map.put("utf", "aériennes");
    map.put("ascii", "aariennes");
    byte[] raw = JSON.serializeToJSONPBytes("dummycb", map);
    assertNotNull(raw);
    String json = new String(raw, "UTF8");
    assertTrue(json.matches("dummycb\\(.*[{,]\"ascii\":\"aariennes\"[,}].*\\)"));
  }
 
  @Test (expected = IllegalArgumentException.class)
  public void serializeToJSONPBytesNullData() throws Exception {
    JSON.serializeToJSONPBytes("dummycb", (HashMap<String, String>)null);
  }

  @Test (expected = IllegalArgumentException.class)
  public void serializeToJSONPBytesNullCB() throws Exception {
    JSON.serializeToJSONPBytes((String)null, (HashMap<String, String>)null);
  }
 
  @Test (expected = IllegalArgumentException.class)
  public void serializeToJSONPBytesEmptyCB() throws Exception {
    JSON.serializeToJSONPBytes("", (HashMap<String, String>)null);
  }

  /** Helper to parse an input stream into a map */
  private HashMap<String, String> parseToMap(final InputStream is)
    throws Exception {
    JsonParser jp = JSON.parseToStream(is);
    HashMap<String, String> map = new HashMap<String, String>();
    String field = "";
    String value;
    while (jp.nextToken() != null) {
      if (jp.getCurrentToken() == JsonToken.FIELD_NAME &&
          jp.getCurrentName() != null) {
        field = jp.getCurrentName();
      } else if (jp.getCurrentToken() == JsonToken.VALUE_STRING) {
        value = jp.getText();
        map.put(field, value);
      }       
    }
    return map;
  }
 
  /** Helper to parse an input stream into a map */
  private HashMap<String, String> parseToMap(final JsonParser jp)
    throws Exception {
    HashMap<String, String> map = new HashMap<String, String>();
    String field = "";
    String value;
    while (jp.nextToken() != null) {
      if (jp.getCurrentToken() == JsonToken.FIELD_NAME &&
          jp.getCurrentName() != null) {
        field = jp.getCurrentName();
      } else if (jp.getCurrentToken() == JsonToken.VALUE_STRING) {
        value = jp.getText();
        map.put(field, value);
      }       
    }
    return map;
  }
 
  /** Helper to return a TypeReference for a Hash Map */
  private final TypeReference<HashMap<String, String>> getTRMap(){
    return new TypeReference<HashMap<String, String>>() {};
  }
 
  /** Helper to return a TypeReference for a Hash Set */
  private final TypeReference<HashSet<String>> getTRSet(){
    return new TypeReference<HashSet<String>>() {};
  }
}
TOP

Related Classes of net.opentsdb.utils.TestJSON

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.