Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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;
            }
        }