public void DefaultEqualityTests()
        {
            // no impl for GeographyCurve

            DefaultEqualityTest<GeographyFullGlobe>(() => TestData.FullGlobe());
            DefaultEqualityTest(() => GeographyFactory.Collection().Point(-19.99, -12.0).Build());
            DefaultEqualityTest(() => GeographyFactory.LineString(33.1, -110.0).LineTo(35.97, -110).Build());
            DefaultEqualityTest(() => GeographyFactory.MultiLineString().LineString(10.2, 11.2).LineTo(11.9, 11.6).LineString(16.2, 17.2).LineTo(18.9, 19.6).Build());
            DefaultEqualityTest(() => GeographyFactory.MultiPoint().Point(10.2, 11.2).Point(11.9, 11.6).Build());
            DefaultEqualityTest(() => GeographyFactory.MultiPolygon().Polygon().Ring(10.2, 11.2).LineTo(11.9, 11.6).LineTo(11.45, 87.75).Ring(16.2, 17.2).LineTo(18.9, 19.6).LineTo(11.45, 87.75).Build());
            DefaultEqualityTest(() => GeographyFactory.Point(32.0, -100.0).Build());
            DefaultEqualityTest(() => GeographyFactory.Polygon().Ring(33.1, -110.0).LineTo(35.97, -110.15).LineTo(11.45, 87.75).Ring(35.97, -110).LineTo(36.97, -110.15).LineTo(45.23, 23.18).Build());

            // no impl for GeographySurface

            GeographyEqualityTestIncludingBaseObviousStuff(() => GeographyFactory.Point(32.0, -100.0).Build(), () => GeographyFactory.Point().Build());

            // no impl for GeometryCurve

            DefaultEqualityTest(() => GeometryFactory.Collection().Point(-19.99, -12.0).Build());
            DefaultEqualityTest(() => GeometryFactory.LineString(33.1, -11.5).LineTo(35.97, -11).Build());
            DefaultEqualityTest(() => GeometryFactory.MultiLineString().LineString(10.2, 11.2).LineTo(11.9, 11.6).LineString(16.2, 17.2).LineTo(18.9, 19.6).Build());
            DefaultEqualityTest(() => GeometryFactory.MultiPoint().Point(10.2, 11.2).Point(11.9, 11.6).Build());
            DefaultEqualityTest(() => GeometryFactory.MultiPolygon().Polygon().Ring(10.2, 11.2).LineTo(11.9, 11.6).LineTo(11.45, 87.75).Ring(16.2, 17.2).LineTo(18.9, 19.6).LineTo(11.45, 87.75).Build());
            DefaultEqualityTest(() => GeometryFactory.Point(32.0, -10.0).Build());
            DefaultEqualityTest(() => GeometryFactory.Polygon().Ring(33.1, -13.6).LineTo(35.97, -11.15).LineTo(11.45, 87.75).Ring(35.97, -11).LineTo(36.97, -11.15).LineTo(45.23, 23.18).Build());

            // no impl GeometrySurface

            GeometryEqualityTestIncludingBaseObviousStuff(() => GeometryFactory.Point(32.0, -10.0).Build(), () => GeometryFactory.Point().Build());
        }
Beispiel #2
0
        public void BuildCollection()
        {
            GeometryCollection c = GeometryFactory.Collection(NonDefaultGeometricCoords)
                                   .MultiPoint().Point(5, 5).Point(10, 10)
                                   .LineString(0, 0).LineTo(0, 5)
                                   .MultiPolygon()
                                   .Polygon().Ring(-5, -5).LineTo(0, -5).LineTo(0, -2)
                                   .Polygon().Ring(-10, -10).LineTo(-5, -10).LineTo(-5, -7)
                                   .Collection()
                                   .Point(5, 5);

            Assert.AreEqual(NonDefaultGeometricCoords, c.CoordinateSystem);
            c.VerifyAsCollection(
                (mp) => mp.VerifyAsMultiPoint(new PositionData(5, 5), new PositionData(10, 10)),
                (ls) => ls.VerifyAsLineString(new PositionData(0, 0), new PositionData(0, 5)),
                (mp) => mp.VerifyAsMultiPolygon(
                    new PositionData[][] {
                new PositionData[] { new PositionData(-5, -5), new PositionData(0, -5), new PositionData(0, -2), new PositionData(-5, -5) }
            },
                    new PositionData[][]                {
                new PositionData[] { new PositionData(-10, -10), new PositionData(-5, -10), new PositionData(-5, -7), new PositionData(-10, -10) }
            }),
                (col) => col.VerifyAsCollection(
                    (p) => p.VerifyAsPoint(new PositionData(5, 5))));

            c = GeometryFactory.Collection();
            c.VerifyAsCollection(null);
        }
