Package org.timepedia.chronoscope.client.data

Source Code of org.timepedia.chronoscope.client.data.ArrayDataset2DTest

package org.timepedia.chronoscope.client.data;

import junit.framework.TestCase;

import org.timepedia.chronoscope.client.Dataset;
import org.timepedia.chronoscope.client.MutableDataset;
import org.timepedia.chronoscope.client.util.Array1D;
import org.timepedia.chronoscope.client.util.Interval;
import org.timepedia.chronoscope.client.util.MathUtil;
import org.timepedia.chronoscope.client.util.junit.OODoubleArray;

/**
* @author chad takahashi
*/
public class ArrayDataset2DTest extends TestCase {
  private DatasetFactory dsFactory = new ChronoscopeDatasetFactory();
  private DatasetRequestMaker dsMaker = new DatasetRequestMaker();
 
  public void testTupleAccessors() {
   
    double[] domain = {100.0, 200.0, 300.0};
    double[] range = {1.0, 2.0, 3.0};
    DatasetRequest.Basic request = dsMaker.newRequest(domain, range);
    Dataset ds = dsFactory.create(request);
   
    for (int i = 0; i < ds.getNumSamples(); i++) {
      assertEquals(domain[i], ds.getFlyweightTuple(i).getDomain());
      assertEquals(range[i], ds.getFlyweightTuple(i).getRange0());
    }
  }
 
  public void testSinglePoint() {
    DatasetRequest request = dsMaker.newRequest(new double[] {1000}, new double[] {10});
    Dataset ds = dsFactory.create(request);

    assertEquals(1, ds.getNumSamples());
    assertEquals(new Interval(1000, 1000), ds.getDomainExtrema());
    assertEquals(new Interval(10, 10), ds.getRangeExtrema(0));
    assertEquals(0.0, ds.getMinDomainInterval());
  }
 
  public void testGeneral() {
    OODoubleArray domain = new OODoubleArray(new double[] {1000, 2000, 3000, 4000});
    OODoubleArray range = new OODoubleArray(new double[] {10, 50, 40, 60});
   
    DatasetRequest.Basic request = dsMaker.newRequest(domain.getArray(), range.getArray());
   
    // Basic test that verifies that given the same dataset values, an
    // immutable dataset and a mutable dataset (which have different code
    // paths for populating their underlying Array2D objects) produce
    // the same logical dataset state.
   
    Dataset ds = dsFactory.create(request);
    Dataset mutableDs = createMutableDataset(request);
    int numMipLevels = (int)MathUtil.log2(domain.size()) + 1;
    assertEqual(ds, mutableDs, numMipLevels);
  }
 
  private Dataset createMutableDataset(DatasetRequest.Basic request) {
    OODoubleArray domain = new OODoubleArray(request.getDomain());
    OODoubleArray range = new OODoubleArray(request.getRangeTupleSlice(0));
    request.setDomain(domain.removeLast().getArray());
    request.setRangeTupleSlice(0, range.removeLast().getArray());
   
    MutableDataset ds = dsFactory.createMutable(request);
    ds.mutate(Mutation.append(domain.getLast(), range.getLast()));
   
    return ds;
  }
 
  private static void assertEqual(Dataset expected, Dataset actual, int numMipLevels) {
    assertEquals(expected.getDomainExtrema(), actual.getDomainExtrema());
    assertEquals(expected.getRangeExtrema(0), actual.getRangeExtrema(0));
    assertEquals(expected.getMinDomainInterval(), actual.getMinDomainInterval());
   
    MipMapChain expectedChain = expected.getMipMapChain();
    MipMapChain actualChain = actual.getMipMapChain();
    for (int i = 0; i < numMipLevels; i++) {
      MipMap expectedMipMap = expectedChain.getMipMap(i);
      MipMap actualMipMap = actualChain.getMipMap(i);
     
      assertEquals(expectedMipMap.size(), actualMipMap.size());
      int numSamples = actualMipMap.size();
      Array1D expectedDomain = expectedMipMap.getDomain();
      Array1D actualDomain = actualMipMap.getDomain();
      for (int j = 0; j < numSamples; j++) {
        assertEquals(expectedDomain.get(j), actualDomain.get(j));
       
        assertEquals(expectedMipMap.getTuple(j).getRange0(),
                     actualMipMap.getTuple(j).getRange0());
      }
    }
  }
 
}
TOP

Related Classes of org.timepedia.chronoscope.client.data.ArrayDataset2DTest

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.