1+ using System . Linq ;
2+
3+ using LinqToDB ;
4+ using NUnit . Framework ;
5+
6+ namespace LinqToDBPostGisNetTopologySuite . Tests
7+ {
8+ [ TestFixture ]
9+ class GeometryConstructorsTests : TestsBase
10+ {
11+ [ SetUp ]
12+ public void Setup ( )
13+ {
14+ using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
15+ {
16+ db . TestGeometries . Delete ( ) ;
17+ }
18+ }
19+
20+ [ Test ]
21+ public void TestSTCollect ( )
22+ {
23+ using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
24+ {
25+ db . TestGeometries
26+ . Value ( g => g . Id , 1 )
27+ . Value ( p => p . Geometry , ( ) => GeometryConstructors . STCollect (
28+ GeometryInput . STGeomFromText ( "POINT(1 2)" ) ,
29+ GeometryInput . STGeomFromText ( "POINT(-2 3)" ) ) )
30+ . Insert ( ) ;
31+
32+ db . TestGeometries
33+ . Value ( g => g . Id , 2 )
34+ . Value ( p => p . Geometry , ( ) => GeometryConstructors . STCollect (
35+ GeometryInput . STGeomFromText ( "POINT(1 2)" ) ,
36+ GeometryInput . STGeomFromText ( "LINESTRING(0 0, 0 1, 1 0, 1 1, 0 0)" ) ) )
37+ . Insert ( ) ;
38+
39+ var collected1 = db . TestGeometries . Where ( g => g . Id == 1 ) . Select ( g => g . Geometry . STAsText ( ) ) . Single ( ) ;
40+ Assert . AreEqual ( "MULTIPOINT(1 2,-2 3)" , collected1 ) ;
41+
42+ var collected2 = db . TestGeometries . Where ( g => g . Id == 2 ) . Select ( g => g . Geometry . STAsText ( ) ) . Single ( ) ;
43+ Assert . AreEqual ( "GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(0 0,0 1,1 0,1 1,0 0))" , collected2 ) ;
44+ }
45+ }
46+
47+ [ Test ]
48+ public void TestSTLineFromMultiPoint ( )
49+ {
50+ using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
51+ {
52+ db . TestGeometries
53+ . Value ( g => g . Id , 1 )
54+ . Value ( p => p . Geometry , ( ) => GeometryConstructors . STLineFromMultiPoint (
55+ GeometryInput . STGeomFromText ( "MULTIPOINT(1 2 3, 4 5 6, 7 8 9)" ) ) )
56+ . Insert ( ) ;
57+
58+ var line1 = db . TestGeometries . Where ( g => g . Id == 1 ) . Select ( g => g . Geometry . STAsEWKT ( ) ) . Single ( ) ;
59+ Assert . AreEqual ( "LINESTRING(1 2 3,4 5 6,7 8 9)" , line1 ) ;
60+ }
61+ }
62+
63+ [ Test ]
64+ public void TestSTMakeEnvelope ( )
65+ {
66+ using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
67+ {
68+ db . TestGeometries . Value ( g => g . Id , 1 ) . Value ( p => p . Geometry , ( ) => GeometryConstructors . STMakeEnvelope ( 10 , 10 , 11 , 11 , SRID4326 ) ) . Insert ( ) ;
69+ var envelope1 = db . TestGeometries . Where ( g => g . Id == 1 ) . Select ( g => g . Geometry . STAsEWKT ( ) ) . Single ( ) ;
70+ Assert . AreEqual ( "SRID=4326;POLYGON((10 10,10 11,11 11,11 10,10 10))" , envelope1 ) ;
71+
72+ db . TestGeometries . Value ( g => g . Id , 2 ) . Value ( p => p . Geometry , ( ) => GeometryConstructors . STMakeEnvelope ( 10 , 10 , 11 , 11 ) ) . Insert ( ) ;
73+ var envelope2 = db . TestGeometries . Where ( g => g . Id == 2 ) . Select ( g => g . Geometry . STAsEWKT ( ) ) . Single ( ) ;
74+ Assert . AreEqual ( "POLYGON((10 10,10 11,11 11,11 10,10 10))" , envelope2 ) ;
75+ }
76+ }
77+
78+
79+ [ Test ]
80+ public void TestSTMakeLine ( )
81+ {
82+ using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
83+ {
84+ db . TestGeometries
85+ . Value ( g => g . Id , 1 )
86+ . Value ( p => p . Geometry , ( ) => GeometryConstructors . STMakeLine (
87+ GeometryInput . STGeomFromText ( "POINT(1 2)" ) ,
88+ GeometryInput . STGeomFromText ( "POINT(3 4)" ) ) )
89+ . Insert ( ) ;
90+
91+ db . TestGeometries
92+ . Value ( g => g . Id , 2 )
93+ . Value ( p => p . Geometry , ( ) => GeometryConstructors . STMakeLine (
94+ GeometryInput . STGeomFromText ( "LINESTRING(0 0, 1 1)" ) ,
95+ GeometryInput . STGeomFromText ( "LINESTRING(2 2, 3 3)" ) ) )
96+ . Insert ( ) ;
97+
98+ var line1 = db . TestGeometries . Where ( g => g . Id == 1 ) . Select ( g => g . Geometry . STAsText ( ) ) . Single ( ) ;
99+ Assert . AreEqual ( "LINESTRING(1 2,3 4)" , line1 ) ;
100+
101+ var line2 = db . TestGeometries . Where ( g => g . Id == 2 ) . Select ( g => g . Geometry . STAsText ( ) ) . Single ( ) ;
102+ Assert . AreEqual ( "LINESTRING(0 0,1 1,2 2,3 3)" , line2 ) ;
103+ }
104+ }
105+
106+ [ Test ]
107+ public void TestSTMakePoint ( )
108+ {
109+ using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
110+ {
111+ db . TestGeometries . Value ( g => g . Id , 1 ) . Value ( p => p . Geometry , ( ) => GeometryConstructors . STMakePoint ( - 71.1043443253471 , 42.3150676015829 ) ) . Insert ( ) ;
112+ db . TestGeometries . Value ( g => g . Id , 2 ) . Value ( p => p . Geometry , ( ) => GeometryConstructors . STMakePoint ( 1 , 2 , 1.5 ) ) . Insert ( ) ;
113+ db . TestGeometries . Value ( g => g . Id , 3 ) . Value ( p => p . Geometry , ( ) => GeometryConstructors . STMakePoint ( 10 , 20 , 30 , - 999 ) ) . Insert ( ) ;
114+
115+ var point1 = db . TestGeometries . Where ( g => g . Id == 1 ) ;
116+ Assert . AreEqual ( - 71.1043443253471 , point1 . Select ( g => g . Geometry . STX ( ) ) . Single ( ) , 0.0000000000001 ) ;
117+ Assert . AreEqual ( 42.3150676015829 , point1 . Select ( g => g . Geometry . STY ( ) ) . Single ( ) , 0.0000000000001 ) ;
118+
119+ var point2 = db . TestGeometries . Where ( g => g . Id == 2 ) ;
120+ Assert . AreEqual ( 1 , point2 . Select ( g => g . Geometry . STX ( ) ) . Single ( ) , 0.1 ) ;
121+ Assert . AreEqual ( 2 , point2 . Select ( g => g . Geometry . STY ( ) ) . Single ( ) , 0.1 ) ;
122+ Assert . AreEqual ( 1.5 , point2 . Select ( g => g . Geometry . STZ ( ) ) . Single ( ) , 0.1 ) ;
123+
124+ var point3 = db . TestGeometries . Where ( g => g . Id == 3 ) ;
125+ Assert . AreEqual ( 10 , point3 . Select ( g => g . Geometry . STX ( ) ) . Single ( ) , 0.1 ) ;
126+ Assert . AreEqual ( 20 , point3 . Select ( g => g . Geometry . STY ( ) ) . Single ( ) , 0.1 ) ;
127+ Assert . AreEqual ( 30 , point3 . Select ( g => g . Geometry . STZ ( ) ) . Single ( ) , 0.1 ) ;
128+ Assert . AreEqual ( - 999 , point3 . Select ( g => g . Geometry . STM ( ) ) . Single ( ) , 0.1 ) ;
129+ }
130+ }
131+
132+ [ Test ]
133+ public void TestSTMakePointM ( )
134+ {
135+ using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
136+ {
137+ db . TestGeometries . Value ( g => g . Id , 1 ) . Value ( p => p . Geometry , ( ) => GeometryConstructors . STMakePointM ( 10 , 20 , - 999 ) ) . Insert ( ) ;
138+
139+ var point1 = db . TestGeometries . Where ( g => g . Id == 1 ) ;
140+ Assert . AreEqual ( 10 , point1 . Select ( g => g . Geometry . STX ( ) ) . Single ( ) , 0.1 ) ;
141+ Assert . AreEqual ( 20 , point1 . Select ( g => g . Geometry . STY ( ) ) . Single ( ) , 0.1 ) ;
142+ Assert . AreEqual ( - 999 , point1 . Select ( g => g . Geometry . STM ( ) ) . Single ( ) , 0.1 ) ;
143+ }
144+ }
145+ }
146+ }
0 commit comments