Beispiel #3
0
        public void GeometryCollectionRoundtripJsonLightTest()
        {
            var values = new GeometryCollection[]
            {
                GeometryFactory.Collection().Build(),
                GeometryFactory.Collection().Point(0, 0).Build()
            };

            this.VerifyPrimitiveValuesRoundtripWithTypeInformation(values, "GeometryCollection");
        }
        static ODataSpatialTypeUtil()
        {
            // Geometry type values.
            GeometryValue                = GeometryFactory.Point(32.0, -10.0).Build();
            GeometryPointValue           = GeometryFactory.Point(33.1, -11.0).Build();
            GeometryLineStringValue      = GeometryFactory.LineString(33.1, -11.5).LineTo(35.97, -11).Build();
            GeometryPolygonValue         = GeometryFactory.Polygon().Ring(33.1, -13.6).LineTo(35.97, -11.15).LineTo(11.45, 87.75).Ring(35.97, -11).LineTo(36.97, -11.15).LineTo(45.23, 23.18).Build();
            GeometryCollectionValue      = GeometryFactory.Collection().Point(-19.99, -12.0).Build();
            GeometryMultiPointValue      = GeometryFactory.MultiPoint().Point(10.2, 11.2).Point(11.9, 11.6).Build();
            GeometryMultiLineStringValue = GeometryFactory.MultiLineString().LineString(10.2, 11.2).LineTo(11.9, 11.6).LineString(16.2, 17.2).LineTo(18.9, 19.6).Build();
            GeometryMultiPolygonValue    = GeometryFactory.MultiPolygon().Polygon().Ring(10.2, 11.2).LineTo(11.9, 11.6).LineTo(11.45, 87.75).Ring(16.2, 17.2).LineTo(18.9, 19.6).LineTo(11.45, 87.75).Build();

            // Geography type values.
            GeographyValue                = GeographyFactory.Point(32.0, -100.0).Build();
            GeographyPointValue           = GeographyFactory.Point(33.1, -110.0).Build();
            GeographyLineStringValue      = GeographyFactory.LineString(33.1, -110.0).LineTo(35.97, -110).Build();
            GeographyPolygonValue         = GeographyFactory.Polygon().Ring(33.1, -110.0).LineTo(35.97, -110.15).LineTo(11.45, 87.75).Ring(35.97, -110).LineTo(36.97, -110.15).LineTo(45.23, 23.18).Build();
            GeographyCollectionValue      = GeographyFactory.Collection().Point(-19.99, -12.0).Build();
            GeographyMultiPointValue      = GeographyFactory.MultiPoint().Point(10.2, 11.2).Point(11.9, 11.6).Build();
            GeographyMultiLineStringValue = GeographyFactory.MultiLineString().LineString(10.2, 11.2).LineTo(11.9, 11.6).LineString(16.2, 17.2).LineTo(18.9, 19.6).Build();
            GeographyMultiPolygonValue    = GeographyFactory.MultiPolygon().Polygon().Ring(10.2, 11.2).LineTo(11.9, 11.6).LineTo(11.45, 87.75).Ring(16.2, 17.2).LineTo(18.9, 19.6).LineTo(11.45, 87.75).Build();
        }
