Package edu.umd.hooka.alignment

Source Code of edu.umd.hooka.alignment.IndexedFloatArrayTest

package edu.umd.hooka.alignment;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import junit.framework.TestCase;
import edu.umd.hooka.ttables.TTable_monolithic_IFAs;

public class IndexedFloatArrayTest  extends TestCase {

 
  public void testSetArray() {
    int[] indices = {1,4,6,16};
    float[] probs = {0.1f,0.2f,0.3f,0.4f};
   
    TTable_monolithic_IFAs table = new TTable_monolithic_IFAs();
    table.set(7, new IndexedFloatArray(indices, probs, false));
   
    assertTrue(table.get(7,4)==0.2f);
    assertTrue(table.get(7,6)==0.3f);
    assertTrue(table.get(7,1)==0.1f);
    assertTrue(table.get(7,16)==0.4f);
  }
   
 
  public void testReadFields() {
    try {
    File temp = File.createTempFile("fat", null);
    temp.deleteOnExit();
    DataOutputStream dos = new DataOutputStream(
      new FileOutputStream(temp));
    int[] i = {1, 4, 8, 9, 10};
    IndexedFloatArray fa = new IndexedFloatArray(i);
    IndexedFloatArray fa2 = new IndexedFloatArray(10);
    fa.set(1, 0.5f);
    fa.set(10, 1.0f);
    fa.add(8, 0.1f);
    fa.add(8, 0.4f);
    fa2.set(4, 2.0f);
    fa.write(dos);
    fa2.write(dos);
    dos.close();
    DataInputStream dis = new DataInputStream(
        new FileInputStream(temp));
    fa2 = new IndexedFloatArray();
    IndexedFloatArray fa3 = new IndexedFloatArray();
    fa2.readFields(dis);
    fa3.readFields(dis);
    assertEquals(0.5f, fa2.get(1));
    assertEquals(0.5f, fa2.get(8));
    assertEquals(1.0f, fa2.get(10));
    System.err.println(fa2);
    assertEquals(2.0f, fa3.get(4));
   
    } catch (IOException e) {
      fail("Caught " + e);
    }
  }
 
  public void testAdd() {
    IndexedFloatArray acc = new IndexedFloatArray();
    int[] e = {1, 4, 10, 99};
    int[] e2= {1, 2, 3, 4};
    IndexedFloatArray v1 = new IndexedFloatArray(e);
    IndexedFloatArray v2 = new IndexedFloatArray(e2);
    for (int i : e) v1.set(i, 1.0f);
    for (int i : e2) v2.set(i, 1.0f);
    acc.plusEqualsMismatchSize(v1);
    acc.plusEqualsMismatchSize(v2);
    assertEquals(2.0f, acc.get(1));
    System.out.println("TA: " + acc);
    assertEquals(1.0f, acc.get(99));
    assertEquals(2.0f, acc.get(4));
  }
 
  public void testIndexedFloatArray() {
    int[] i = {1, 4, 8, 9, 10};
    IndexedFloatArray fa = new IndexedFloatArray(i);
    fa.set(1, 0.5f);
    fa.set(10, 1.0f);
    fa.add(8, 0.1f);
    fa.add(8, 0.4f);
    assertEquals(0.5f, fa.get(1));
    assertEquals(0.5f, fa.get(8));
    assertEquals(1.0f, fa.get(10));
    try {
      fa.set(2, 1.0f);
      fail("Should throw!");
    } catch (RuntimeException r) {}
    System.err.println(fa);
  }
 
  public void testDense() {
    IndexedFloatArray x = new IndexedFloatArray(5);
    x.set(1, 0.4f);
    x.set(2, 0.5f);
    assertEquals(0.4f, x.get(1));
    assertEquals(0.5f, x.get(2));
    System.err.println(x);
    IndexedFloatArray y = (IndexedFloatArray)x.clone();
    x.plusEquals(y);
    System.err.println(y);
    System.err.println(x);
    assertEquals(0.8f, x.get(1));
    try {
      File temp = File.createTempFile("fat", null);
      temp.deleteOnExit();
      DataOutputStream dos = new DataOutputStream(
          new FileOutputStream(temp));
      x.write(dos);
      dos.close();
      DataInputStream dis = new DataInputStream(
          new FileInputStream(temp));
      IndexedFloatArray fa2 = new IndexedFloatArray();
      fa2.readFields(dis);
      assertEquals(0.8f, fa2.get(1));
      assertEquals(x.size(), fa2.size());
    } catch (IOException e) { fail("Caught " + e); }
  }
 
  public void testPlusEquals() {
    int[] i = {1, 4, 5};
    IndexedFloatArray x = new IndexedFloatArray(i);
    IndexedFloatArray y = new IndexedFloatArray(i);
    x.set(1, 0.2f);
    x.set(4, 0.1f);
    y.set(4, 0.4f);
    y.set(5, 1.0f);
    x.plusEquals(y);
    assertEquals(0.2f, x.get(1));
    assertEquals(0.5f, x.get(4));
    assertEquals(1.0f, x.get(5));
  }

  public void testPlusEqualsMML() {
    int[] i = {1, 14, 15};
    int[] j = {14, 23};
    IndexedFloatArray x = new IndexedFloatArray(i);
    IndexedFloatArray y = new IndexedFloatArray(j);
    x.set(1, 0.2f);
    x.set(14, 0.1f);
    x.set(15, 1.0f);
    y.set(14, 0.4f);
    y.set(23, 0.8f);
    y.plusEqualsMismatchSize(x);
    System.out.println(y);
    assertEquals(0.2f, y.get(1));
    assertEquals(0.5f, y.get(14));
    assertEquals(1.0f, y.get(15));
    assertEquals(0.8f, y.get(23));
   
    IndexedFloatArray z = new IndexedFloatArray(3);
    z.set(0, 1.0f);
    z.set(1, 1.0f);
    z.set(2, 1.0f);
    y.plusEqualsMismatchSize(z);
    assertEquals(1.0f, y.get(0));
    assertEquals(1.2f, y.get(1));
    assertEquals(1.0f, y.get(2));
    assertEquals(0.5f, y.get(14));
    assertEquals(1.0f, y.get(15));
    assertEquals(0.8f, y.get(23));
    z.plusEqualsMismatchSize(y);
    assertEquals(2.0f, z.get(0));
    assertEquals(2.2f, z.get(1));
    assertEquals(2.0f, z.get(2));
    assertEquals(0.5f, z.get(14));
    assertEquals(1.0f, z.get(15));
    assertEquals(0.8f, z.get(23));
  }
 
  public void testInit() {
    float[] v = { 1.0f, 2.0f, 3.0f, 5.0f, 5.0f,
              1.0f, 2.0f, 3.0f, 0.2f, 5.0f,
              1.0f, 2.0f, 3.0f, 0.0f, 0.4f};
    IndexedFloatArray a = new IndexedFloatArray(v, v.length);
    System.out.println(a);
  }

  public void testNormalize() {
    int[] i = {1, 4, 5};
    IndexedFloatArray x = new IndexedFloatArray(i);
    x.set(1, 0.1f);
    x.set(4, 0.3f);
    x.set(5, 0.4f);
    x.normalize();
    System.err.println(x);
    assertEquals(0.125f, x.get(1));
    assertEquals(0.375f, x.get(4));
    assertEquals(0.5f, x.get(5));
  }
}
TOP

Related Classes of edu.umd.hooka.alignment.IndexedFloatArrayTest

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.