Package com.voyagegames.java.tracking.tests

Source Code of com.voyagegames.java.tracking.tests.JsonDispatcherTest$TestDispatchCallback

package com.voyagegames.java.tracking.tests;

import static org.junit.Assert.*;

import java.io.UnsupportedEncodingException;

import org.junit.Test;

import com.voyagegames.java.tracking.AppEvent;
import com.voyagegames.java.tracking.BasicAccumulator;
import com.voyagegames.java.tracking.IDispatchCallback;
import com.voyagegames.java.tracking.JsonDispatcher;
import com.voyagegames.java.tracking.JsonDispatcherConfig;

public class JsonDispatcherTest {
 
  private class TestDispatchCallback implements IDispatchCallback {
   
    public byte[] output;
    public boolean errorCalled = false;

    @Override
    public void debugTrack(byte[] trackingOutput) {
      output = trackingOutput;
    }

    @Override
    public void error(String error) {
      errorCalled = true;
    }
   
  }

  @Test
  public void testDispatch() {
    final JsonDispatcherConfig config = new JsonDispatcherConfig();
    config.callback = new TestDispatchCallback();
   
    final JsonDispatcher disp = new JsonDispatcher(config);

    assertTrue(!disp.dispatch());
  }

  @Test
  public void testDispatchIAccumulator() {
    final BasicAccumulator acc = new BasicAccumulator();
    final JsonDispatcherConfig config = new JsonDispatcherConfig();
    final TestDispatchCallback callback = new TestDispatchCallback();
    final AppEvent event = new AppEvent("testkey", "testvalue");

    acc.trackAppEvent(event);
    config.callback = callback;
    config.url = "testurl";
    config.debugMode = true;
   
    final JsonDispatcher disp = new JsonDispatcher(config);
   
    assertTrue(!callback.errorCalled);
    assertTrue(null == callback.output);
    assertTrue(disp.dispatch(acc));
    assertTrue(null != callback.output);
   
    final String output = "{\"data\":[" + event.toJSON() + "]}";
    assertTrue(output.length() > callback.output.length);
  }

  @Test
  public void testDispatchIAccumulator_noCompression() {
    final BasicAccumulator acc = new BasicAccumulator();
    final JsonDispatcherConfig config = new JsonDispatcherConfig();
    final TestDispatchCallback callback = new TestDispatchCallback();
    final AppEvent event = new AppEvent("testkey", "testvalue");

    acc.trackAppEvent(event);
    config.callback = callback;
    config.url = "testurl";
    config.debugMode = true;
    config.useCompression = false;
   
    final JsonDispatcher disp = new JsonDispatcher(config);
   
    assertTrue(!callback.errorCalled);
    assertTrue(null == callback.output);
    assertTrue(disp.dispatch(acc));
    assertTrue(!callback.errorCalled);
   
    try {
      final String output = "{\"data\":[" + event.toJSON() + "]}";
      assertArrayEquals(output.getBytes("UTF-8"), callback.output);
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
      assertTrue(false);
    }
  }

  @Test
  public void testDispatchIAccumulator_withHeader() {
    final BasicAccumulator acc = new BasicAccumulator();
    final JsonDispatcherConfig config = new JsonDispatcherConfig();
    final TestDispatchCallback callback = new TestDispatchCallback();
    final AppEvent header = new AppEvent("testheader", "testheadervalue");
    final AppEvent event = new AppEvent("testkey", "testvalue");

    acc.trackAppEvent(event);
    config.callback = callback;
    config.url = "testurl";
    config.debugMode = true;
    config.useCompression = false;
    config.trackingHeader.add(header);
   
    final JsonDispatcher disp = new JsonDispatcher(config);
   
    assertTrue(!callback.errorCalled);
    assertTrue(null == callback.output);
    assertTrue(disp.dispatch(acc));
    assertTrue(!callback.errorCalled);
   
    try {
      final String output = "{\"data\":[" + header.toJSON() + "," + event.toJSON() + "]}";
      assertArrayEquals(output.getBytes("UTF-8"), callback.output);
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
      assertTrue(false);
    }
  }

  @Test
  public void testDispatchIAccumulator_noUrl() {
    final BasicAccumulator acc = new BasicAccumulator();
    final JsonDispatcherConfig config = new JsonDispatcherConfig();
    final TestDispatchCallback callback = new TestDispatchCallback();

    acc.trackAppEvent(new AppEvent("testkey", "testvalue"));
    config.callback = callback;
   
    final JsonDispatcher disp = new JsonDispatcher(config);
   
    assertTrue(!callback.errorCalled);
    assertTrue(!disp.dispatch(acc));
    assertTrue(callback.errorCalled);
  }

  @Test
  public void testDispatchIAccumulator_maxUploadSize() {
    final BasicAccumulator acc = new BasicAccumulator();
    final JsonDispatcherConfig config = new JsonDispatcherConfig();
    final TestDispatchCallback callback = new TestDispatchCallback();

    acc.trackAppEvent(new AppEvent("testkey", "testvalue"));
    config.callback = callback;
    config.url = "testurl";
    config.maxUploadSize = 1;
   
    final JsonDispatcher disp = new JsonDispatcher(config);
   
    assertTrue(!callback.errorCalled);
    assertTrue(!disp.dispatch(acc));
    assertTrue(callback.errorCalled);
  }

}
TOP

Related Classes of com.voyagegames.java.tracking.tests.JsonDispatcherTest$TestDispatchCallback

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.