blob: e581eaa42af36c894136b8c444342ad137350a30 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015 Oracle. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0, which accompanies this distribution
* and is available at https://www.eclipse.org/legal/epl-2.0/.
*
* Contributors:
* Oracle - initial API and implementation
******************************************************************************/
package org.eclipse.jpt.common.utility.tests.internal.reference;
import org.eclipse.jpt.common.utility.reference.ModifiableIntReference;
public abstract class ModifiableIntReferenceTests
extends IntReferenceTests
{
public ModifiableIntReferenceTests(String name) {
super(name);
}
@Override
protected ModifiableIntReference buildIntReference() {
return this.buildIntReference(0);
}
@Override
protected abstract ModifiableIntReference buildIntReference(int value);
public void testSetValueInt() {
ModifiableIntReference ref;
ref = this.buildIntReference(-3);
assertEquals(-3, ref.getValue());
assertEquals(-3, ref.setValue(4));
assertEquals(4, ref.getValue());
}
public void testAbs() {
ModifiableIntReference ref;
ref = this.buildIntReference(-3);
assertEquals(-3, ref.getValue());
assertEquals(3, ref.abs());
assertEquals(3, ref.getValue());
ref.setValue(3);
assertEquals(3, ref.getValue());
assertEquals(3, ref.abs());
assertEquals(3, ref.getValue());
}
public void testNegate() {
ModifiableIntReference ref;
ref = this.buildIntReference(-3);
assertEquals(-3, ref.getValue());
assertEquals(3, ref.negate());
assertEquals(3, ref.getValue());
ref.setValue(3);
assertEquals(3, ref.getValue());
assertEquals(-3, ref.negate());
assertEquals(-3, ref.getValue());
}
public void testNegateExact() {
ModifiableIntReference ref;
ref = this.buildIntReference(-3);
assertEquals(-3, ref.getValue());
assertEquals(3, ref.negateExact());
assertEquals(3, ref.getValue());
ref.setValue(3);
assertEquals(3, ref.getValue());
assertEquals(-3, ref.negateExact());
assertEquals(-3, ref.getValue());
}
public void testSetZero() {
ModifiableIntReference ref;
ref = this.buildIntReference(-3);
assertEquals(-3, ref.getValue());
assertEquals(-3, ref.setZero());
assertEquals(0, ref.getValue());
}
public void testAddInt() {
ModifiableIntReference ref;
int value;
ref = this.buildIntReference();
assertEquals(0, ref.getValue());
value = ref.add(3);
assertEquals(3, value);
assertEquals(3, ref.getValue());
value = ref.add(-7);
assertEquals(-4, value);
assertEquals(-4, ref.getValue());
}
public void testAddExactInt() {
ModifiableIntReference ref;
int value;
ref = this.buildIntReference();
assertEquals(0, ref.getValue());
value = ref.addExact(3);
assertEquals(3, value);
assertEquals(3, ref.getValue());
value = ref.addExact(-7);
assertEquals(-4, value);
assertEquals(-4, ref.getValue());
}
public void testIncrement() {
ModifiableIntReference ref;
int value;
ref = this.buildIntReference();
assertEquals(0, ref.getValue());
value = ref.increment();
assertEquals(1, value);
assertEquals(1, ref.getValue());
}
public void testIncrementExact() {
ModifiableIntReference ref;
int value;
ref = this.buildIntReference();
assertEquals(0, ref.getValue());
value = ref.incrementExact();
assertEquals(1, value);
assertEquals(1, ref.getValue());
}
public void testSubtractInt() {
ModifiableIntReference ref;
int count;
ref = this.buildIntReference();
assertEquals(0, ref.getValue());
count = ref.subtract(3);
assertEquals(-3, count);
assertEquals(-3, ref.getValue());
count = ref.subtract(-7);
assertEquals(4, count);
assertEquals(4, ref.getValue());
}
public void testSubtractExactInt() {
ModifiableIntReference ref;
int count;
ref = this.buildIntReference();
assertEquals(0, ref.getValue());
count = ref.subtractExact(3);
assertEquals(-3, count);
assertEquals(-3, ref.getValue());
count = ref.subtractExact(-7);
assertEquals(4, count);
assertEquals(4, ref.getValue());
}
public void testDecrement() {
ModifiableIntReference ref;
int count;
ref = this.buildIntReference();
assertEquals(0, ref.getValue());
count = ref.decrement();
assertEquals(-1, count);
assertEquals(-1, ref.getValue());
}
public void testDecrementExact() {
ModifiableIntReference ref;
int count;
ref = this.buildIntReference();
assertEquals(0, ref.getValue());
count = ref.decrementExact();
assertEquals(-1, count);
assertEquals(-1, ref.getValue());
}
public void testHalve() {
ModifiableIntReference ref;
ref = this.buildIntReference(44);
assertEquals(44, ref.getValue());
assertEquals(22, ref.halve());
assertEquals(22, ref.getValue());
}
public void testTwice() {
ModifiableIntReference ref;
ref = this.buildIntReference(44);
assertEquals(44, ref.getValue());
assertEquals(88, ref.twice());
assertEquals(88, ref.getValue());
}
public void testTwiceExact() {
ModifiableIntReference ref;
ref = this.buildIntReference(44);
assertEquals(44, ref.getValue());
assertEquals(88, ref.twiceExact());
assertEquals(88, ref.getValue());
}
public void testMultiplyInt() {
ModifiableIntReference ref;
ref = this.buildIntReference(3);
assertEquals(3, ref.getValue());
assertEquals(9, ref.multiply(3));
assertEquals(9, ref.getValue());
}
public void testMultiplyExactInt() {
ModifiableIntReference ref;
ref = this.buildIntReference(3);
assertEquals(3, ref.getValue());
assertEquals(9, ref.multiplyExact(3));
assertEquals(9, ref.getValue());
}
public void testDivideInt() {
ModifiableIntReference ref;
ref = this.buildIntReference(24);
assertEquals(24, ref.getValue());
assertEquals(8, ref.divide(3));
assertEquals(8, ref.getValue());
ref = this.buildIntReference(4);
assertEquals(4, ref.getValue());
assertEquals(1, ref.divide(3));
assertEquals(1, ref.getValue());
ref = this.buildIntReference(-4);
assertEquals(-4, ref.getValue());
assertEquals(-1, ref.divide(3));
assertEquals(-1, ref.getValue());
}
public void testFloorDivideInt() {
ModifiableIntReference ref;
ref = this.buildIntReference(24);
assertEquals(24, ref.getValue());
assertEquals(8, ref.floorDivide(3));
assertEquals(8, ref.getValue());
ref = this.buildIntReference(4);
assertEquals(4, ref.getValue());
assertEquals(1, ref.floorDivide(3));
assertEquals(1, ref.getValue());
ref = this.buildIntReference(-4);
assertEquals(-4, ref.getValue());
assertEquals(-2, ref.floorDivide(3));
assertEquals(-2, ref.getValue());
}
public void testRemainderInt() {
ModifiableIntReference ref;
ref = this.buildIntReference(25);
assertEquals(25, ref.getValue());
assertEquals(1, ref.remainder(3));
assertEquals(1, ref.getValue());
ref = this.buildIntReference(4);
assertEquals(4, ref.getValue());
assertEquals(1, ref.remainder(3));
assertEquals(1, ref.getValue());
ref = this.buildIntReference(4);
assertEquals(4, ref.getValue());
assertEquals(1, ref.remainder(-3));
assertEquals(1, ref.getValue());
ref = this.buildIntReference(-4);
assertEquals(-4, ref.getValue());
assertEquals(-1, ref.remainder(3));
assertEquals(-1, ref.getValue());
ref = this.buildIntReference(-4);
assertEquals(-4, ref.getValue());
assertEquals(-1, ref.remainder(-3));
assertEquals(-1, ref.getValue());
}
public void testFloorRemainderInt() {
ModifiableIntReference ref;
ref = this.buildIntReference(25);
assertEquals(25, ref.getValue());
assertEquals(1, ref.floorRemainder(3));
assertEquals(1, ref.getValue());
ref = this.buildIntReference(4);
assertEquals(4, ref.getValue());
assertEquals(1, ref.floorRemainder(3));
assertEquals(1, ref.getValue());
ref = this.buildIntReference(4);
assertEquals(4, ref.getValue());
assertEquals(-2, ref.floorRemainder(-3));
assertEquals(-2, ref.getValue());
ref = this.buildIntReference(-4);
assertEquals(-4, ref.getValue());
assertEquals(2, ref.floorRemainder(3));
assertEquals(2, ref.getValue());
ref = this.buildIntReference(-4);
assertEquals(-4, ref.getValue());
assertEquals(-1, ref.floorRemainder(-3));
assertEquals(-1, ref.getValue());
}
public void testMinInt() {
ModifiableIntReference ref;
ref = this.buildIntReference(25);
assertEquals(25, ref.getValue());
assertEquals(3, ref.min(3));
assertEquals(3, ref.getValue());
assertEquals(3, ref.min(33));
assertEquals(3, ref.getValue());
}
public void testMaxInt() {
ModifiableIntReference ref;
ref = this.buildIntReference(25);
assertEquals(25, ref.getValue());
assertEquals(25, ref.max(3));
assertEquals(25, ref.getValue());
assertEquals(30, ref.max(30));
assertEquals(30, ref.getValue());
assertEquals(30, ref.max(3));
assertEquals(30, ref.getValue());
}
public void testCommitIntInt() {
ModifiableIntReference ref;
ref = this.buildIntReference(25);
assertTrue(ref.commit(-3, 25));
assertEquals(-3, ref.getValue());
assertFalse(ref.commit(22, 25));
assertEquals(-3, ref.getValue());
}
public void testSwapRef() throws Exception {
ModifiableIntReference ref1 = this.buildIntReference(33);
ModifiableIntReference ref2 = ref1;
assertEquals(33, ref1.swap(ref2));
ref2 = this.buildIntReference(-7);
assertEquals(-7, ref1.swap(ref2));
assertEquals(-7, ref1.getValue());
assertEquals(33, ref2.getValue());
ref1.setValue(42);
ref2.setValue(42);
assertEquals(42, ref1.swap(ref2));
assertEquals(42, ref1.getValue());
assertEquals(42, ref2.getValue());
}
}