/** * Gets the value at the index which corresponds to the specified fraction * @param fraction 0 to 1 inclusive * @return value at fraction */ public long getFraction( double fraction ) { return get( (int)((size-1)*fraction) ); }
@Override public GrowQueue_I64 copy() { GrowQueue_I64 ret = new GrowQueue_I64(size); ret.setTo(this); return ret; }
public void add(long value) { push(value); }
@Test public void addAll_queue() { GrowQueue_I64 queue0 = new GrowQueue_I64(2); GrowQueue_I64 queue1 = new GrowQueue_I64(3); queue0.add(1); queue0.add(2); queue1.add(3); queue1.add(4); queue1.add(5); assertEquals(2,queue0.size); queue0.addAll(queue1); assertEquals(5,queue0.size); for( int i = 0; i < queue0.size; i++ ) { assertEquals(queue0.get(i),i+1); } queue0.reset(); queue0.addAll(queue1); assertEquals(3,queue0.size); for( int i = 0; i < queue0.size; i++ ) { assertEquals(queue0.get(i),i+3); } }
@Test public void auto_grow() { GrowQueue_I64 alg = new GrowQueue_I64(3); assertEquals(3,alg.data.length); for( int i = 0; i < 10; i++ ) alg.push(i); assertEquals(10,alg.size); for( int i = 0; i < 10; i++ ) assertEquals(i,alg.get(i),1e-8); }
@Test public void push_pop() { GrowQueue_I64 alg = new GrowQueue_I64(10); alg.push(1); alg.push(3); assertEquals(2,alg.size); assertTrue(3==alg.pop()); assertTrue(1==alg.pop()); assertEquals(0, alg.size); }
@Test public void getFraction() { GrowQueue_I64 alg = new GrowQueue_I64(20); for (int i = 0; i < 20; i++) { alg.add(i); } assertEquals(0,alg.getFraction(0.0)); assertEquals(0,alg.getFraction(0.02)); assertEquals(0,alg.getFraction(0.03)); assertEquals(1,alg.getFraction(1.0/19.0)); assertEquals(1,alg.getFraction(1.7/19.0)); assertEquals(19/2,alg.getFraction(0.5)); assertEquals(19,alg.getFraction(1.0)); } }
/** * Creates a queue with the specified length as its size filled with all zeros */ public static GrowQueue_I64 zeros( int length ) { GrowQueue_I64 out = new GrowQueue_I64(length); out.size = length; return out; }
public static GrowQueue_I64 array( long ...values ) { GrowQueue_I64 out = zeros(values.length); for (int i = 0; i < values.length; i++) { out.data[i] = values[i]; } return out; }
@Test public void addAll_array() { GrowQueue_I64 queue0 = new GrowQueue_I64(2); long[] array = new long[]{3,4,5}; queue0.add(1); queue0.add(2); assertEquals(2,queue0.size); queue0.addAll(array,0,3); assertEquals(5,queue0.size); for( int i = 0; i < queue0.size; i++ ) { assertEquals(queue0.get(i),i+1,1e-8); } queue0.reset(); queue0.addAll(array,1,3); assertEquals(2,queue0.size); for( int i = 0; i < queue0.size; i++ ) { assertEquals(queue0.get(i),i+4,1e-8); } }
@Test public void remove_two() { GrowQueue_I64 alg = new GrowQueue_I64(10); alg.push(1); alg.push(3); alg.push(4); alg.push(5); alg.push(6); alg.remove(1,1); assertEquals(4,alg.size); assertEquals(1,alg.get(0)); assertEquals(4,alg.get(1)); assertEquals(5,alg.get(2)); assertEquals(6,alg.get(3)); alg.remove(0,1); assertEquals(2,alg.size); assertEquals(5,alg.get(0)); assertEquals(6,alg.get(1)); }
/** * Creates a queue with the specified length as its size filled with all zeros */ public static GrowQueue_I64 zeros( int length ) { GrowQueue_I64 out = new GrowQueue_I64(length); out.size = length; return out; }
public static GrowQueue_I64 array( long ...values ) { GrowQueue_I64 out = zeros(values.length); for (int i = 0; i < values.length; i++) { out.data[i] = values[i]; } return out; }