22
33using LinqToDB ;
44using NUnit . Framework ;
5- using NTSG = NetTopologySuite . Geometries ;
6-
7- using LinqToDBPostGisNetTopologySuite . Tests . Entities ;
85
96namespace LinqToDBPostGisNetTopologySuite . Tests
107{
@@ -25,13 +22,12 @@ public void TestGeometryType()
2522 {
2623 using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
2724 {
28- // TODO: shared method
2925 const string wkt = "LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)" ;
30- db . Insert ( new TestGeometryEntity ( 1 , null ) ) ;
31- var geometry = db . TestGeometries . Select ( g => GeometryInput . STGeomFromText ( wkt ) ) . Single ( ) ;
32- db . Update ( new TestGeometryEntity ( 1 , geometry ) ) ;
26+ db . TestGeometries . Value ( g => g . Id , 1 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromText ( wkt ) ) . Insert ( ) ;
27+
28+ var geometryType = db . TestGeometries . Select ( g => g . Geometry . GeometryType ( ) ) . Single ( ) ;
3329
34- Assert . AreEqual ( "LINESTRING" , db . TestGeometries . Select ( g => g . Geometry . GeometryType ( ) ) . Single ( ) ) ;
30+ Assert . AreEqual ( "LINESTRING" , geometryType ) ;
3531 }
3632 }
3733
@@ -40,27 +36,15 @@ public void TestSTBoundary()
4036 {
4137 using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
4238 {
43- // TODO: shared method
4439 const string wkt1 = "LINESTRING(100 150,50 60, 70 80, 160 170)" ;
45- db . Insert ( new TestGeometryEntity ( 1 , null ) ) ;
46- var geometry1 = db . TestGeometries . Where ( g => g . Id == 1 ) . Select ( g => GeometryInput . STGeomFromText ( wkt1 ) ) . Single ( ) ;
47- db . Update ( new TestGeometryEntity ( 1 , geometry1 ) ) ;
48-
40+ db . TestGeometries . Value ( g => g . Id , 1 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromText ( wkt1 ) ) . Insert ( ) ;
4941 const string wkt2 = "POLYGON (( 10 130, 50 190, 110 190, 140 150, 150 80, 100 10, 20 40, 10 130), (70 40, 100 50, 120 80, 80 110, 50 90, 70 40))" ;
50- db . Insert ( new TestGeometryEntity ( 2 , null ) ) ;
51- var geometry2 = db . TestGeometries . Where ( g => g . Id == 2 ) . Select ( g => GeometryInput . STGeomFromText ( wkt2 ) ) . Single ( ) ;
52- db . Update ( new TestGeometryEntity ( 2 , geometry2 ) ) ;
53-
54- var boundary1 = db . TestGeometries
55- . Where ( g => g . Id == 1 )
56- . Select ( g => g . Geometry . STBoundary ( ) . STAsText ( ) )
57- . Single ( ) ;
42+ db . TestGeometries . Value ( g => g . Id , 2 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromText ( wkt2 ) ) . Insert ( ) ;
43+
44+ var boundary1 = db . TestGeometries . Where ( g => g . Id == 1 ) . Select ( g => g . Geometry . STBoundary ( ) . STAsText ( ) ) . Single ( ) ;
5845 Assert . AreEqual ( "MULTIPOINT(100 150,160 170)" , boundary1 ) ;
5946
60- var boundary2 = db . TestGeometries
61- . Where ( g => g . Id == 2 )
62- . Select ( g => g . Geometry . STBoundary ( ) . STAsText ( ) )
63- . Single ( ) ;
47+ var boundary2 = db . TestGeometries . Where ( g => g . Id == 2 ) . Select ( g => g . Geometry . STBoundary ( ) . STAsText ( ) ) . Single ( ) ;
6448 Assert . AreEqual ( "MULTILINESTRING((10 130,50 190,110 190,140 150,150 80,100 10,20 40,10 130),(70 40,100 50,120 80,80 110,50 90,70 40))" , boundary2 ) ;
6549 }
6650 }
@@ -70,15 +54,10 @@ public void TestSTDimension()
7054 {
7155 using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
7256 {
73- // TODO: shared method
7457 const string wkt = "GEOMETRYCOLLECTION(LINESTRING(1 1,0 0),POINT(0 0))" ;
75- db . Insert ( new TestGeometryEntity ( 1 , null ) ) ;
76- var geometry = db . TestGeometries . Select ( g => GeometryInput . STGeomFromText ( wkt ) ) . Single ( ) ;
77- db . Update ( new TestGeometryEntity ( 1 , geometry ) ) ;
58+ db . TestGeometries . Value ( g => g . Id , 1 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromText ( wkt ) ) . Insert ( ) ;
7859
79- var dimension = db . TestGeometries
80- . Select ( g => g . Geometry . STDimension ( ) )
81- . Single ( ) ;
60+ var dimension = db . TestGeometries . Select ( g => g . Geometry . STDimension ( ) ) . Single ( ) ;
8261
8362 Assert . AreEqual ( 1 , dimension ) ;
8463 }
@@ -89,15 +68,10 @@ public void TestSTEndPoint()
8968 {
9069 using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
9170 {
92- // TODO: shared method
9371 const string wkt = "LINESTRING(1 1, 2 2, 3 3)" ;
94- db . Insert ( new TestGeometryEntity ( 1 , null ) ) ;
95- var geometry = db . TestGeometries . Select ( g => GeometryInput . STGeomFromText ( wkt ) ) . Single ( ) ;
96- db . Update ( new TestGeometryEntity ( 1 , geometry ) ) ;
72+ db . TestGeometries . Value ( g => g . Id , 1 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromText ( wkt ) ) . Insert ( ) ;
9773
98- var endPoint = db . TestGeometries
99- . Select ( g => g . Geometry . STEndPoint ( ) . STAsText ( ) )
100- . Single ( ) ;
74+ var endPoint = db . TestGeometries . Select ( g => g . Geometry . STEndPoint ( ) . STAsText ( ) ) . Single ( ) ;
10175
10276 Assert . AreEqual ( "POINT(3 3)" , endPoint ) ;
10377 }
@@ -108,15 +82,10 @@ public void TestSTEnvelope()
10882 {
10983 using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
11084 {
111- // TODO: shared method
11285 const string wkt = "LINESTRING(0 0, 1 3)" ;
113- db . Insert ( new TestGeometryEntity ( 1 , null ) ) ;
114- var geometry = db . TestGeometries . Select ( g => GeometryInput . STGeomFromText ( wkt ) ) . Single ( ) ;
115- db . Update ( new TestGeometryEntity ( 1 , geometry ) ) ;
86+ db . TestGeometries . Value ( g => g . Id , 1 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromText ( wkt ) ) . Insert ( ) ;
11687
117- var envelope = db . TestGeometries
118- . Select ( g => g . Geometry . STEnvelope ( ) . STAsText ( ) )
119- . Single ( ) ;
88+ var envelope = db . TestGeometries . Select ( g => g . Geometry . STEnvelope ( ) . STAsText ( ) ) . Single ( ) ;
12089
12190 Assert . AreEqual ( "POLYGON((0 0,0 3,1 3,1 0,0 0))" , envelope ) ;
12291 }
@@ -127,18 +96,11 @@ public void TestSTIsEmpty()
12796 {
12897 using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
12998 {
130- // TODO: shared method
13199 const string wkt1 = "GEOMETRYCOLLECTION EMPTY" ;
132- db . Insert ( new TestGeometryEntity ( 1 , null ) ) ;
133- var geometry1 = db . TestGeometries . Where ( g => g . Id == 1 ) . Select ( g => GeometryInput . STGeomFromText ( wkt1 ) ) . Single ( ) ;
134- db . Update ( new TestGeometryEntity ( 1 , geometry1 ) ) ;
135-
100+ db . TestGeometries . Value ( g => g . Id , 1 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromText ( wkt1 ) ) . Insert ( ) ;
136101 const string wkt2 = "POLYGON((1 2, 3 4, 5 6, 1 2))" ;
137- db . Insert ( new TestGeometryEntity ( 2 , null ) ) ;
138- var geometry2 = db . TestGeometries . Where ( g => g . Id == 2 ) . Select ( g => GeometryInput . STGeomFromText ( wkt2 ) ) . Single ( ) ;
139- db . Update ( new TestGeometryEntity ( 2 , geometry2 ) ) ;
140-
141- db . Insert ( new TestGeometryEntity ( 3 , null ) ) ;
102+ db . TestGeometries . Value ( g => g . Id , 2 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromText ( wkt2 ) ) . Insert ( ) ;
103+ db . TestGeometries . Value ( g => g . Id , 3 ) . Value ( p => p . Geometry , ( ) => null ) . Insert ( ) ;
142104
143105 Assert . IsTrue ( db . TestGeometries . Where ( g => g . Id == 1 ) . Select ( g => g . Geometry . STIsEmpty ( ) ) . Single ( ) ) ;
144106 Assert . IsFalse ( db . TestGeometries . Where ( g => g . Id == 2 ) . Select ( g => g . Geometry . STIsEmpty ( ) ) . Single ( ) ) ;
@@ -151,16 +113,10 @@ public void TestSTIsValid()
151113 {
152114 using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
153115 {
154- // TODO: shared method
155116 const string wkt1 = "LINESTRING(0 0, 1 1)" ;
156- db . Insert ( new TestGeometryEntity ( 1 , null ) ) ;
157- var geometry1 = db . TestGeometries . Where ( g => g . Id == 1 ) . Select ( g => GeometryInput . STGeomFromText ( wkt1 ) ) . Single ( ) ;
158- db . Update ( new TestGeometryEntity ( 1 , geometry1 ) ) ;
159-
117+ db . TestGeometries . Value ( g => g . Id , 1 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromText ( wkt1 ) ) . Insert ( ) ;
160118 const string wkt2 = "POLYGON((0 0, 1 1, 1 2, 1 1, 0 0))" ;
161- db . Insert ( new TestGeometryEntity ( 2 , null ) ) ;
162- var geometry2 = db . TestGeometries . Where ( g => g . Id == 2 ) . Select ( g => GeometryInput . STGeomFromText ( wkt2 ) ) . Single ( ) ;
163- db . Update ( new TestGeometryEntity ( 2 , geometry2 ) ) ;
119+ db . TestGeometries . Value ( g => g . Id , 2 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromText ( wkt2 ) ) . Insert ( ) ;
164120
165121 Assert . IsTrue ( db . TestGeometries . Where ( g => g . Id == 1 ) . Select ( g => g . Geometry . STIsValid ( ) ) . Single ( ) ) ;
166122 Assert . IsFalse ( db . TestGeometries . Where ( g => g . Id == 2 ) . Select ( g => g . Geometry . STIsValid ( ) ) . Single ( ) ) ;
@@ -172,28 +128,16 @@ public void TestSTNumGeometries()
172128 {
173129 using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
174130 {
175- // TODO: shared method
176131 const string wkt1 = "LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)" ;
177- db . Insert ( new TestGeometryEntity ( 1 , null ) ) ;
178- var geometry1 = db . TestGeometries . Where ( g => g . Id == 1 ) . Select ( g => GeometryInput . STGeomFromText ( wkt1 ) ) . Single ( ) ;
179- db . Update ( new TestGeometryEntity ( 1 , geometry1 ) ) ;
180-
132+ db . TestGeometries . Value ( g => g . Id , 1 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromText ( wkt1 ) ) . Insert ( ) ;
181133 const string wkt2 = "GEOMETRYCOLLECTION(MULTIPOINT(-2 3 , -2 2), LINESTRING(5 5, 10 10), POLYGON((-7 4.2, -7.1 5, -7.1 4.3, -7 4.2)))" ;
182- db . Insert ( new TestGeometryEntity ( 2 , null ) ) ;
183- var geometry2 = db . TestGeometries . Where ( g => g . Id == 2 ) . Select ( g => GeometryInput . STGeomFromText ( wkt2 ) ) . Single ( ) ;
184- db . Update ( new TestGeometryEntity ( 2 , geometry2 ) ) ;
185-
186- var num1 = db . TestGeometries
187- . Where ( g => g . Id == 1 )
188- . Select ( g => g . Geometry . STNumGeometries ( ) )
189- . Single ( ) ;
190- Assert . AreEqual ( 1 , num1 ) ;
191-
192- var num2 = db . TestGeometries
193- . Where ( g => g . Id == 2 )
194- . Select ( g => g . Geometry . STNumGeometries ( ) )
195- . Single ( ) ;
196- Assert . AreEqual ( 3 , num2 ) ;
134+ db . TestGeometries . Value ( g => g . Id , 2 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromText ( wkt2 ) ) . Insert ( ) ;
135+
136+ var numGeometries1 = db . TestGeometries . Where ( g => g . Id == 1 ) . Select ( g => g . Geometry . STNumGeometries ( ) ) . Single ( ) ;
137+ Assert . AreEqual ( 1 , numGeometries1 ) ;
138+
139+ var numGeometries2 = db . TestGeometries . Where ( g => g . Id == 2 ) . Select ( g => g . Geometry . STNumGeometries ( ) ) . Single ( ) ;
140+ Assert . AreEqual ( 3 , numGeometries2 ) ;
197141 }
198142 }
199143
@@ -202,13 +146,12 @@ public void TestSTNumPoints()
202146 {
203147 using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
204148 {
205- // TODO: shared method
206149 const string wkt = "LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)" ;
207- db . Insert ( new TestGeometryEntity ( 1 , null ) ) ;
208- var geometry = db . TestGeometries . Select ( g => GeometryInput . STGeomFromText ( wkt ) ) . Single ( ) ;
209- db . Update ( new TestGeometryEntity ( 1 , geometry ) ) ;
150+ db . TestGeometries . Value ( g => g . Id , 1 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromText ( wkt ) ) . Insert ( ) ;
151+
152+ var numPoints = db . TestGeometries . Select ( g => g . Geometry . STNumPoints ( ) ) . Single ( ) ;
210153
211- Assert . AreEqual ( 4 , db . TestGeometries . Select ( g => g . Geometry . STNumPoints ( ) ) . Single ( ) ) ;
154+ Assert . AreEqual ( 4 , numPoints ) ;
212155 }
213156 }
214157
@@ -217,16 +160,10 @@ public void TestSTXYZM()
217160 {
218161 using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
219162 {
220- // TODO: shared method
221163 const string wkt1 = "POINT(1 2 3 4)" ;
222- db . Insert ( new TestGeometryEntity ( 1 , null ) ) ;
223- var geometry1 = db . TestGeometries . Where ( g => g . Id == 1 ) . Select ( g => GeometryInput . STGeomFromText ( wkt1 ) ) . Single ( ) ;
224- db . Update ( new TestGeometryEntity ( 1 , geometry1 ) ) ;
225-
164+ db . TestGeometries . Value ( g => g . Id , 1 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromText ( wkt1 ) ) . Insert ( ) ;
226165 const string wkt2 = "POINT(1 2)" ;
227- db . Insert ( new TestGeometryEntity ( 2 , null ) ) ;
228- var geometry2 = db . TestGeometries . Where ( g => g . Id == 2 ) . Select ( g => GeometryInput . STGeomFromText ( wkt2 ) ) . Single ( ) ;
229- db . Update ( new TestGeometryEntity ( 2 , geometry2 ) ) ;
166+ db . TestGeometries . Value ( g => g . Id , 2 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromText ( wkt2 ) ) . Insert ( ) ;
230167
231168 var query1 = db . TestGeometries . Where ( g => g . Id == 1 ) ;
232169 Assert . AreEqual ( 1 , query1 . Select ( g => g . Geometry . STX ( ) ) . Single ( ) ) ;
0 commit comments