Added the subtract method to the AssetAmount class
This commit is contained in:
parent
93dd6ef1b2
commit
60dabfef31
2 changed files with 49 additions and 0 deletions
|
@ -54,6 +54,25 @@ public class AssetAmount implements ByteSerializable, JsonSerializable {
|
||||||
return new AssetAmount(combined, asset);
|
return new AssetAmount(combined, asset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Subtracts another instance of AssetAmount from this one. This method will always
|
||||||
|
* return absolute values.
|
||||||
|
* @param other: The other asset amount to subtract from this.
|
||||||
|
* @return: The absolute value of the subtraction of the other minus this asset amount.
|
||||||
|
*/
|
||||||
|
public AssetAmount subtract(AssetAmount other){
|
||||||
|
if(!this.getAsset().getObjectId().equals(other.getAsset().getObjectId())){
|
||||||
|
throw new IncompatibleOperation("Cannot subtract two AssetAmount instances that refer to different assets");
|
||||||
|
}
|
||||||
|
UnsignedLong result = null;
|
||||||
|
if(this.amount.compareTo(other.getAmount()) < 0){
|
||||||
|
result = other.getAmount().minus(this.amount);
|
||||||
|
}else{
|
||||||
|
result = this.amount.minus(other.getAmount());
|
||||||
|
}
|
||||||
|
return new AssetAmount(result, asset);
|
||||||
|
}
|
||||||
|
|
||||||
public void setAmount(UnsignedLong amount){
|
public void setAmount(UnsignedLong amount){
|
||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
package de.bitsharesmunich.graphenej;
|
||||||
|
|
||||||
|
import com.google.common.primitives.UnsignedLong;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by nelson on 2/23/17.
|
||||||
|
*/
|
||||||
|
public class AssetAmountTest {
|
||||||
|
private final int LARGE_VALUE = 1000;
|
||||||
|
private final int SMALL_VALUE = 500;
|
||||||
|
private AssetAmount large;
|
||||||
|
private AssetAmount small;
|
||||||
|
private Asset testAsset = new Asset("1.3.0");
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp(){
|
||||||
|
large = new AssetAmount(UnsignedLong.valueOf(LARGE_VALUE), testAsset);
|
||||||
|
small = new AssetAmount(UnsignedLong.valueOf(SMALL_VALUE), testAsset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSubtraction(){
|
||||||
|
assertEquals(large.subtract(small).getAmount(), new AssetAmount(UnsignedLong.valueOf(LARGE_VALUE - SMALL_VALUE), testAsset).getAmount());
|
||||||
|
assertEquals(small.subtract(large).getAmount(), new AssetAmount(UnsignedLong.valueOf(Math.abs(SMALL_VALUE - LARGE_VALUE)), testAsset).getAmount());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue