public void IsInstanceOfType_GeometryType(GeoJsonGeometryType type)
        {
            // arrange
            GeoJsonTypeSerializer serializer = GeoJsonTypeSerializer.Default;

            // act
            // assert
            Assert.True(serializer.IsInstanceOfType(type));
        }
예제 #2
0
        public void IsInstanceOfType_GeometryType(GeoJsonGeometryType geometryType)
        {
            // arrange
            var type = new Mock <IType>();
            GeoJsonTypeSerializer serializer = GeoJsonTypeSerializer.Default;

            // act
            // assert
            Assert.True(serializer.IsInstanceOfType(type.Object, geometryType));
        }
        public void TryDeserialize_Should_Serialize_Enum(
            GeoJsonGeometryType value)
        {
            // arrange
            GeoJsonTypeSerializer serializer = GeoJsonTypeSerializer.Default;

            // act
            // assert
            Assert.True(serializer.TryDeserialize(value, out object?resultValue));
            Assert.Equal(value, resultValue);
        }
예제 #4
0
        public void TryDeserialize_Should_Serialize_Enum(
            GeoJsonGeometryType value)
        {
            // arrange
            var type = new Mock <IType>();
            GeoJsonTypeSerializer serializer = GeoJsonTypeSerializer.Default;

            // act
            // assert
            Assert.True(serializer.TryDeserialize(type.Object, value, out var resultValue));
            Assert.Equal(value, resultValue);
        }
        public void ParseLiteral_Should_Parse_StringValueNode(
            GeoJsonGeometryType value,
            string stringValue)
        {
            // arrange
            GeoJsonTypeSerializer serializer = GeoJsonTypeSerializer.Default;

            // act
            object?resultValue = serializer.ParseLiteral(new StringValueNode(stringValue));

            // assert
            Assert.Equal(value, resultValue);
        }
예제 #6
0
        public void ParseLiteral_Should_Parse_EnumValueNode(
            GeoJsonGeometryType value,
            string stringValue)
        {
            // arrange
            var type = new Mock <IType>();
            GeoJsonTypeSerializer serializer = GeoJsonTypeSerializer.Default;

            // act
            var resultValue = serializer.ParseLiteral(type.Object, new EnumValueNode(stringValue));

            // assert
            Assert.Equal(value, resultValue);
        }
        public void TryDeserialize_Should_Serialize_NameString(
            GeoJsonGeometryType value,
            string stringValue)
        {
            // arrange
            GeoJsonTypeSerializer serializer = GeoJsonTypeSerializer.Default;
            var typeName = new NameString(stringValue);

            // act
            var success = serializer.TryDeserialize(typeName, out object?resultValue);

            // assert
            Assert.True(success);
            Assert.Equal(value, resultValue);
        }
        public void ParseResult_Should_Parse_EnumValue(
            GeoJsonGeometryType value,
            string stringValue)
        {
            // arrange
            GeoJsonTypeSerializer serializer = GeoJsonTypeSerializer.Default;

            // act
            IValueNode resultValue = serializer.ParseResult(value);

            // assert
            EnumValueNode enumValue = Assert.IsType <EnumValueNode>(resultValue);

            Assert.Equal(stringValue, enumValue.Value);
        }
예제 #9
0
        public void ParseValue_Should_Parse_EnumValue(
            GeoJsonGeometryType value,
            string stringValue)
        {
            // arrange
            var type = new Mock <IType>();
            GeoJsonTypeSerializer serializer = GeoJsonTypeSerializer.Default;

            // act
            IValueNode resultValue = serializer.ParseValue(type.Object, value);

            // assert
            EnumValueNode enumValue = Assert.IsType <EnumValueNode>(resultValue);

            Assert.Equal(stringValue, enumValue.Value);
        }
        private bool TryGetGeometryKind(
            ObjectValueNode valueSyntax,
            out GeoJsonGeometryType geometryType)
        {
            IReadOnlyList <ObjectFieldNode> fields = valueSyntax.Fields;

            for (var i = 0; i < fields.Count; i++)
            {
                if (fields[i].Name.Value == TypeFieldName &&
                    GeoJsonTypeSerializer.Default.ParseLiteral(fields[i].Value) is
                    GeoJsonGeometryType type)
                {
                    geometryType = type;
                    return(true);
                }
            }

            geometryType = default;
            return(false);
        }
        protected (GeoJsonGeometryType type, object coordinates, int?crs) ParseFields(
            ObjectValueNode obj)
        {
            GeoJsonGeometryType?type = null;
            object?coordinates       = null;
            int?   crs = null;

            for (var i = 0; i < obj.Fields.Count; i++)
            {
                var        fieldName  = obj.Fields[i].Name.Value;
                IValueNode syntaxNode = obj.Fields[i].Value;
                if (TypeFieldName.EqualsInvariantIgnoreCase(fieldName))
                {
                    type = GeoJsonTypeSerializer.Default.ParseLiteral(syntaxNode)
                           as GeoJsonGeometryType?;
                }
                else if (CoordinatesFieldName.EqualsInvariantIgnoreCase(fieldName))
                {
                    coordinates = ParseCoordinates(syntaxNode);
                }
                else if (CrsFieldName.EqualsInvariantIgnoreCase(fieldName) &&
                         syntaxNode is IntValueNode node &&
                         !node.IsNull())
                {
                    crs = node.ToInt32();
                }
            }

            if (type is null)
            {
                throw Serializer_TypeIsMissing();
            }

            if (coordinates is null)
            {
                throw Serializer_CoordinatesIsMissing();
            }

            return(type.Value, coordinates, crs);
        }
        protected (GeoJsonGeometryType type, object coordinates, int?crs) ParseFields(
            IReadOnlyDictionary <string, object> obj)
        {
            GeoJsonGeometryType?type = null;
            object?coordinates       = null;
            int?   crs = null;

            if (obj.TryGetValue(TypeFieldName, out var typeObject))
            {
                type = GeoJsonTypeSerializer.Default.Deserialize(typeObject)
                       as GeoJsonGeometryType?;
            }

            if (obj.TryGetValue(CoordinatesFieldName, out var coordinateObject))
            {
                coordinates = ParseCoordinates(coordinateObject);
            }

            if (obj.TryGetValue(CrsFieldName, out var crsObject) &&
                crsObject is int crsInt)
            {
                crs = crsInt;
            }

            if (type is null)
            {
                throw Serializer_CoordinatesIsMissing();
            }

            if (coordinates is null)
            {
                throw Serializer_CoordinatesIsMissing();
            }

            return(type.Value, coordinates, crs);
        }
예제 #13
0
 protected GeoJsonInputType(GeoJsonGeometryType geometryType)
 {
     _serializer = GeoJsonSerializers.Serializers[geometryType];
 }
 private bool TryGetGeometryKind(
     Geometry geometry,
     out GeoJsonGeometryType geometryType) =>
 GeoJsonTypeSerializer.Default.TryParseString(geometry.GeometryType, out geometryType);
예제 #15
0
 protected GeoJsonInputObjectSerializer(GeoJsonGeometryType geometryType)
 {
     _geometryType = geometryType;
 }
예제 #16
0
 public static GeoJsonSerializationException Geometry_Serializer_NotFound(
     GeoJsonGeometryType type) =>
 new GeoJsonSerializationException(Resources.Geometry_Serializer_NotFound, type);