Archived
0

Refactoring core module

This commit is contained in:
iMoHax
2014-11-08 18:37:12 +03:00
parent 1e1e41595d
commit b1a585bbc0
43 changed files with 1440 additions and 1021 deletions

View File

@@ -8,10 +8,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.trader.TestUtil;
import ru.trader.graph.Path;
import ru.trader.store.simple.SimpleItem;
import ru.trader.store.simple.SimpleMarket;
import ru.trader.store.simple.SimpleOffer;
import ru.trader.store.simple.SimpleVendor;
import ru.trader.store.simple.*;
import java.util.Collection;
@@ -19,47 +16,43 @@ public class MarketAnalyzerTest extends Assert {
private final static Logger LOG = LoggerFactory.getLogger(MarketAnalyzerTest.class);
private static Market market = new SimpleMarket();
private static Vendor v1;
private static Vendor v2;
private static Vendor v3;
private static Vendor v4;
private static Vendor v5;
private static Vendor v6;
private static Vendor v7;
private static Vendor v8;
private static Vendor v9;
private static Vendor v10;
private static Vendor v11;
private static Place v1;
private static Place v2;
private static Place v3;
private static Place v4;
private static Place v5;
private static Place v6;
private static Place v7;
private static Place v8;
private static Place v9;
private static Place v10;
private static Place v11;
private static Item ITEM1 = new SimpleItem("ITEM1");
private static Item ITEM2 = new SimpleItem("ITEM2");
private static Item ITEM3 = new SimpleItem("ITEM3");
private void add(Place place, Offer offer){
if (place.isEmpty()){
place.add(new SimpleVendor());
}
Vendor vendor = place.get().iterator().next();
vendor.add(offer);
}
@Before
public void setUp() throws Exception {
v1 = new SimpleVendor("v1_x0y0z0");
v2 = new SimpleVendor("v2_x1y0z0");
v3 = new SimpleVendor("v3_x0y1z0");
v4 = new SimpleVendor("v4_x0y0z1");
v5 = new SimpleVendor("v5_x1y1z0");
v1 = new SimplePlace("v1_x0y0z0",0,0,0);
v2 = new SimplePlace("v2_x1y0z0",1,0,0);
v3 = new SimplePlace("v3_x0y1z0",0,1,0);
v4 = new SimplePlace("v4_x0y0z1",0,0,1);
v5 = new SimplePlace("v5_x1y1z0",1,1,0);
v6 = new SimpleVendor("v6_x110y100z100");
v7 = new SimpleVendor("v7_x115y100z100");
v8 = new SimpleVendor("v8_x105y105z100");
v9 = new SimpleVendor("v9_x100y115z100");
v10 = new SimpleVendor("v10_x100y100z100");
v11 = new SimpleVendor("v11_x105y105z105");
v1.setX(0); v1.setY(0); v1.setZ(0);
v2.setX(1); v2.setY(0); v2.setZ(0);
v3.setX(0); v3.setY(1); v3.setZ(0);
v4.setX(0); v4.setY(0); v4.setZ(1);
v5.setX(1); v5.setY(1); v5.setZ(0);
v6.setX(110); v6.setY(100); v6.setZ(100);
v7.setX(115); v7.setY(100); v7.setZ(100);
v8.setX(105); v8.setY(105); v8.setZ(100);
v9.setX(100); v9.setY(115); v9.setZ(100);
v10.setX(100); v10.setY(100); v10.setZ(100);
v11.setX(105); v11.setY(105); v11.setZ(105);
v6 = new SimplePlace("v6_x110y100z100",110,100,100);
v7 = new SimplePlace("v7_x115y100z100",115,100,100);
v8 = new SimplePlace("v8_x105y105z100",105,105,100);
v9 = new SimplePlace("v9_x100y115z100",100,115,100);
v10 = new SimplePlace("v10_x100y100z100",100,100,100);
v11 = new SimplePlace("v11_x105y105z105",105,105,105);
market.add(v1);
market.add(v2);
@@ -73,19 +66,19 @@ public class MarketAnalyzerTest extends Assert {
market.add(v10);
market.add(v11);
market.add(v6, new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100));
market.add(v7, new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100));
market.add(v9, new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100));
market.add(v10, new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100));
market.add(v6, new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 50));
market.add(v7, new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 120));
market.add(v9, new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 200));
market.add(v10, new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 150));
market.add(v9, new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 100));
market.add(v6, new SimpleOffer(OFFER_TYPE.BUY, ITEM2, 140));
market.add(v7, new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 154));
market.add(v10, new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 140));
market.add(v11, new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 500));
add(v6, new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100, 1));
add(v7, new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100, 1));
add(v9, new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100, 1));
add(v10, new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100, 1));
add(v6, new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 50, 1));
add(v7, new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 120, 1));
add(v9, new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 200, 1));
add(v10, new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 150, 1));
add(v9, new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 100, 1));
add(v6, new SimpleOffer(OFFER_TYPE.BUY, ITEM2, 140, 1));
add(v7, new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 154, 1));
add(v10, new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 140, 1));
add(v11, new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 500, 1));
}
@@ -96,7 +89,7 @@ public class MarketAnalyzerTest extends Assert {
MarketAnalyzer analyzer = new MarketAnalyzer(market);
analyzer.setJumps(5);analyzer.setMaxDistance(1);analyzer.setTank(1);
Collection<Path<Vendor>> paths = analyzer.getPaths(v1, v2);
Collection<Path<Place>> paths = analyzer.getPaths(v1, v2);
TestUtil.assertCollectionEquals(paths, Path.toPath(v1, v2));
paths = analyzer.getPaths(v1, v3);
@@ -121,7 +114,7 @@ public class MarketAnalyzerTest extends Assert {
MarketAnalyzer analyzer = new MarketAnalyzer(market);
analyzer.setJumps(5);analyzer.setMaxDistance(1);analyzer.setTank(2);
Collection<Path<Vendor>> paths = analyzer.getPaths(v1, v2);
Collection<Path<Place>> paths = analyzer.getPaths(v1, v2);
TestUtil.assertCollectionContainAll(paths, Path.toPath(v1, v2));
paths = analyzer.getPaths(v1, v3);
@@ -147,7 +140,7 @@ public class MarketAnalyzerTest extends Assert {
MarketAnalyzer analyzer = new MarketAnalyzer(market);
analyzer.setJumps(2);analyzer.setMaxDistance(10);analyzer.setTank(15);
Collection<Path<Vendor>> paths = analyzer.getPaths(v10, v6);
Collection<Path<Place>> paths = analyzer.getPaths(v10, v6);
TestUtil.assertCollectionContainAll(paths, Path.toPath(v10, v6), Path.toPath(v10, v11, v6),
Path.toPath(v10, v8, v6));
@@ -163,7 +156,7 @@ public class MarketAnalyzerTest extends Assert {
MarketAnalyzer analyzer = new MarketAnalyzer(market);
analyzer.setJumps(3);analyzer.setMaxDistance(10);analyzer.setTank(15);
Collection<Path<Vendor>> paths = analyzer.getPaths(v10, v6);
Collection<Path<Place>> paths = analyzer.getPaths(v10, v6);
TestUtil.assertCollectionContainAll(paths, Path.toPath(v10, v6), Path.toPath(v10, v11, v6), Path.toPath(v10, v11, v10, v6),
Path.toPath(v10, v8, v6), Path.toPath(v10, v8, v10, v6), Path.toPath(v10, v8, v11, v6));

View File

@@ -26,10 +26,10 @@ public class MarketAnalyzerTest2 extends Assert {
// Balance: 6000000, cargo: 440, tank: 40, distance: 13.4, jumps: 6
// Ithaca (Palladium to LHS 3262) -> Morgor -> LHS 3006 -> LHS 3262 (Consumer Technology to Ithaca) -> LHS 3006 -> Morgor -> Ithaca
// Profit: 981200, avg: 490600, distance: 67.5, lands: 2
Vendor ithaca = market.get().stream().filter((v)->v.getName().equals("Ithaca")).findFirst().get();
Vendor morgor = market.get().stream().filter((v)->v.getName().equals("Morgor")).findFirst().get();
Vendor lhs3006 = market.get().stream().filter((v)->v.getName().equals("LHS 3006")).findFirst().get();
Vendor lhs3262 = market.get().stream().filter((v)->v.getName().equals("LHS 3262")).findFirst().get();
Place ithaca = market.get().stream().filter((v)->v.getName().equals("Ithaca")).findFirst().get();
Place morgor = market.get().stream().filter((v)->v.getName().equals("Morgor")).findFirst().get();
Place lhs3006 = market.get().stream().filter((v)->v.getName().equals("LHS 3006")).findFirst().get();
Place lhs3262 = market.get().stream().filter((v)->v.getName().equals("LHS 3262")).findFirst().get();
analyzer.setCargo(440);analyzer.setTank(40);analyzer.setMaxDistance(13.4);analyzer.setJumps(6);
Collection<PathRoute> paths = analyzer.getPaths(ithaca, ithaca, 6000000);
PathRoute expect = PathRoute.toPathRoute(ithaca, morgor, lhs3006, lhs3262, lhs3006, morgor, ithaca);

View File

@@ -17,57 +17,57 @@ public class MarketTest1 extends Assert {
private final static Item ITEM2 = new SimpleItem("Item2");
private final static Item ITEM3 = new SimpleItem("Item3");
private final static Offer bestSellOffer1 = new SimpleOffer(OFFER_TYPE.SELL,ITEM1,10);
private final static Offer bestSellOffer2 = new SimpleOffer(OFFER_TYPE.SELL,ITEM2,15);
private final static Offer bestSellOffer3 = new SimpleOffer(OFFER_TYPE.SELL,ITEM3,20);
private final Offer bestSellOffer1 = new SimpleOffer(OFFER_TYPE.SELL,ITEM1,10,1);
private final Offer bestSellOffer2 = new SimpleOffer(OFFER_TYPE.SELL,ITEM2,15,1);
private final Offer bestSellOffer3 = new SimpleOffer(OFFER_TYPE.SELL,ITEM3,20,1);
private final static Offer bestBuyOffer1 = new SimpleOffer(OFFER_TYPE.BUY,ITEM1,100);
private final static Offer bestBuyOffer2 = new SimpleOffer(OFFER_TYPE.BUY,ITEM2,200);
private final static Offer bestBuyOffer3 = new SimpleOffer(OFFER_TYPE.BUY,ITEM3,100);
private final static Offer bestBuyOffer4 = new SimpleOffer(OFFER_TYPE.BUY,ITEM2,150);
private final Offer bestBuyOffer1 = new SimpleOffer(OFFER_TYPE.BUY,ITEM1,100,1);
private final Offer bestBuyOffer2 = new SimpleOffer(OFFER_TYPE.BUY,ITEM2,200,1);
private final Offer bestBuyOffer3 = new SimpleOffer(OFFER_TYPE.BUY,ITEM3,100,1);
private final Offer bestBuyOffer4 = new SimpleOffer(OFFER_TYPE.BUY,ITEM2,150,1);
private final static Vendor sellVendor1 = new SimpleVendor();
private final static Vendor sellVendor2 = new SimpleVendor();
private final static Vendor sellVendor3 = new SimpleVendor();
private final static Vendor sellVendor4 = new SimpleVendor();
private final static Vendor buyVendor1 = new SimpleVendor();
private final static Vendor buyVendor2 = new SimpleVendor();
private final static Vendor buyVendor3 = new SimpleVendor();
private final static Vendor buyVendor4 = new SimpleVendor();
private final Vendor sellVendor1 = new SimpleVendor("",0,0,0);
private final Vendor sellVendor2 = new SimpleVendor("",0,0,0);
private final Vendor sellVendor3 = new SimpleVendor("",0,0,0);
private final Vendor sellVendor4 = new SimpleVendor("",0,0,0);
private final Vendor buyVendor1 = new SimpleVendor("",0,0,0);
private final Vendor buyVendor2 = new SimpleVendor("",0,0,0);
private final Vendor buyVendor3 = new SimpleVendor("",0,0,0);
private final Vendor buyVendor4 = new SimpleVendor("",0,0,0);
private Market market;
@Before
public void fillMarket(){
sellVendor1.add(bestSellOffer1);
sellVendor1.add(new SimpleOffer(OFFER_TYPE.SELL,ITEM2,100));
sellVendor2.add(new SimpleOffer(OFFER_TYPE.SELL,ITEM3,200));
sellVendor1.add(new SimpleOffer(OFFER_TYPE.SELL,ITEM2,100,1));
sellVendor2.add(new SimpleOffer(OFFER_TYPE.SELL,ITEM3,200,1));
sellVendor2.add(bestSellOffer2);
sellVendor3.add(new SimpleOffer(OFFER_TYPE.SELL,ITEM1,300));
sellVendor3.add(new SimpleOffer(OFFER_TYPE.SELL,ITEM2,300));
sellVendor3.add(new SimpleOffer(OFFER_TYPE.SELL,ITEM1,300,1));
sellVendor3.add(new SimpleOffer(OFFER_TYPE.SELL,ITEM2,300,1));
sellVendor3.add(bestSellOffer3);
sellVendor4.add(new SimpleOffer(OFFER_TYPE.SELL,ITEM2,150));
sellVendor4.add(new SimpleOffer(OFFER_TYPE.SELL,ITEM2,150,1));
buyVendor1.add(new SimpleOffer(OFFER_TYPE.BUY,ITEM2,50));
buyVendor1.add(new SimpleOffer(OFFER_TYPE.BUY,ITEM2,50,1));
buyVendor1.add(bestBuyOffer1);
buyVendor2.add(new SimpleOffer(OFFER_TYPE.BUY,ITEM1,40));
buyVendor2.add(new SimpleOffer(OFFER_TYPE.BUY,ITEM1,40,1));
buyVendor2.add(bestBuyOffer2);
buyVendor2.add(new SimpleOffer(OFFER_TYPE.BUY,ITEM3,50));
buyVendor2.add(new SimpleOffer(OFFER_TYPE.BUY,ITEM3,50,1));
buyVendor3.add(bestBuyOffer3);
buyVendor3.add(new SimpleOffer(OFFER_TYPE.BUY,ITEM2,20));
buyVendor4.add(new SimpleOffer(OFFER_TYPE.BUY,ITEM1,80));
buyVendor3.add(new SimpleOffer(OFFER_TYPE.BUY,ITEM2,20,1));
buyVendor4.add(new SimpleOffer(OFFER_TYPE.BUY,ITEM1,80,1));
buyVendor4.add(bestBuyOffer4);
market = new SimpleMarket();
market.add(sellVendor1);
market.add(sellVendor2);
market.add(sellVendor3);
market.add(sellVendor4);
market.add(buyVendor1);
market.add(buyVendor2);
market.add(buyVendor3);
market.add(buyVendor4);
market.add(sellVendor1.getPlace());
market.add(sellVendor2.getPlace());
market.add(sellVendor3.getPlace());
market.add(sellVendor4.getPlace());
market.add(buyVendor1.getPlace());
market.add(buyVendor2.getPlace());
market.add(buyVendor3.getPlace());
market.add(buyVendor4.getPlace());
}
@Test

View File

@@ -15,8 +15,8 @@ public class VendorTest extends Assert {
private final static Item ITEM1 = new SimpleItem("Item1");
private final static Item ITEM2 = new SimpleItem("Item2");
private final static Offer SELL_OFFER = new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 10);
private final static Offer BUY_OFFER = new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 10);
private final Offer SELL_OFFER = new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 10, 1);
private final Offer BUY_OFFER = new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 10, 1);
private Vendor sellVendor;
private Vendor buyVendor;

View File

@@ -18,15 +18,15 @@ public class VendorTest2 extends Assert {
private final static Item ITEM1 = new SimpleItem("Item1");
private final static Item ITEM2 = new SimpleItem("Item2");
private final static Item ITEM3 = new SimpleItem("Item3");
private final static Offer SELL_OFFER1 = new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 10);
private final static Offer SELL_OFFER2 = new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 10);
private final static Offer SELL_OFFER3 = new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 10);
private final static Offer DUBLE_SELL_OFFER1 = new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100);
private final Offer SELL_OFFER1 = new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 10, 1);
private final Offer SELL_OFFER2 = new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 10, 1);
private final Offer SELL_OFFER3 = new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 10, 1);
private final Offer DUBLE_SELL_OFFER1 = new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100, 1);
private final static Offer BUY_OFFER1 = new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 100);
private final static Offer BUY_OFFER2 = new SimpleOffer(OFFER_TYPE.BUY, ITEM2, 10);
private final static Offer BUY_OFFER3 = new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 10);
private final static Offer DUBLE_BUY_OFFER1 = new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 10);
private final Offer BUY_OFFER1 = new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 100, 1);
private final Offer BUY_OFFER2 = new SimpleOffer(OFFER_TYPE.BUY, ITEM2, 10, 1);
private final Offer BUY_OFFER3 = new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 10, 1);
private final Offer DUBLE_BUY_OFFER1 = new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 10, 1);
private Vendor sellVendor;

