-
Notifications
You must be signed in to change notification settings - Fork 54
/
Copy pathMySQL57ConformanceItemsFixture.cs
169 lines (139 loc) · 5.22 KB
/
MySQL57ConformanceItemsFixture.cs
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
165
166
167
168
169
using NetTopologySuite.Geometries;
using NHibernate.Cfg;
using NUnit.Framework;
using System.Linq;
using Tests.NHibernate.Spatial.OgcSfSql11Compliance;
using Tests.NHibernate.Spatial.OgcSfSql11Compliance.Model;
namespace Tests.NHibernate.Spatial
{
[TestFixture]
public class MySQL57ConformanceItemsFixture : ConformanceItemsFixture
{
/// <summary>
/// Overridden because GetPointN is not zero-based in MySQL
/// </summary>
[Test]
public override void ConformanceItemT23Linq()
{
var query =
from t in session.Query<RoadSegment>()
where t.Fid == 102
select ((LineString) t.Centerline)
.GetPointN(1);
Geometry geometry = query.Single();
var expected = Wkt.Read("POINT( 0 18 )");
Assert.IsTrue(expected.EqualsTopologically(geometry));
}
/// <summary>
/// Overridden because GetInteriorRingN is not zero-based in MySQL
/// </summary>
[Test]
public override void ConformanceItemT29Linq()
{
var query =
from t in session.Query<Lake>()
where t.Name == "Blue Lake"
select ((Polygon) t.Shore).GetInteriorRingN(1);
Geometry geometry = query.Single();
var expected = Wkt.Read("LINESTRING(59 18, 67 18, 67 13, 59 13, 59 18)");
Assert.IsTrue(expected.EqualsTopologically(geometry));
}
/// <summary>
/// Overridden because GetGeometryN is not zero-based in MySQL
/// </summary>
[Test]
public override void ConformanceItemT31Linq()
{
var query =
from t in session.Query<DividedRoute>()
where t.Name == "Route 75"
select t.Centerlines.GetGeometryN(2);
var geometry = query.Single();
var expected = Wkt.Read("LINESTRING( 16 0, 16 23, 16 48 )");
Assert.IsTrue(expected.EqualsTopologically(geometry));
}
/// <summary>
/// Overridden because polygon vertices are returned in a different order in MySQL
/// </summary>
[Test]
public override void ConformanceItemT48Hql()
{
string query =
@"select NHSP.AsText(NHSP.Difference(np.Boundary, f.Boundary))
from NamedPlace np, Forest f
where np.Name = 'Ashton' and f.Name = 'Green Forest'
";
string result = session.CreateQuery(query)
.UniqueResult<string>();
var geometry = Wkt.Read(result);
var expected = Wkt.Read("POLYGON((84 42, 84 48, 62 48, 56 34, 84 42))");
Assert.IsTrue(expected.EqualsExact(geometry, Tolerance));
}
[Test]
public override void ConformanceItemT48Linq()
{
var query =
from np in session.Query<NamedPlace>()
from f in session.Query<Forest>()
where np.Name == "Ashton" && f.Name == "Green Forest"
select np.Boundary.Difference(f.Boundary);
var geometry = query.Single();
var expected = Wkt.Read("POLYGON((84 42, 84 48, 62 48, 56 34, 84 42))");
Assert.IsTrue(expected.EqualsExact(geometry, Tolerance));
}
protected override void Configure(Configuration configuration)
{
TestConfiguration.Configure(configuration);
}
#region Features that are currently missing in MySQL
[Test]
[Ignore("Provider does not support Boundary function")]
public override void ConformanceItemT13Hql()
{ }
[Test]
[Ignore("Provider does not support Boundary function")]
public override void ConformanceItemT13Linq()
{ }
[Test]
[Ignore("Provider does not support Boundary function")]
public override void ConformanceItemT19Hql()
{ }
[Test]
[Ignore("Provider does not support Boundary function")]
public override void ConformanceItemT19Linq()
{ }
[Test]
[Ignore("Provider does not support IsRing function")]
public override void ConformanceItemT20Hql()
{ }
[Test]
[Ignore("Provider does not support IsRing function")]
public override void ConformanceItemT20Linq()
{ }
[Test]
[Ignore("Provider does not support IsRing function")]
public override void ConformanceItemT25Hql()
{ }
[Test]
[Ignore("Provider does not support IsRing function")]
public override void ConformanceItemT25Linq()
{ }
[Test]
[Ignore("Provider does not support PointOnSurface function")]
public override void ConformanceItemT35Hql()
{ }
[Test]
[Ignore("Provider does not support PointOnSurface function")]
public override void ConformanceItemT35Linq()
{ }
[Test]
[Ignore("Provider does not support Boundary function")]
public override void ConformanceItemT45Hql()
{ }
[Test]
[Ignore("Provider does not support Boundary function")]
public override void ConformanceItemT45Linq()
{ }
#endregion
}
}