Archived
0

Implement check of intersect controlling spheres

This commit is contained in:
iMoHax
2016-10-28 16:18:29 +03:00
parent cc7db01dd6
commit 58de159911
3 changed files with 540 additions and 0 deletions

View File

@@ -0,0 +1,169 @@
package ru.trader.analysis;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.trader.core.Market;
import ru.trader.core.Place;
import ru.trader.store.simple.Store;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.stream.Collectors;
public class PowerPlayAnalyzatorTest extends Assert {
private final static Logger LOG = LoggerFactory.getLogger(RouteSearcherTest.class);
private Market world;
private Place lhs3262;
private Place aulin;
private Place morgor;
private Place lhs417;
@Before
public void setUp() throws Exception {
InputStream is = getClass().getResourceAsStream("/world.xml");
world = Store.loadFromFile(is);
lhs3262 = world.get("LHS 3262");
aulin = world.get("Aulin");
morgor = world.get("Morgor");
lhs417 = world.get("LHS 417");
}
@Test
public void intersectTest() throws Exception {
Collection<Place> starSystems = world.get();
Collection<Place> controllingLhs3262 = starSystems.stream().filter(p -> p.getDistance(lhs3262) <= 15).collect(Collectors.toList());
Collection<Place> controllingAulin = starSystems.stream().filter(p -> p.getDistance(aulin) <= 15).collect(Collectors.toList());
Collection<Place> controllingMorgor = starSystems.stream().filter(p -> p.getDistance(morgor) <= 15).collect(Collectors.toList());
Collection<Place> expectedIntersect = controllingLhs3262.stream().filter(controllingAulin::contains).collect(Collectors.toList());
Collection<Place> expected3Intersect = controllingLhs3262.stream().filter(controllingAulin::contains).filter(controllingMorgor::contains).collect(Collectors.toList());
PowerPlayAnalyzator analyzator = new PowerPlayAnalyzator(world);
Collection<Place> centers = new ArrayList<>();
centers.add(lhs3262);
Collection<Place> intersects = analyzator.getIntersects(starSystems, centers, 15);
LOG.info("Test intersects by LHS 3262, found {}", intersects.size());
for (Place intersect : intersects) {
assertTrue(lhs3262.getDistance(intersect) <= 15);
}
assertTrue(intersects.containsAll(controllingLhs3262));
assertEquals(controllingLhs3262.size(), intersects.size());
centers.add(aulin);
intersects = analyzator.getIntersects(starSystems, centers, 15);
LOG.info("Test intersects by LHS 3262 and Aulin, found {}", intersects.size());
for (Place intersect : intersects) {
assertTrue(lhs3262.getDistance(intersect) <= 15);
assertTrue(aulin.getDistance(intersect) <= 15);
}
assertTrue(intersects.containsAll(expectedIntersect));
assertEquals(expectedIntersect.size(), intersects.size());
centers.add(morgor);
intersects = analyzator.getIntersects(starSystems, centers, 15);
LOG.info("Test intersects by LHS 3262 and Aulin and Morgor, found {}", intersects.size());
for (Place intersect : intersects) {
assertTrue(lhs3262.getDistance(intersect) <= 15);
assertTrue(aulin.getDistance(intersect) <= 15);
assertTrue(morgor.getDistance(intersect) <= 15);
}
assertTrue(intersects.containsAll(expected3Intersect));
assertEquals(expected3Intersect.size(), intersects.size());
intersects = analyzator.getIntersects(starSystems, centers, 12);
LOG.info("Test intersects by LHS 3262 and Aulin and Morgor, 12 radius, found {}", intersects.size());
for (Place intersect : intersects) {
assertTrue(lhs3262.getDistance(intersect) <= 12);
assertTrue(aulin.getDistance(intersect) <= 12);
assertTrue(morgor.getDistance(intersect) <= 12);
}
assertEquals(0, intersects.size());
}
@Test
public void intersectTest2() throws Exception {
Collection<Place> starSystems = world.get();
Collection<Place> controllingLhs3262 = starSystems.stream().filter(p -> p.getDistance(lhs3262) <= 12).collect(Collectors.toList());
Collection<Place> controllingAulin = starSystems.stream().filter(p -> p.getDistance(aulin) <= 12).collect(Collectors.toList());
Collection<Place> controllingMorgor = starSystems.stream().filter(p -> p.getDistance(morgor) <= 12).collect(Collectors.toList());
Collection<Place> controllingLhs417 = starSystems.stream().filter(p -> p.getDistance(lhs417) <= 12).collect(Collectors.toList());
Collection<Place> expectedIntersect = controllingLhs417.stream().filter(p -> controllingLhs3262.contains(p) || controllingAulin.contains(p)).collect(Collectors.toList());
Collection<Place> expected3Intersect = controllingLhs417.stream().filter(p -> controllingLhs3262.contains(p) || controllingAulin.contains(p) || controllingMorgor.contains(p)).collect(Collectors.toList());
Collection<Place> expected2Intersect = controllingLhs417.stream().filter(p -> controllingAulin.contains(p) || controllingMorgor.contains(p)).collect(Collectors.toList());
PowerPlayAnalyzator analyzator = new PowerPlayAnalyzator(world);
Collection<Place> centers = new ArrayList<>();
centers.add(lhs3262);
centers.add(aulin);
Collection<Place> intersects = analyzator.getIntersects(lhs417, starSystems, centers, 12);
LOG.info("Test LHS 417 intersect LHS 3262 or Aulin, found {}", intersects.size());
for (Place intersect : intersects) {
assertTrue(lhs3262.getDistance(intersect) <= 12 || aulin.getDistance(intersect) <= 12);
assertTrue(lhs417.getDistance(intersect) <= 12);
}
assertTrue(intersects.containsAll(expectedIntersect));
assertEquals(expectedIntersect.size(), intersects.size());
centers.add(morgor);
intersects = analyzator.getIntersects(lhs417, starSystems, centers, 12);
LOG.info("Test LHS 417 intersect LHS 3262 or Aulin or Morgor, found {}", intersects.size());
for (Place intersect : intersects) {
assertTrue(lhs3262.getDistance(intersect) <= 12 || aulin.getDistance(intersect) <= 12 || morgor.getDistance(intersect) <= 12);
assertTrue(lhs417.getDistance(intersect) <= 12);
}
assertTrue(intersects.containsAll(expected3Intersect));
assertEquals(expected3Intersect.size(), intersects.size());
centers.clear();
centers.add(morgor);
intersects = analyzator.getIntersects(lhs417, starSystems, centers, 12);
LOG.info("Test LHS 417 intersect Morgor, found {}", intersects.size());
for (Place intersect : intersects) {
assertTrue(morgor.getDistance(intersect) <= 12);
assertTrue(lhs417.getDistance(intersect) <= 12);
}
assertEquals(0, intersects.size());
centers.add(aulin);
intersects = analyzator.getIntersects(lhs417, starSystems, centers, 12);
LOG.info("Test LHS 417 intersect Aulin or Morgor, found {}", intersects.size());
for (Place intersect : intersects) {
assertTrue(aulin.getDistance(intersect) <= 12 || morgor.getDistance(intersect) <= 12);
assertTrue(lhs417.getDistance(intersect) <= 12);
}
assertTrue(intersects.containsAll(expected2Intersect));
assertEquals(expected2Intersect.size(), intersects.size());
}
@Test
public void nearTest() throws Exception {
Collection<Place> starSystems = world.get();
Collection<Place> controllingLhs3262 = starSystems.stream().filter(p -> p.getDistance(lhs3262) <= 15).collect(Collectors.toList());
Collection<Place> controllingAulin = starSystems.stream().filter(p -> p.getDistance(aulin) <= 15).collect(Collectors.toList());
Collection<Place> controllingMorgor = starSystems.stream().filter(p -> p.getDistance(morgor) <= 15).collect(Collectors.toList());
PowerPlayAnalyzator analyzator = new PowerPlayAnalyzator(world);
Collection<Place> centers = new ArrayList<>();
centers.add(lhs3262);
centers.add(aulin);
Collection<Place> near = analyzator.getNear(starSystems, centers, 15, 30);
LOG.info("Test near by LHS 3262 and Aulin, found {}", near.size());
assertTrue(near.size() > 0);
for (Place place : near) {
Collection<Place> intersect = analyzator.getIntersects(place, starSystems, centers, 15);
assertEquals(0, intersect.size());
}
}
}