Package hapax.test

Source Code of hapax.test.SparseVectorTest

package hapax.test;

import static org.junit.Assert.assertEquals;

import java.util.Iterator;

import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;

import ch.akuhn.hapax.linalg.SparseVector;
import ch.akuhn.hapax.linalg.Vector.Entry;
import ch.unibe.jexample.Given;
import ch.unibe.jexample.JExample;

@RunWith(JExample.class)
public class SparseVectorTest {
 
  double BIG_DELTA = 0.0000001;

    @Test
    public SparseVector empty() {
        SparseVector v = new SparseVector(10, 3);
        assertEquals(10, v.size());
        assertEquals(0, v.used());
        assertEquals(0, v.get(0), Double.MIN_VALUE);
        assertEquals(0, v.get(1), Double.MIN_VALUE);
        assertEquals(0, v.get(2), Double.MIN_VALUE);
        assertEquals(0, v.get(3), Double.MIN_VALUE);
        assertEquals(0, v.get(4), Double.MIN_VALUE);
        assertEquals(0, v.get(5), Double.MIN_VALUE);
        assertEquals(0, v.get(6), Double.MIN_VALUE);
        assertEquals(0, v.get(7), Double.MIN_VALUE);
        assertEquals(0, v.get(8), Double.MIN_VALUE);
        assertEquals(0, v.get(9), Double.MIN_VALUE);
        return v;
    }
   
    @Test @Given("#empty")
    public void putBeyondCapacity(SparseVector v) {
        v.put(1,0.1);
        assertEquals(1, v.used());
        v.put(2,0.2);
        assertEquals(2, v.used());
        v.put(3,0.3);
        assertEquals(3, v.used());
        v.put(4,0.4);
        assertEquals(4, v.used());
        assertEquals(0.1, v.get(1), BIG_DELTA);
        assertEquals(0.2, v.get(2), BIG_DELTA);
        assertEquals(0.3, v.get(3), BIG_DELTA);
        assertEquals(0.4, v.get(4), BIG_DELTA);
    }
   
    @Test @Given("#empty")
    public SparseVector putOneValue(SparseVector v) {
        v.put(4, 404);
        assertEquals(10, v.size());
        assertEquals(1, v.used());
        assertEquals(0, v.get(0), Double.MIN_VALUE);
        assertEquals(0, v.get(1), Double.MIN_VALUE);
        assertEquals(0, v.get(2), Double.MIN_VALUE);
        assertEquals(0, v.get(3), Double.MIN_VALUE);
        assertEquals(404, v.get(4), Double.MIN_VALUE);
        assertEquals(0, v.get(5), Double.MIN_VALUE);
        assertEquals(0, v.get(6), Double.MIN_VALUE);
        assertEquals(0, v.get(7), Double.MIN_VALUE);
        assertEquals(0, v.get(8), Double.MIN_VALUE);
        assertEquals(0, v.get(9), Double.MIN_VALUE);
        return v;
    }

    @Test @Given("#putMoreValues")
    public SparseVector preprendValue(SparseVector v) {
        v.put(2, 202);
        assertEquals(10, v.size());
        assertEquals(5, v.used());
        assertEquals(0, v.get(0), Double.MIN_VALUE);
        assertEquals(0, v.get(1), Double.MIN_VALUE);
        assertEquals(202, v.get(2), Double.MIN_VALUE);
        assertEquals(303, v.get(3), Double.MIN_VALUE);
        assertEquals(404, v.get(4), Double.MIN_VALUE);
        assertEquals(505, v.get(5), Double.MIN_VALUE);
        assertEquals(0, v.get(6), Double.MIN_VALUE);
        assertEquals(707, v.get(7), Double.MIN_VALUE);
        assertEquals(0, v.get(8), Double.MIN_VALUE);
        assertEquals(0, v.get(9), Double.MIN_VALUE);
        return v;
    }

    @Test @Given("#putMoreValues")
    public SparseVector appendValue(SparseVector v) {
        v.put(8, 808);
        assertEquals(10, v.size());
        assertEquals(5, v.used());
        assertEquals(0, v.get(0), Double.MIN_VALUE);
        assertEquals(0, v.get(1), Double.MIN_VALUE);
        assertEquals(0, v.get(2), Double.MIN_VALUE);
        assertEquals(303, v.get(3), Double.MIN_VALUE);
        assertEquals(404, v.get(4), Double.MIN_VALUE);
        assertEquals(505, v.get(5), Double.MIN_VALUE);
        assertEquals(0, v.get(6), Double.MIN_VALUE);
        assertEquals(707, v.get(7), Double.MIN_VALUE);
        assertEquals(808, v.get(8), Double.MIN_VALUE);
        assertEquals(0, v.get(9), Double.MIN_VALUE);
        return v;
    }
   
    @Test @Given("#putMoreValues")
    public SparseVector insertValue(SparseVector v) {
        v.put(6, 606);
        assertEquals(10, v.size());
        assertEquals(5, v.used());
        assertEquals(0, v.get(0), Double.MIN_VALUE);
        assertEquals(0, v.get(1), Double.MIN_VALUE);
        assertEquals(0, v.get(2), Double.MIN_VALUE);
        assertEquals(303, v.get(3), Double.MIN_VALUE);
        assertEquals(404, v.get(4), Double.MIN_VALUE);
        assertEquals(505, v.get(5), Double.MIN_VALUE);
        assertEquals(606, v.get(6), Double.MIN_VALUE);
        assertEquals(707, v.get(7), Double.MIN_VALUE);
        assertEquals(0, v.get(8), Double.MIN_VALUE);
        assertEquals(0, v.get(9), Double.MIN_VALUE);
        return v;
    }  
   