Beispiel #5
0
 public void CollectionRoundTrip_Geometry()
 {
     this.RoundTripTest(
         EmptyGeometry(SpatialType.Collection),
         GeometryFactory.Collection(nonDefaultGeometry)
         .Point(10, 10)
         .LineString(10, 10).LineTo(30, 30).LineTo(20, 20)
         .Polygon().Ring(10, 10, 10, 10).LineTo(20, 20, 20, 20).LineTo(30, 30, 30, 30)
         .Ring(-10, -10, 100, 100).LineTo(-20, -20, 200, 200).LineTo(-30, -30, 300, 300)
         .Collection()
         .Polygon().Ring(-10, -10).LineTo(-20, -20, -20, null).LineTo(-30, -30, -30, -30)
         .LineString(10, 10).LineTo(20, 20, 20, null)
         .Collection(),
         GeometryFactory.Collection()
         .Point(10, 10)
         .LineString(10, 10).LineTo(30, 30).LineTo(20, 20)
         .Polygon().Ring(10, 10, 10, 10).LineTo(20, 20, 20, 20).LineTo(30, 30, 30, 30)
         .Ring(-10, -10, 100, 100).LineTo(-20, -20, 200, 200).LineTo(-30, -30, 300, 300)
         .Collection()
         .Polygon().Ring(-10, -10).LineTo(-20, -20, -20, null).LineTo(-30, -30, -30, -30)
         .LineString(10, 10).LineTo(20, 20, 20, null)
         .Collection());
 }
        public void ConvertToUriLiteralPrimitiveVersionedTypesTest()
        {
            List <ConvertToUriLiteralTestCase> spatialTestCases = new List <ConvertToUriLiteralTestCase>();
            List <ConvertToUriLiteralTestCase> otherTestCases   = new List <ConvertToUriLiteralTestCase>();
            List <ConvertToUriLiteralTestCase> testCases        = new List <ConvertToUriLiteralTestCase>();

            #region Other Primitive
            otherTestCases.Add(
                new ConvertToUriLiteralTestCase()
            {
                Parameter     = new DateTimeOffset(),
                ExpectedValue = "0001-01-01T00:00:00Z",
            });
            otherTestCases.Add(
                new ConvertToUriLiteralTestCase()
            {
                Parameter     = new DateTimeOffset(new DateTime(2011, 2, 4), new TimeSpan(-8, 0, 0)),
                ExpectedValue = "2011-02-04T00:00:00-08:00",
            });
            otherTestCases.Add(
                new ConvertToUriLiteralTestCase()
            {
                Parameter     = new TimeSpan(),
                ExpectedValue = "duration'PT0S'",
            });
            otherTestCases.Add(
                new ConvertToUriLiteralTestCase()
            {
                Parameter     = new TimeSpan(2, 12, 4, 5, 55),
                ExpectedValue = "duration'P2DT12H4M5.055S'",
            });

            #endregion

            #region Spatial Primitives
            spatialTestCases.Add(
                new ConvertToUriLiteralTestCase()
            {
                Parameter     = GeographyFactory.Point(32.5, -100.3).Build(),
                ExpectedValue = "geography'SRID=4326;POINT (-100.3 32.5)'",
            });
            spatialTestCases.Add(
                new ConvertToUriLiteralTestCase()
            {
                Parameter     = GeometryFactory.Point().Build(),
                ExpectedValue = "geometry'SRID=0;POINT EMPTY'",
            });
            spatialTestCases.Add(
                new ConvertToUriLiteralTestCase()
            {
                Parameter     = GeographyFactory.LineString(1.5, 1.6).LineTo(2.1, 2.5).Build(),
                ExpectedValue = "geography'SRID=4326;LINESTRING (1.6 1.5, 2.5 2.1)'",
            });
            spatialTestCases.Add(
                new ConvertToUriLiteralTestCase()
            {
                Parameter     = GeometryFactory.LineString().Build(),
                ExpectedValue = "geometry'SRID=0;LINESTRING EMPTY'",
            });
            spatialTestCases.Add(
                new ConvertToUriLiteralTestCase()
            {
                Parameter     = GeographyFactory.Polygon().Ring(33.1, -110.0).LineTo(35.97, -110.15).LineTo(11.45, 87.75).Ring(35.97, -110).LineTo(36.97, -110.15).LineTo(45.23, 23.18).Build(),
                ExpectedValue = "geography'SRID=4326;POLYGON ((-110 33.1, -110.15 35.97, 87.75 11.45, -110 33.1), (-110 35.97, -110.15 36.97, 23.18 45.23, -110 35.97))'",
            });
            spatialTestCases.Add(
                new ConvertToUriLiteralTestCase()
            {
                Parameter     = GeometryFactory.Polygon().Build(),
                ExpectedValue = "geometry'SRID=0;POLYGON EMPTY'",
            });
            spatialTestCases.Add(
                new ConvertToUriLiteralTestCase()
            {
                Parameter     = GeometryFactory.Collection().Point(-19.99, -12.0).Build(),
                ExpectedValue = "geometry'SRID=0;GEOMETRYCOLLECTION (POINT (-19.99 -12))'",
            });
            spatialTestCases.Add(
                new ConvertToUriLiteralTestCase()
            {
                Parameter     = GeographyFactory.Collection().Build(),
                ExpectedValue = "geography'SRID=4326;GEOMETRYCOLLECTION EMPTY'",
            });
            spatialTestCases.Add(
                new ConvertToUriLiteralTestCase()
            {
                Parameter     = GeographyFactory.MultiPoint().Point(10.2, 11.2).Point(11.9, 11.6).Build(),
                ExpectedValue = "geography'SRID=4326;MULTIPOINT ((11.2 10.2), (11.6 11.9))'",
            });
            spatialTestCases.Add(
                new ConvertToUriLiteralTestCase()
            {
                Parameter     = GeometryFactory.MultiPoint().Build(),
                ExpectedValue = "geometry'SRID=0;MULTIPOINT EMPTY'",
            });
            spatialTestCases.Add(
                new ConvertToUriLiteralTestCase()
            {
                Parameter     = GeometryFactory.MultiLineString().LineString(10.2, 11.2).LineTo(11.9, 11.6).LineString(16.2, 17.2).LineTo(18.9, 19.6).Build(),
                ExpectedValue = "geometry'SRID=0;MULTILINESTRING ((10.2 11.2, 11.9 11.6), (16.2 17.2, 18.9 19.6))'",
            });
            spatialTestCases.Add(
                new ConvertToUriLiteralTestCase()
            {
                Parameter     = GeographyFactory.MultiLineString().Build(),
                ExpectedValue = "geography'SRID=4326;MULTILINESTRING EMPTY'",
            });
            spatialTestCases.Add(
                new ConvertToUriLiteralTestCase()
            {
                Parameter     = GeographyFactory.MultiPolygon().Polygon().Ring(10.2, 11.2).LineTo(11.9, 11.6).LineTo(11.45, 87.75).Ring(16.2, 17.2).LineTo(18.9, 19.6).LineTo(11.45, 87.75).Build(),
                ExpectedValue = "geography'SRID=4326;MULTIPOLYGON (((11.2 10.2, 11.6 11.9, 87.75 11.45, 11.2 10.2), (17.2 16.2, 19.6 18.9, 87.75 11.45, 17.2 16.2)))'",
            });
            spatialTestCases.Add(
                new ConvertToUriLiteralTestCase()
            {
                Parameter     = GeometryFactory.MultiPolygon().Build(),
                ExpectedValue = "geometry'SRID=0;MULTIPOLYGON EMPTY'",
            });

            #endregion

            testCases.AddRange(otherTestCases);
            testCases.AddRange(spatialTestCases);

            this.RunTestCases(testCases);
        }
