puzhibing
5 天以前 10b15315adbf81a2d88f22b33da11030c07f1918
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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));
    }
}