-
Notifications
You must be signed in to change notification settings - Fork 1
/
types_test.go
164 lines (152 loc) · 5.71 KB
/
types_test.go
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
package main
import (
"fmt"
"github.com/paulsmith/gogeos/geos"
"testing"
)
var testWKTPoints = WKTList{
WKT{`Point (37.49050299234488648 55.9046311531849156)`},
WKT{`Point (37.49841795020783763 55.90410272123053659)`},
WKT{`Point (37.50219901017021584 55.90628989136003213)`},
WKT{`Point (37.50111661022060616 55.90685429246502736)`},
WKT{`Point (37.50809183234561317 55.90313311150912057)`},
}
var testWKTPolygon = WKTList{
WKT{`Polygon ((37.5057715086638126 55.90277770368236077,
37.50574682110969604 55.90242536261191475,
37.50567300301955953 55.9020751958058284,
37.50555051080679192 55.90172936207174104,
37.50538010091206331 55.90138999344667781,
37.50516282510906763 55.90105918205599522,
37.50490002399205736 55.90073896721945346,
37.50459331868550805 55.90043132288415961,
37.50424460082804501 55.90013814546146165,
37.50385602089269099 55.89986124214286889,
37.5034299749158464 55.89960231976647975,
37.50296908971730403 55.89936297430281087,
37.50247620670245396 55.89914468102418255,
37.50195436434673724 55.89894878541839063,
37.50140677946995993 55.89877649490222922,
37.50083682741633595 55.89862887138583147,
37.50024802126142021 55.89850682473350929,
37.49964399017432726 55.89841110716112382,
37.49902845706760957 55.89834230860433451,
37.49840521567238483 55.89830085308629748,
37.49777810717913695 55.89828699610691842,
37.49715099658746453 55.89830082306978909,
37.49652774890983409 55.89834224875629332,
37.49591220537541858 55.89841101785037125,
37.49530815977951903 55.89850670651041042,
37.49471933512401733 55.8986287249789271,
37.4941493606918641 55.89877632121375228,
37.49360174969638848 55.89894858551870982,
37.49307987764263572 55.89914445614523686,
37.49258696153322745 55.89936272583049259,
37.49212604004738836 55.8996020492321648,
37.49169995481393158 55.89986095121391685,
37.49131133289441919 55.90013783593095553,
37.49096257058383941 55.90043099665989956,
37.49065581862902974 55.90073862631221857,
37.49039296895594475 55.90105882856713038,
37.49017564298828376 55.90138962955514046,
37.49000518162931428 55.9017289900207075,
37.48988263696996626 55.90207481788885246,
37.48980876577409305 55.9024249811588021,
37.48978402478245187 55.9027773210448089,
37.48980856786474902 55.90312966528380656,
37.4898822450381104 55.90347984152725758,
37.49000460335894758 55.90382569073521069,
37.49017488968347322 55.90416508048958377,
37.49039205528071506 55.90449591814478225,
37.49065476227003302 55.90481616373426732,
37.49096139184472065 55.90512384255375622,
37.49131005423088681 55.90541705734272426,
37.49169860032140633 55.90569399998963007,
37.49212463491324598 55.90595296268794812,
37.4925855314669576 55.90619234847434171,
37.49307844829753833 55.90641068108356393,
37.49360034609694736 55.9066066140593918,
37.49414800668009207 55.90677893906486418,
37.49471805283865677 55.90692659334061432,
37.49530696917989303 55.90704866626490599,
37.49591112382154279 55.90714440497499282,
37.49652679080874407 55.90721321901472862,
37.49715017311377352 55.90725468397970843,
37.49777742607648179 55.90726854413740909,
37.49840468113998782 55.9072547140060081,
37.49902806973441471 55.90721327888211079,
37.49964374716074644 55.9071444943141671,
37.50024791632684185 55.90704878452481807,
37.50083685118811161 55.90692673979181393,
37.50140691974794294 55.90677911280403833,
37.50195460647525891 55.90660681401485732,
37.50247653400033698 55.9064109060220602,
37.50296948395456553 55.90619259700847721,
37.50343041682541667 55.90595323328486899,
37.50385649070368999 55.90569429098043486,
37.50424507880744329 55.90541736693279518,
37.50459378567435209 55.90512416883379387,
37.50490046192280147 55.9048165046921639,
37.50516321749094573 55.90449627167792812,
37.50538043327229332 55.90416544441794144,
37.50555077107668467 55.90382606281468014,
37.50567318185555621 55.9034802194635887,
37.50574691214163181 55.9031300467467176,
37.5057715086638126 55.90277770368236077,
37.5057715086638126 55.90277770368236077),
(37.49592561313251338 55.90239262443200374,
37.49683531469543851 55.90171633711343446,
37.50011815077035493 55.90166090320381898,
37.50045434482622397 55.90290260379194365,
37.49727038935596823 55.90357887042803497,
37.49592561313251338 55.90239262443200374))`}}
//Point belongs Polygon
var insidePolygonWKT = `Point (37.49841795020783763 55.90410272123053659)`
//Point inside Torus
var insideTorusWKT = `Point (37.49825919540263897 55.90223741199158525)`
func TestWKTList_GetGeosGeom(t *testing.T) {
geosTrashList, err := testWKTPoints.GetGeosGeom()
if err != nil {
t.Errorf(`couldn't load WKT to geos geometry list: %v\n`, err)
}
for _, val := range geosTrashList {
n,
err := val.IsEmpty()
fmt.Println(n,
val)
if n || err != nil {
t.Error(`Number of points should be 1 not 0 `)
t.Error(err)
}
}
}
func TestGeosGeomList_IsIntersect(t *testing.T) {
//init point inside Polygon
insidePolygonPoint, err := geos.FromWKT(insidePolygonWKT)
if err != nil {
t.Errorf(`Couldn't get point from WKT: %v\n`, err)
}
//init point inside torus
insideTorusPoint, err := geos.FromWKT(insideTorusWKT)
if err != nil {
t.Errorf(`Couldn't get point from WKT: %v\n`, err)
}
geosPolygon, err := testWKTPolygon.GetGeosGeom()
if err != nil {
t.Errorf(`Couldn't load WKT to geos geometry list: %v\n`, err)
}
shouldIntersect, err := geosPolygon.IsIntersect(insidePolygonPoint)
if err != nil {
t.Errorf(`Couldn't define intersection: %v\n`, err)
}
if shouldIntersect != true {
t.Errorf(`Wrong intersection with Polygon: %v\n`, err)
}
shouldNotIntersect, err := geosPolygon.IsIntersect(insideTorusPoint)
if err != nil {
t.Errorf(`Couldn't define intersection: %v\n`, err)
}
if shouldNotIntersect != false {
t.Errorf(`Wrong intersection with torus: %v\n`, err)
}
}