Beispiel #7
0
        private DSPUnitTestServiceDefinition CreateTestService(bool openType = false)
        {
            DSPMetadata metadata   = new DSPMetadata("SpatialQueryTests", "AstoriaUnitTests.Tests");
            var         entityType = metadata.AddEntityType("SpatialEntity", null, null, false);

            metadata.AddKeyProperty(entityType, "ID", typeof(int));
            entityType.IsOpenType = openType;

            if (!openType)
            {
                metadata.AddPrimitiveProperty(entityType, "Geography", typeof(Geography));
                metadata.AddPrimitiveProperty(entityType, "Point", typeof(GeographyPoint));
                metadata.AddPrimitiveProperty(entityType, "Point2", typeof(GeographyPoint));
                metadata.AddPrimitiveProperty(entityType, "LineString", typeof(GeographyLineString));
                metadata.AddPrimitiveProperty(entityType, "Polygon", typeof(GeographyPolygon));
                metadata.AddPrimitiveProperty(entityType, "GeographyCollection", typeof(GeographyCollection));
                metadata.AddPrimitiveProperty(entityType, "MultiPoint", typeof(GeographyMultiPoint));
                metadata.AddPrimitiveProperty(entityType, "MultiLineString", typeof(GeographyMultiLineString));
                metadata.AddPrimitiveProperty(entityType, "MultiPolygon", typeof(GeographyMultiPolygon));

                metadata.AddPrimitiveProperty(entityType, "Geometry", typeof(Geometry));
                metadata.AddPrimitiveProperty(entityType, "GeometryPoint", typeof(GeometryPoint));
                metadata.AddPrimitiveProperty(entityType, "GeometryPoint2", typeof(GeometryPoint));
                metadata.AddPrimitiveProperty(entityType, "GeometryLineString", typeof(GeometryLineString));
                metadata.AddPrimitiveProperty(entityType, "GeometryPolygon", typeof(GeometryPolygon));
                metadata.AddPrimitiveProperty(entityType, "GeometryCollection", typeof(GeometryCollection));
                metadata.AddPrimitiveProperty(entityType, "GeometryMultiPoint", typeof(GeometryMultiPoint));
                metadata.AddPrimitiveProperty(entityType, "GeometryMultiLineString", typeof(GeometryMultiLineString));
                metadata.AddPrimitiveProperty(entityType, "GeometryMultiPolygon", typeof(GeometryMultiPolygon));
            }

            metadata.AddCollectionProperty(entityType, "CollectionOfPoints", typeof(GeographyPoint));
            metadata.AddCollectionProperty(entityType, "GeometryCollectionOfPoints", typeof(GeometryPoint));
            metadata.AddPrimitiveProperty(entityType, "GeographyNull", typeof(Geography));
            metadata.AddPrimitiveProperty(entityType, "GeometryNull", typeof(Geometry));

            metadata.AddResourceSet("Spatials", entityType);

            metadata.SetReadOnly();

            DSPContext context = new DSPContext();
            var        set     = context.GetResourceSetEntities("Spatials");

            for (int i = 0; i < 3; ++i)
            {
                DSPResource spatialEntity = new DSPResource(entityType);
                spatialEntity.SetValue("ID", i);
                spatialEntity.SetValue("Geography", GeographyFactory.Point(32.0 - i, -100.0).Build());
                spatialEntity.SetValue("Point", GeographyFactory.Point(33.1 - i, -110.0).Build());
                spatialEntity.SetValue("Point2", GeographyFactory.Point(32.1 - i, -110.0).Build());
                spatialEntity.SetValue("LineString", GeographyFactory.LineString(33.1 - i, -110.0).LineTo(35.97 - i, -110).Build());
                spatialEntity.SetValue("Polygon", GeographyFactory.Polygon().Ring(33.1 - i, -110.0).LineTo(35.97 - i, -110.15).LineTo(11.45 - i, 87.75).Ring(35.97 - i, -110).LineTo(36.97 - i, -110.15).LineTo(45.23 - i, 23.18).Build());
                spatialEntity.SetValue("GeographyCollection", GeographyFactory.Collection().Point(-19.99 - i, -12.0).Build());
                spatialEntity.SetValue("MultiPoint", GeographyFactory.MultiPoint().Point(10.2 - i, 11.2).Point(11.9 - i, 11.6).Build());
                spatialEntity.SetValue("MultiLineString", GeographyFactory.MultiLineString().LineString(10.2 - i, 11.2).LineTo(11.9 - i, 11.6).LineString(16.2 - i, 17.2).LineTo(18.9 - i, 19.6).Build());
                spatialEntity.SetValue("MultiPolygon", GeographyFactory.MultiPolygon().Polygon().Ring(10.2 - i, 11.2).LineTo(11.9 - i, 11.6).LineTo(11.45 - i, 87.75).Ring(16.2 - i, 17.2).LineTo(18.9 - i, 19.6).LineTo(11.45 - i, 87.75).Build());
                spatialEntity.SetValue("CollectionOfPoints", new List <GeographyPoint>()
                {
                    GeographyFactory.Point(10.2, 99.5),
                    GeographyFactory.Point(11.2, 100.5)
                });

                spatialEntity.SetValue("Geometry", GeometryFactory.Point(32.0 - i, -10.0).Build());
                spatialEntity.SetValue("GeometryPoint", GeometryFactory.Point(33.1 - i, -11.0).Build());
                spatialEntity.SetValue("GeometryPoint2", GeometryFactory.Point(32.1 - i, -11.0).Build());
                spatialEntity.SetValue("GeometryLineString", GeometryFactory.LineString(33.1 - i, -11.5).LineTo(35.97 - i, -11).Build());
                spatialEntity.SetValue("GeometryPolygon", GeometryFactory.Polygon().Ring(33.1 - i, -13.6).LineTo(35.97 - i, -11.15).LineTo(11.45 - i, 87.75).Ring(35.97 - i, -11).LineTo(36.97 - i, -11.15).LineTo(45.23 - i, 23.18).Build());
                spatialEntity.SetValue("GeometryCollection", GeometryFactory.Collection().Point(-19.99 - i, -12.0).Build());
                spatialEntity.SetValue("GeometryMultiPoint", GeometryFactory.MultiPoint().Point(10.2 - i, 11.2).Point(11.9 - i, 11.6).Build());
                spatialEntity.SetValue("GeometryMultiLineString", GeometryFactory.MultiLineString().LineString(10.2 - i, 11.2).LineTo(11.9 - i, 11.6).LineString(16.2 - i, 17.2).LineTo(18.9 - i, 19.6).Build());
                spatialEntity.SetValue("GeometryMultiPolygon", GeometryFactory.MultiPolygon().Polygon().Ring(10.2 - i, 11.2).LineTo(11.9 - i, 11.6).LineTo(11.45 - i, 87.75).Ring(16.2 - i, 17.2).LineTo(18.9 - i, 19.6).LineTo(11.45 - i, 87.75).Build());
                spatialEntity.SetValue("GeometryCollectionOfPoints", new List <GeometryPoint>()
                {
                    GeometryFactory.Point(10.2, 99.5),
                    GeometryFactory.Point(11.2, 100.5)
                });

                spatialEntity.SetValue("GeographyNull", null);
                spatialEntity.SetValue("GeometryNull", null);

                set.Add(spatialEntity);
            }

            var service = new DSPUnitTestServiceDefinition(metadata, DSPDataProviderKind.CustomProvider, context);

            service.DataServiceBehavior.AcceptSpatialLiteralsInQuery = true;
            service.Writable = true;

            return(service);
        }
