/**
 * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
 *
 * Please see distribution for license.
 */
package com.opengamma.web.analytics.json;

import static org.testng.AssertJUnit.assertEquals;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;
import java.util.Map;
import java.util.Random;

import org.json.JSONArray;
import org.junit.Ignore;
import org.testng.annotations.Test;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;

/**
 * Test.
 */
// main() method prevents placing "unit" annotation here
public class CompressorTest {

  private static final String s_json = "[" +
      "{\"baz\":0.9866,\"foo\":0.9154,\"bar\":[0.10325,0.74086,0.17289]}," +
      "{\"baz\":0.7032,\"foo\":0.53177,\"bar\":[0.40283,0.71098,0.3727,0.61233,0.95098,0.40499]}," +
      "{\"baz\":0.48626,\"foo\":0.81458,\"bar\":[0.29502,0.72687,0.17658,0.03358,0.70506]}," +
      "{\"baz\":0.02826,\"foo\":0.17644,\"bar\":[0.55885,0.15773,0.28012,0.28148]}," +
      "{\"baz\":0.45569,\"foo\":0.97938,\"bar\":[0.9911,0.07979,0.51428,0.502,0.77578,0.56551,0.04773]}]";

  @Test(groups = "unit")
  public void roundTrip() throws IOException {
    System.out.println(s_json);
    InputStream source1 = new ByteArrayInputStream(s_json.getBytes());
    ByteArrayOutputStream sink1 = new ByteArrayOutputStream();
    Compressor.compressStream(source1, sink1);

    InputStream source2 = new ByteArrayInputStream(sink1.toByteArray());
    ByteArrayOutputStream sink2 = new ByteArrayOutputStream();
    Compressor.decompressStream(source2, sink2);
    assertEquals(s_json, sink2.toString());
  }

  private static List<Object> randomObjects() {
    Random random = new Random();
    List<Object> list = Lists.newArrayList();
    int size = random.nextInt(5) + 3;
    for (int i = 0; i < size; i++) {
      Map<String, Object> map = Maps.newHashMap();
      map.put("foo", randomNumber());
      map.put("bar", randomArray());
      map.put("baz", randomNumber());
      list.add(map);
    }
    return list;
  }

  private static BigDecimal randomNumber() {
    return new BigDecimal(Math.random()).setScale(5, RoundingMode.DOWN);
  }

  private static BigDecimal[] randomArray() {
    Random random = new Random();
    int size = random.nextInt(3) + 3;
    BigDecimal[] array = new BigDecimal[size];
    for (int i = 0; i < size; i++) {
      array[i] = randomNumber();
    }
    return array;
  }

  @Ignore
  public static void main(String[] args) throws IOException {
    InputStream source1 = new ByteArrayInputStream(new JSONArray(randomObjects()).toString().getBytes());
    ByteArrayOutputStream sink1 = new ByteArrayOutputStream();
    Compressor.compressStream(source1, sink1);
    System.out.println("JSON size: " + s_json.length());
    System.out.println("compressed size: " + sink1.size());
    System.out.println("ratio: " + ((double) sink1.size() / (double) s_json.length()));
  }
}

@@ -519,33 +519,8 @@
 ay;%0A
-import org.junit.Ignore;%0A
 impo
@@ -2577,18 +2577,8 @@
  %7D%0A%0A
-  @Ignore%0A
   pu

Fix build