View File

@@ -26,18 +26,18 @@ public class PathRouteTest extends Assert {
private PathRoute initTest1(){
LOG.info("Init test 1");
v1 = new SimpleVendor("v1");
v2 = new SimpleVendor("v2");
v1 = new SimpleVendor("v1",0,0,0);
v2 = new SimpleVendor("v2",0,0,0);
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 200));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 300));
v2.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 300));
v2.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM2, 350));
v2.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 400));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100, 1));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 200, 1));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 300, 1));
v2.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 300, 1));
v2.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM2, 350, 1));
v2.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 400, 1));
PathRoute res = new PathRoute(new Vertex<>(v1));
res = (PathRoute) res.connectTo(new Vertex<>(v2), false);
PathRoute res = new PathRoute(new Vertex<>(v1.getPlace()));
res = (PathRoute) res.connectTo(new Vertex<>(v2.getPlace()), false);
res.finish();
res.sort(10000, 5);
return res.getRoot();
@@ -66,20 +66,20 @@ public class PathRouteTest extends Assert {
private PathRoute initTest2(){
LOG.info("Init test 2");
v1 = new SimpleVendor("v1");
v2 = new SimpleVendor("v2");
v3 = new SimpleVendor("v3");
v1 = new SimpleVendor("v1",0,0,0);
v2 = new SimpleVendor("v2",0,0,0);
v3 = new SimpleVendor("v3",0,0,0);
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 300));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 200));
v3.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 300));
v3.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM2, 350));
v3.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 400));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100, 1));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 300, 1));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 200, 1));
v3.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 300, 1));
v3.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM2, 350, 1));
v3.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 400, 1));
PathRoute res = new PathRoute(new Vertex<>(v1));
res = (PathRoute) res.connectTo(new Vertex<>(v2), false);
res = (PathRoute) res.connectTo(new Vertex<>(v3), false);
PathRoute res = new PathRoute(new Vertex<>(v1.getPlace()));
res = (PathRoute) res.connectTo(new Vertex<>(v2.getPlace()), false);
res = (PathRoute) res.connectTo(new Vertex<>(v3.getPlace()), false);
res.finish();
res.sort(10000, 5);
return res.getRoot();
@@ -113,26 +113,26 @@ public class PathRouteTest extends Assert {
private PathRoute initTest3(){
LOG.info("Init test 3");
v1 = new SimpleVendor("v1");
v2 = new SimpleVendor("v2");
v3 = new SimpleVendor("v3");
v4 = new SimpleVendor("v4");
v1 = new SimpleVendor("v1",0,0,0);
v2 = new SimpleVendor("v2",0,0,0);
v3 = new SimpleVendor("v3",0,0,0);
v4 = new SimpleVendor("v4",0,0,0);
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 200));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 300));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 150));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 320));
v3.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 390));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100, 1));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 200, 1));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 300, 1));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 150, 1));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 320, 1));
v3.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 390, 1));
v2.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM2, 225));
v3.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 200));
v4.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 450));
v2.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM2, 225, 1));
v3.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 200, 1));
v4.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 450, 1));
PathRoute res = new PathRoute(new Vertex<>(v1));
res = (PathRoute) res.connectTo(new Vertex<>(v2), false);
res = (PathRoute) res.connectTo(new Vertex<>(v3), false);
res = (PathRoute) res.connectTo(new Vertex<>(v4), false);
PathRoute res = new PathRoute(new Vertex<>(v1.getPlace()));
res = (PathRoute) res.connectTo(new Vertex<>(v2.getPlace()), false);
res = (PathRoute) res.connectTo(new Vertex<>(v3.getPlace()), false);
res = (PathRoute) res.connectTo(new Vertex<>(v4.getPlace()), false);
res.finish();
res.sort(10000, 5);
return res.getRoot();
@@ -176,28 +176,28 @@ public class PathRouteTest extends Assert {
private PathRoute initTest4(){
LOG.info("Init test 4");
v1 = new SimpleVendor("v1");
v2 = new SimpleVendor("v2");
v3 = new SimpleVendor("v3");
v4 = new SimpleVendor("v4");
v5 = new SimpleVendor("v5");
v1 = new SimpleVendor("v1",0,0,0);
v2 = new SimpleVendor("v2",0,0,0);
v3 = new SimpleVendor("v3",0,0,0);
v4 = new SimpleVendor("v4",0,0,0);
v5 = new SimpleVendor("v5",0,0,0);
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 410));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 200));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 300));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 270));
v4.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 300));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 410, 1));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 200, 1));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 300, 1));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 270, 1));
v4.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 300, 1));
v2.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 470));
v3.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM2, 300));
v4.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 370));
v5.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 400));
v2.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 470, 1));
v3.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM2, 300, 1));
v4.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 370, 1));
v5.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 400, 1));
PathRoute res = new PathRoute(new Vertex<>(v1));
res = (PathRoute) res.connectTo(new Vertex<>(v2), false);
res = (PathRoute) res.connectTo(new Vertex<>(v3), false);
res = (PathRoute) res.connectTo(new Vertex<>(v4), false);
res = (PathRoute) res.connectTo(new Vertex<>(v5), false);
PathRoute res = new PathRoute(new Vertex<>(v1.getPlace()));
res = (PathRoute) res.connectTo(new Vertex<>(v2.getPlace()), false);
res = (PathRoute) res.connectTo(new Vertex<>(v3.getPlace()), false);
res = (PathRoute) res.connectTo(new Vertex<>(v4.getPlace()), false);
res = (PathRoute) res.connectTo(new Vertex<>(v5.getPlace()), false);
res.finish();
res.sort(10000, 5);
return res.getRoot();
@@ -249,26 +249,26 @@ public class PathRouteTest extends Assert {
private PathRoute initTest5(){
LOG.info("Init test 5");
v1 = new SimpleVendor("v1");
v2 = new SimpleVendor("v2");
v3 = new SimpleVendor("v3");
v4 = new SimpleVendor("v4");
v1 = new SimpleVendor("v1",0,0,0);
v2 = new SimpleVendor("v2",0,0,0);
v3 = new SimpleVendor("v3",0,0,0);
v4 = new SimpleVendor("v4",0,0,0);
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 200));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 300));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 150));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 320));
v3.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 390));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100, 1));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 200, 1));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 300, 1));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 150, 1));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 320, 1));
v3.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 390, 1));
v2.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM2, 225));
v3.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 200));
v4.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 450));
v2.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM2, 225, 1));
v3.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 200, 1));
v4.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 450, 1));
PathRoute res = new PathRoute(new Vertex<>(v1));
res = (PathRoute) res.connectTo(new Vertex<>(v2), false);
res = (PathRoute) res.connectTo(new Vertex<>(v3), false);
res = (PathRoute) res.connectTo(new Vertex<>(v4), false);
PathRoute res = new PathRoute(new Vertex<>(v1.getPlace()));
res = (PathRoute) res.connectTo(new Vertex<>(v2.getPlace()), false);
res = (PathRoute) res.connectTo(new Vertex<>(v3.getPlace()), false);
res = (PathRoute) res.connectTo(new Vertex<>(v4.getPlace()), false);
res.finish();
res.sort(500, 5);
return res.getRoot();
@@ -314,19 +314,19 @@ public class PathRouteTest extends Assert {
private PathRoute initTest6A(){
LOG.info("Init test 6A");
v1 = new SimpleVendor("v1");
v2 = new SimpleVendor("v2");
v1 = new SimpleVendor("v1",0,0,0);
v2 = new SimpleVendor("v2",0,0,0);
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 200));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 300));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 150));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 320));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100, 1));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 200, 1));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 300, 1));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 150, 1));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 320, 1));
v2.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM2, 225));
v2.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM2, 225, 1));
PathRoute res = new PathRoute(new Vertex<>(v1));
res = (PathRoute) res.connectTo(new Vertex<>(v2), false);
PathRoute res = new PathRoute(new Vertex<>(v1.getPlace()));
res = (PathRoute) res.connectTo(new Vertex<>(v2.getPlace()), false);
res.finish();
res.sort(500, 5);
return res.getRoot();
@@ -334,17 +334,17 @@ public class PathRouteTest extends Assert {
private PathRoute initTest6B(){
LOG.info("Init test 6B");
v3 = new SimpleVendor("v3");
v4 = new SimpleVendor("v4");
v3 = new SimpleVendor("v3",0,0,0);
v4 = new SimpleVendor("v4",0,0,0);
v3.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 390));
v3.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 390, 1));
v3.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 200));
v4.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 450));
v3.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 200, 1));
v4.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 450, 1));
PathRoute res = new PathRoute(new Vertex<>(v2));
res = (PathRoute) res.connectTo(new Vertex<>(v3), false);
res = (PathRoute) res.connectTo(new Vertex<>(v4), false);
PathRoute res = new PathRoute(new Vertex<>(v2.getPlace()));
res = (PathRoute) res.connectTo(new Vertex<>(v3.getPlace()), false);
res = (PathRoute) res.connectTo(new Vertex<>(v4.getPlace()), false);
res.finish();
res.sort(500, 5);
return res.getRoot();

