public void SupportedLinqQueries_GeometryPoint_Filter() { // Verify URI and results for LINQ queries that are valid only for GeometryPoint, filter only Func <DataServiceContext, LinqTestCase[]> getTests = context => { var allEntities = new GeometricEntity <GeometryPoint>[] { new GeometricEntity <GeometryPoint>() { ID = 1, Property1 = GeometryFactory.Point(1, 2), Property2 = GeometryFactory.Point(3, 4), }, }; return(new LinqTestCase[] { new LinqTestCase() { Query = from t in context.CreateQuery <GeometricEntity <GeometryPoint> >("TripLegs") where t.Property1.Distance(t.Property2) > 0 select t, ExpectedUri = "?$filter=geo.distance(Property1,Property2) gt 0.0", ExpectedResults = allEntities, ServerPayload = GetSampleFeedPayload(allEntities, null), ExpectKeyInUri = false, }, new LinqTestCase() { Query = from t in context.CreateQuery <GeometricEntity <GeometryPoint> >("TripLegs") where t.Property1.Distance(GeometryFactory.Point(5, 6)) > 0 select t, ExpectedUri = "?$filter=geo.distance(Property1,geometry'SRID=0;POINT (5 6)') gt 0.0", ExpectedResults = allEntities, ServerPayload = GetSampleFeedPayload(allEntities, null), ExpectKeyInUri = false, }, new LinqTestCase() { Query = from t in context.CreateQuery <GeometricEntity <GeometryPoint> >("TripLegs") where t.Property1.Distance(null) > 0 select t, ExpectedUri = "?$filter=geo.distance(Property1,null) gt 0.0", ExpectedResults = allEntities, ServerPayload = GetSampleFeedPayload(allEntities, null), ExpectKeyInUri = false, }, // the client will try to evaluate distance between constants locally and fail because no operations are registered //new LinqTestCase() //{ // Query = from t in context.CreateQuery<GeometricEntity<GeometryPoint>>("TripLegs") // where GeometryFactory.Point(5, 6).Build().Distance(null) > 0 // select t, // ExpectedUri = "?$filter=geo.distance(geometry'SRID=0;POINT (5 6)', null) gt 0.0", // ExpectedResults = allEntities, // ServerPayload = GetSampleFeedPayload(allEntities, null), // ExpectKeyInUri = false, //}, new LinqTestCase() { Query = from t in context.CreateQuery <GeometricEntity <GeometryPoint> >("TripLegs") where ((GeometryPoint)null).Distance(t.Property1) > 0 select t, ExpectedUri = "?$filter=geo.distance(null,Property1) gt 0.0", ExpectedResults = allEntities, ServerPayload = GetSampleFeedPayload(allEntities, null), ExpectKeyInUri = false, }, // the client will try to evaluate distance between constants locally and fail because no operations are registered //new LinqTestCase() //{ // Query = from t in context.CreateQuery<GeometricEntity<GeometryPoint>>("TripLegs") // where ((GeometryPoint)null).Distance(null) > 0 // select t, // ExpectedUri = "?$filter=geo.distance(null, null) gt 0.0", // ExpectedResults = allEntities, // ServerPayload = GetSampleFeedPayload(allEntities, null), // ExpectKeyInUri = false, //}, }); }; TestSupportedLinqQueries(getTests); }
public void SupportedLinqQueries_GeometryPoint_OrderByDistanceFromLiteralToLiteral() { // Verify URI and results for LINQ queries that are valid only for GeometryPoint, orderby with literals Func <DataServiceContext, LinqTestCase[]> getTests = context => { var allEntities = new GeometricEntity <GeometryPoint>[] { new GeometricEntity <GeometryPoint>() { ID = 1, Property1 = GeometryFactory.Point(1, 2), Property2 = GeometryFactory.Point(3, 4), }, }; return(new LinqTestCase[] { new LinqTestCase() { Query = from t in context.CreateQuery <GeometricEntity <GeometryPoint> >("TripLegs") orderby GeometryFactory.Point(5, 6).Build().Distance(GeometryFactory.Point(0, 0).Build()) select t, ExpectedUri = "?$orderby=1.0", ExpectedResults = allEntities, ServerPayload = GetSampleFeedPayload(allEntities, null), ExpectKeyInUri = false, }, new LinqTestCase() { Query = from t in context.CreateQuery <GeometricEntity <GeometryPoint> >("TripLegs") orderby GeometryFactory.Point(5, 6).Build().Distance(null) select t, ExpectedUri = "?$orderby=null", ExpectedResults = allEntities, ServerPayload = GetSampleFeedPayload(allEntities, null), ExpectKeyInUri = false, }, new LinqTestCase() { Query = from t in context.CreateQuery <GeometricEntity <GeometryPoint> >("TripLegs") orderby((GeometryPoint)null).Distance(GeometryFactory.Point(5, 6).Build()) select t, ExpectedUri = "?$orderby=null", ExpectedResults = allEntities, ServerPayload = GetSampleFeedPayload(allEntities, null), ExpectKeyInUri = false, }, new LinqTestCase() { Query = from t in context.CreateQuery <GeometricEntity <GeometryPoint> >("TripLegs") orderby((GeometryPoint)null).Distance(null) select t, ExpectedUri = "?$orderby=null", ExpectedResults = allEntities, ServerPayload = GetSampleFeedPayload(allEntities, null), ExpectKeyInUri = false, }, }); }; SpatialOperations previousOperations = SpatialImplementation.CurrentImplementation.Operations; SpatialImplementation.CurrentImplementation.Operations = new DistanceOperationImplementation(); try { TestSupportedLinqQueries(getTests); } finally { SpatialImplementation.CurrentImplementation.Operations = previousOperations; } }