Archived
0

improve reserving for missions

This commit is contained in:
Mo
2015-09-26 16:51:45 +03:00
parent 37d96efa4f
commit bcd7ebbd04
7 changed files with 333 additions and 159 deletions

View File

@@ -9,6 +9,7 @@ import ru.trader.core.*;
import ru.trader.store.simple.SimpleMarket;
import ru.trader.store.simple.SimpleOffer;
import java.util.Collection;
import java.util.List;
public class RouteFillerTest extends Assert {
@@ -484,30 +485,30 @@ public class RouteFillerTest extends Assert {
assertEquals(3, route.getLands());
/* v1 3x100 + 2x20 -> v2 5x50 -> v3 3x60 -> v4 */
double[] profits = RouteFiller.getLostProfits(route, 0, v4, cargo, cargo);
double[] profits = RouteFiller.getLostProfits(route, 0, v4, cargo);
assertArrayEquals(new double[]{750, 430, 180, 0}, profits, 0.001);
profits = RouteFiller.getLostProfits(route, 0, v1, cargo, cargo);
profits = RouteFiller.getLostProfits(route, 0, v1, cargo);
assertArrayEquals(new double[]{0, 430, 180, 0}, profits, 0.001);
profits = RouteFiller.getLostProfits(route, 1, v2, cargo, cargo);
profits = RouteFiller.getLostProfits(route, 1, v2, cargo);
assertArrayEquals(new double[]{320, 0, 500, 320}, profits, 0.001);
profits = RouteFiller.getLostProfits(route, 2, v3, cargo, cargo);
profits = RouteFiller.getLostProfits(route, 2, v3, cargo);
assertArrayEquals(new double[]{570, 250, 0, 570}, profits, 0.001);
profits = RouteFiller.getLostProfits(route, 0, v3, cargo, cargo);
profits = RouteFiller.getLostProfits(route, 0, v3, cargo);
assertArrayEquals(new double[]{570, 250, 0, 570}, profits, 0.001);
profits = RouteFiller.getLostProfits(route, 0, v1, 2, cargo);
profits = RouteFiller.getLostProfits(route, 0, v1, 2);
assertArrayEquals(new double[]{0, 0, 0, 0}, profits, 0.001);
/* v1 -2x20 -> v2 -2x50 -> v3 -> v4 */
profits = RouteFiller.getLostProfits(route, 0, v4, 4, cargo);
profits = RouteFiller.getLostProfits(route, 0, v4, 4);
assertArrayEquals(new double[]{120, 100, 0, 0}, profits, 0.001);
/* v1 -1x100 - 2x20 -> v2 -3x50 -> v3 -1x60 -> v4 */
profits = RouteFiller.getLostProfits(route, 0, v4, 5, cargo);
profits = RouteFiller.getLostProfits(route, 0, v4, 5);
assertArrayEquals(new double[]{330, 210, 60, 0}, profits, 0.001);
}
@@ -559,22 +560,22 @@ public class RouteFillerTest extends Assert {
assertEquals(4, route.getLands());
/* v1 3x100 + 2x20 -> v2 5x50 -> v3 3x60 -> v4 5x50 -> v3 transit -> v1 */
double[] profits = RouteFiller.getLostProfits(route, 0, v4, cargo, cargo);
double[] profits = RouteFiller.getLostProfits(route, 0, v4, cargo);
assertArrayEquals(new double[]{750, 430, 180, 0, 750}, profits, 0.001);
profits = RouteFiller.getLostProfits(route, 0, v1, cargo, cargo);
profits = RouteFiller.getLostProfits(route, 0, v1, cargo);
assertArrayEquals(new double[]{0, 680, 430, 250, 0}, profits, 0.001);
profits = RouteFiller.getLostProfits(route, 1, v2, cargo, cargo);
profits = RouteFiller.getLostProfits(route, 1, v2, cargo);
assertArrayEquals(new double[]{320, 0, 750, 570, 320}, profits, 0.001);
profits = RouteFiller.getLostProfits(route, 2, v3, cargo, cargo);
profits = RouteFiller.getLostProfits(route, 2, v3, cargo);
assertArrayEquals(new double[]{570, 250, 0, 820, 570}, profits, 0.001);
profits = RouteFiller.getLostProfits(route, 0, v3, cargo, cargo);
profits = RouteFiller.getLostProfits(route, 0, v3, cargo);
assertArrayEquals(new double[]{570, 250, 0, 820, 570}, profits, 0.001);
profits = RouteFiller.getLostProfits(route, 0, v1, 2, cargo);
profits = RouteFiller.getLostProfits(route, 0, v1, 2);
assertArrayEquals(new double[]{0, 0, 0, 0, 0}, profits, 0.001);
}
@@ -627,22 +628,22 @@ public class RouteFillerTest extends Assert {
assertEquals(5, route.getLands());
/* v1 3x100 + 2x20 -> v2 5x50 -> v3 3x60 -> v4 5x20 -> v3 3x10 -> v1 */
double[] profits = RouteFiller.getLostProfits(route, 0, v4, cargo, cargo);
double[] profits = RouteFiller.getLostProfits(route, 0, v4, cargo);
assertArrayEquals(new double[]{750, 430, 180, 0, 780}, profits, 0.001);
profits = RouteFiller.getLostProfits(route, 0, v1, cargo, cargo);
profits = RouteFiller.getLostProfits(route, 0, v1, cargo);
assertArrayEquals(new double[]{0, 560, 310, 130, 30}, profits, 0.001);
profits = RouteFiller.getLostProfits(route, 1, v2, cargo, cargo);
profits = RouteFiller.getLostProfits(route, 1, v2, cargo);
assertArrayEquals(new double[]{320, 0, 630, 450, 350}, profits, 0.001);
profits = RouteFiller.getLostProfits(route, 2, v3, cargo, cargo);
profits = RouteFiller.getLostProfits(route, 2, v3, cargo);
assertArrayEquals(new double[]{570, 250, 0, 100, 0}, profits, 0.001);
profits = RouteFiller.getLostProfits(route, 0, v3, cargo, cargo);
profits = RouteFiller.getLostProfits(route, 0, v3, cargo);
assertArrayEquals(new double[]{570, 250, 0, 100, 0}, profits, 0.001);
profits = RouteFiller.getLostProfits(route, 0, v1, 2, cargo);
profits = RouteFiller.getLostProfits(route, 0, v1, 2);
assertArrayEquals(new double[]{0, 0, 0, 0, 0}, profits, 0.001);
}
@@ -660,9 +661,13 @@ public class RouteFillerTest extends Assert {
/* v1 3x100 + 2x20 -> v2 5x50 -> v3 3x60 -> v4 5x20 -> v3 3x10 -> v1 */
Offer offer = SimpleOffer.fakeBuy(v2, ITEM3, 210, 3);
int completeIndex = RouteFiller.addOrders(route, 1, offer, cargo);
Collection<RouteReserve> reserves = RouteFiller.getReserves(route, 1, offer);
assertEquals(2, reserves.size());
int completeIndex = RouteReserve.getCompleteIndex(reserves, 1);
assertEquals(1, completeIndex);
route.reserve(reserves);
Order order1 = new Order(v1.getSell(ITEM2), v2.getBuy(ITEM2), 3);
Order order2 = new Order(v1.getSell(ITEM4), v2.getBuy(ITEM4), 1);
Order order3 = new Order(v2.getSell(ITEM1), v3.getBuy(ITEM1), 5);
@@ -680,7 +685,7 @@ public class RouteFillerTest extends Assert {
order2 = new Order(v1.getSell(ITEM4), v2.getBuy(ITEM4), 2);
RouteFiller.removeOrders(route, offer);
route.unreserve(reserves);
TestUtil.assertCollectionEquals(route.get(0).getOrders(), order1, order2);
TestUtil.assertCollectionEquals(route.get(1).getOrders(), order3);
TestUtil.assertCollectionEquals(route.get(2).getOrders(), order4);