package com.stylefeng.guns.modular.crossCity.server.impl;
|
|
import org.junit.Test;
|
|
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertTrue;
|
|
public class SiteServiceImplTest {
|
|
private static final String SQUARE = "0,0;10,0;10,10;0,10";
|
|
@Test
|
public void shouldRecognizePointInsidePolygon() {
|
assertTrue(SiteServiceImpl.isPointInElectronicFence("5,5", SQUARE));
|
}
|
|
@Test
|
public void shouldRecognizePointOutsidePolygon() {
|
assertFalse(SiteServiceImpl.isPointInElectronicFence("11,5", SQUARE));
|
}
|
|
@Test
|
public void shouldIncludePointOnEdgeAndVertex() {
|
assertTrue(SiteServiceImpl.isPointInElectronicFence("10,5", SQUARE));
|
assertTrue(SiteServiceImpl.isPointInElectronicFence("0,0", SQUARE));
|
}
|
|
@Test
|
public void shouldRecognizeConcavePolygon() {
|
String concavePolygon = "0,0;10,0;10,10;5,5;0,10";
|
assertTrue(SiteServiceImpl.isPointInElectronicFence("5,4", concavePolygon));
|
assertFalse(SiteServiceImpl.isPointInElectronicFence("5,8", concavePolygon));
|
}
|
|
@Test
|
public void shouldRecognizeAnyOfMultiplePolygons() {
|
String multiplePolygons = SQUARE + "_20,20;30,20;30,30;20,30";
|
assertTrue(SiteServiceImpl.isPointInElectronicFence("25,25", multiplePolygons));
|
assertFalse(SiteServiceImpl.isPointInElectronicFence("15,15", multiplePolygons));
|
}
|
|
@Test
|
public void shouldHandleWhitespaceAndInvalidCoordinates() {
|
assertTrue(SiteServiceImpl.isPointInElectronicFence(" 5 , 5 ", " 0,0 ; 10,0 ; 10,10 ; 0,10 "));
|
assertFalse(SiteServiceImpl.isPointInElectronicFence("invalid", SQUARE));
|
assertFalse(SiteServiceImpl.isPointInElectronicFence("5,5", "0,0;10,0"));
|
assertFalse(SiteServiceImpl.isPointInElectronicFence("5,5", "0,0;invalid;10,10"));
|
assertFalse(SiteServiceImpl.isPointInElectronicFence(null, SQUARE));
|
assertFalse(SiteServiceImpl.isPointInElectronicFence("5,5", null));
|
}
|
}
|