    @Test @Given("#putMoreValues")
    public SparseVector replaceValue(SparseVector v) {
        v.put(4, 414);
        assertEquals(10, v.size());
        assertEquals(4, v.used());
        assertEquals(0, v.get(0), Double.MIN_VALUE);
        assertEquals(0, v.get(1), Double.MIN_VALUE);
        assertEquals(0, v.get(2), Double.MIN_VALUE);
        assertEquals(303, v.get(3), Double.MIN_VALUE);
        assertEquals(414, v.get(4), Double.MIN_VALUE);
        assertEquals(505, v.get(5), Double.MIN_VALUE);
        assertEquals(0, v.get(6), Double.MIN_VALUE);
        assertEquals(707, v.get(7), Double.MIN_VALUE);
        assertEquals(0, v.get(8), Double.MIN_VALUE);
        assertEquals(0, v.get(9), Double.MIN_VALUE);
        return v;
    }     
   
    @Test @Given("#putOneValue")
    public SparseVector putMoreValues(SparseVector v) {
        v.put(3, 303);
        v.put(5, 505);
        v.put(7, 707);
        assertEquals(10, v.size());
        assertEquals(4, v.used());
        assertEquals(0, v.get(0), Double.MIN_VALUE);
        assertEquals(0, v.get(1), Double.MIN_VALUE);
        assertEquals(0, v.get(2), Double.MIN_VALUE);
        assertEquals(303, v.get(3), Double.MIN_VALUE);
        assertEquals(404, v.get(4), Double.MIN_VALUE);
        assertEquals(505, v.get(5), Double.MIN_VALUE);
        assertEquals(0, v.get(6), Double.MIN_VALUE);
        assertEquals(707, v.get(7), Double.MIN_VALUE);
        assertEquals(0, v.get(8), Double.MIN_VALUE);
        assertEquals(0, v.get(9), Double.MIN_VALUE);
        return v;
    }   
   
    @Test @Given("#putMoreValues")
    public void trim(SparseVector v) {
        assertEquals(10, v.size());
        assertEquals(4, v.used());
        v.trim();
        assertEquals(10, v.size());
        assertEquals(4, v.used());
        assertEquals(0, v.get(0), Double.MIN_VALUE);
        assertEquals(0, v.get(1), Double.MIN_VALUE);
        assertEquals(0, v.get(2), Double.MIN_VALUE);
        assertEquals(303, v.get(3), Double.MIN_VALUE);
        assertEquals(404, v.get(4), Double.MIN_VALUE);
        assertEquals(505, v.get(5), Double.MIN_VALUE);
        assertEquals(0, v.get(6), Double.MIN_VALUE);
        assertEquals(707, v.get(7), Double.MIN_VALUE);
        assertEquals(0, v.get(8), Double.MIN_VALUE);
        assertEquals(0, v.get(9), Double.MIN_VALUE);
    }
   
    @Test @Given("putMoreValues")
    public SparseVector replaceWithZero(SparseVector v) {
        v.put(4, 0.0);
        assertEquals(10, v.size());
        //assertEquals(3, v.used());
        assertEquals(0, v.get(0), Double.MIN_VALUE);
        assertEquals(0, v.get(1), Double.MIN_VALUE);
        assertEquals(0, v.get(2), Double.MIN_VALUE);
        assertEquals(303, v.get(3), Double.MIN_VALUE);
        assertEquals(0, v.get(4), Double.MIN_VALUE);
        assertEquals(505, v.get(5), Double.MIN_VALUE);
        assertEquals(0, v.get(6), Double.MIN_VALUE);
        assertEquals(707, v.get(7), Double.MIN_VALUE);
        assertEquals(0, v.get(8), Double.MIN_VALUE);
        assertEquals(0, v.get(9), Double.MIN_VALUE);
        return v;
    }
   
    @Test @Given("replaceWithZero")
    @Ignore // TODO deal with putting 0.0 in SparseVector#put
    public void replaceWithZeroDecreasesUsedCount(SparseVector v) {
        assertEquals(3, v.used());
    }
   
    @Test @Given("#putMoreValues")
    public void entries(SparseVector v) {
        Iterator<Entry> it = v.entries().iterator();
        Entry e;
        assertEquals(true, it.hasNext());
        e = it.next();
        assertEquals(3, e.index);
        assertEquals(303, e.value, Double.MIN_VALUE);
        assertEquals(true, it.hasNext());
        e = it.next();
        assertEquals(4, e.index);
        assertEquals(404, e.value, Double.MIN_VALUE);
        assertEquals(true, it.hasNext());
        e = it.next();
        assertEquals(5, e.index);
        assertEquals(505, e.value, Double.MIN_VALUE);
        assertEquals(true, it.hasNext());
        e = it.next();
        assertEquals(7, e.index);
        assertEquals(707, e.value, Double.MIN_VALUE);
        assertEquals(false, it.hasNext());
    }
   
}
TOP

Related Classes of hapax.test.SparseVectorTest

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.