View File

@@ -5,10 +5,7 @@ import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.trader.core.*;
import ru.trader.store.simple.SimpleItem;
import ru.trader.store.simple.SimpleMarket;
import ru.trader.store.simple.SimpleOffer;
import ru.trader.store.simple.SimpleVendor;
import ru.trader.store.simple.*;
import java.util.ArrayList;
@@ -22,36 +19,47 @@ public class RouteGraphTest extends Assert {
private static Vendor v2;
private static Vendor v3;
private static Vendor v4;
private static Place p1;
private static Place p2;
private static Place p3;
private static Place p4;
static {
p1 = new SimplePlace("v1");
p2 = new SimplePlace("v2");
p3 = new SimplePlace("v3");
p4 = new SimplePlace("v4");
v1 = new SimpleVendor("v1");
v2 = new SimpleVendor("v2");
v3 = new SimpleVendor("v3");
v4 = new SimpleVendor("v4");
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 200));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 300));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 150));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 320));
v3.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 390));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 100, 1));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM2, 200, 1));
v1.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 300, 1));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 150, 1));
v2.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 320, 1));
v3.add(new SimpleOffer(OFFER_TYPE.SELL, ITEM3, 390, 1));
v2.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM2, 225));
v3.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 200));
v4.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 450));
v2.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM2, 225, 1));
v3.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 200, 1));
v4.add(new SimpleOffer(OFFER_TYPE.BUY, ITEM3, 450, 1));
market.add(v1);market.add(v2);market.add(v3);market.add(v4);
p1.add(v1);p2.add(v2);p3.add(v3);p4.add(v4);
market.add(p1);market.add(p2);market.add(p3);market.add(p4);
}
@Test
public void testRoutes() throws Exception {
RouteGraph graph = new RouteGraph(v1, market.get(), 1, 1, true, 4);
RouteGraph graph = new RouteGraph(p1, market.get(), 1, 1, true, 4);
graph.setBalance(500);
graph.setCargo(5);
//Profit: 150 180 200 230 670 620 950 890 620 950 1015 1180 890 950 930
//Landings: 1 2 3 4 4 2 3 3 2 3 4 4 3 3 4
//Prof: 150 90 66.66 57.5 167.5 310 316.66 296.66 310 316.66 253.75 295 296.66 316.66 232.5
ArrayList<Path<Vendor>> routes = (ArrayList<Path<Vendor>>) graph.getPathsTo(v4, 5);
ArrayList<Path<Place>> routes = (ArrayList<Path<Place>>) graph.getPathsTo(p4, 5);
assertEquals(5, routes.size());
PathRoute path = (PathRoute) routes.get(0).getRoot();

View File

@@ -4,6 +4,7 @@ import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import ru.trader.core.Market;
import ru.trader.core.Place;
import ru.trader.core.Vendor;
import ru.trader.store.simple.Store;
@@ -24,7 +25,7 @@ public class RouteSearcherTest extends Assert {
// Balance: 6000000, cargo: 440, tank: 40, distance: 13.4, jumps: 6
// Ithaca (Palladium to LHS 3262) -> Morgor -> LHS 3006 -> LHS 3262 (Consumer Technology to Ithaca) -> LHS 3006 -> Morgor -> Ithaca
// Profit: 981200, avg: 490600, distance: 67.5, lands: 2
Vendor ithaca = market.get().stream().filter((v)->v.getName().equals("Ithaca")).findFirst().get();
Place ithaca = market.get().stream().filter((v)->v.getName().equals("Ithaca")).findFirst().get();
RouteSearcher searcher = new RouteSearcher(13.4, 40);
RouteGraph graph = new RouteGraph(ithaca, market.get(), 40, 13.4, true, 6);
@@ -32,7 +33,7 @@ public class RouteSearcherTest extends Assert {
graph.setBalance(6000000);
List<Path<Vendor>> epaths = graph.getPathsTo(ithaca, 10);
List<Path<Place>> epaths = graph.getPathsTo(ithaca, 10);
PathRoute expect = epaths.stream().map(p -> (PathRoute) p).findFirst().get();
List<PathRoute> apaths = searcher.getPaths(ithaca, ithaca, market.get(), 6, 6000000, 440, 10);
@@ -46,15 +47,15 @@ public class RouteSearcherTest extends Assert {
// Balance: 6000000, cargo: 440, tank: 40, distance: 13.6, jumps: 6
// Ithaca (Palladium to LHS 3262) -> Morgor -> LHS 3006 -> LHS 3262 (Consumer Technology to Ithaca) -> LHS 3006 -> Morgor -> Ithaca
// Profit: 981200, avg: 490600, distance: 67.5, lands: 2
Vendor ithaca = market.get().stream().filter((v)->v.getName().equals("Ithaca")).findFirst().get();
Vendor lhs3262 = market.get().stream().filter((v)->v.getName().equals("LHS 3262")).findFirst().get();
Place ithaca = market.get().stream().filter((v)->v.getName().equals("Ithaca")).findFirst().get();
Place lhs3262 = market.get().stream().filter((v)->v.getName().equals("LHS 3262")).findFirst().get();
RouteSearcher searcher = new RouteSearcher(13.6, 40);
RouteGraph graph = new RouteGraph(ithaca, market.get(), 40, 13.6, true, 6);
graph.setCargo(440);
graph.setBalance(6000000);
List<Path<Vendor>> epaths = graph.getPathsTo(ithaca, 10);
List<Path<Place>> epaths = graph.getPathsTo(ithaca, 10);
PathRoute expect = epaths.stream().map(p -> (PathRoute) p).findFirst().get();
List<PathRoute> apaths = searcher.getPaths(ithaca, ithaca, market.get(), 6, 6000000, 440, 10);

View File

@@ -20,15 +20,15 @@ public class ItemStatTest extends Assert {
@Before
public void fill(){
itemSellStat.put(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 10));
itemSellStat.put(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 20));
itemSellStat.put(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 30));
itemSellStat.put(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 40));
itemSellStat.put(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 10, 1));
itemSellStat.put(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 20, 1));
itemSellStat.put(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 30, 1));
itemSellStat.put(new SimpleOffer(OFFER_TYPE.SELL, ITEM1, 40, 1));
itemBuyStat.put(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 100));
itemBuyStat.put(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 200));
itemBuyStat.put(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 300));
itemBuyStat.put(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 400));
itemBuyStat.put(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 100, 1));
itemBuyStat.put(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 200, 1));
itemBuyStat.put(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 300, 1));
itemBuyStat.put(new SimpleOffer(OFFER_TYPE.BUY, ITEM1, 400, 1));
}

View File

@@ -8,12 +8,12 @@
<item name="Item 5" id="i5"/>
<item name="Item 6" id="i6"/>
</items>
<vendors>
<places>
<vendor name="Vendor 1">
<offer item="i1" type="SELL" price="140"/>
</vendor>
<vendor name="Empty system" x="1" y="2" z="3"/>
</vendors>
</places>
</market>

File diff suppressed because one or more lines are too long