Beispiel #8
0
        private PrimitiveValue GetValue(IEdmPrimitiveTypeReference edmTypeReference)
        {
            switch (edmTypeReference.PrimitiveDefinition().PrimitiveKind)
            {
            case EdmPrimitiveTypeKind.Binary:
                return(new PrimitiveValue("Edm.Binary", 45).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.Boolean:
                return(new PrimitiveValue("Edm.Boolean", false).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.Byte:
                return(new PrimitiveValue("Edm.Byte", (byte)1).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.DateTimeOffset:
                return(new PrimitiveValue("Edm.DateTimeOffset", new DateTimeOffset(new DateTime(2013, 10, 17), new TimeSpan(0, 0, 3, 0))).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.Decimal:
                return(new PrimitiveValue("Edm.Decimal", (decimal)4.3).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.Double:
                return(new PrimitiveValue("Edm.Double", (double)54.3333333333333).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.Duration:
                return(new PrimitiveValue("Edm.Duration", new TimeSpan(1, 3, 0, 0)).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.Geography:
                return(new PrimitiveValue("Edm.Geography", GeographyFactory.Point(5.3, 3.5).Build()).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.GeographyPoint:
                return(new PrimitiveValue("Edm.GeographyPoint", GeographyFactory.Point(3.5, 3.55555555).Build()).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.GeographyPolygon:
                return(new PrimitiveValue("Edm.GeographyPolygon", GeographyFactory.Polygon().Ring(3, 4).Ring(4, 5).Build()).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.GeographyCollection:
                return(new PrimitiveValue("Edm.GeographyCollection", GeographyFactory.Collection().Point(2, 3).Build()).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.GeographyLineString:
                return(new PrimitiveValue("Edm.GeographyLineString", GeographyFactory.LineString(5.3, 3.3)).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.GeographyMultiLineString:
                return(new PrimitiveValue("Edm.GeographyMultiLineString", GeographyFactory.MultiLineString().LineString(3, 4).LineString(5, 4).Build()).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.GeographyMultiPoint:
                return(new PrimitiveValue("Edm.GeographyMultiPoint", GeographyFactory.MultiPoint().Point(3, 2).Point(6, 4).Build()).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.GeographyMultiPolygon:
                return(new PrimitiveValue("Edm.GeographyMultiPolygon", GeographyFactory.MultiPolygon().Polygon().Ring(65, 23).Build()).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.Geometry:
                return(new PrimitiveValue("Edm.Geometry", GeometryFactory.Point(-3, 4, 5, 6)).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.GeometryCollection:
                return(new PrimitiveValue("Edm.GeometryCollection", GeometryFactory.Collection().Point(3, 2, 3, null).Point(3, 2, 10, null)).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.GeometryLineString:
                return(new PrimitiveValue("Edm.GeometryLineString", GeometryFactory.LineString(4.2, 12.3)).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.GeometryMultiLineString:
                return(new PrimitiveValue("Edm.GeometryMultiLineString", GeometryFactory.MultiLineString().LineString(3, 2).LineTo(3, 5).Build()).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.GeometryMultiPoint:
                return(new PrimitiveValue("Edm.GeometryMultiPoint", GeometryFactory.MultiPoint().Point(3, 2).Point(4.3, 3.9).Build()).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.GeometryMultiPolygon:
                return(new PrimitiveValue("Edm.GeometryMultiPolygon", GeometryFactory.MultiPolygon().Polygon().Ring(65, 23).Build()).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.GeometryPoint:
                return(new PrimitiveValue("Edm.GeometryPoint", GeometryFactory.Point(-2.3, 3.9)).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.GeometryPolygon:
                return(new PrimitiveValue("Edm.GeometryPolygon", GeometryFactory.Polygon().Ring(3, 4).Ring(4, 5).Build()).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.Guid:
                return(new PrimitiveValue("Edm.Guid", new Guid("00005259-2341-5431-5432-234234234234")).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.Int16:
                return(new PrimitiveValue("Edm.Int16", (Int16)6).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.Int32:
                return(new PrimitiveValue("Edm.Int32", 12).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.Int64:
                return(new PrimitiveValue("Edm.Int64", (Int64)18).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.SByte:
                return(new PrimitiveValue("Edm.SByte", (sbyte)-3).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.Single:
                return(new PrimitiveValue("Edm.Single", (Single)5.4).WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.Stream:
                return(new PrimitiveValue("Edm.Stream", "232312").WithTypeAnnotation(edmTypeReference));

            case EdmPrimitiveTypeKind.String:
                return(new PrimitiveValue("Edm.String", "Hello").WithTypeAnnotation(edmTypeReference));

            default:
                throw new NotSupportedException("Primitive type kind not supported, please add new type kind.");
            }
        }