Example #1
0
        public void Has_Correct_Type()
        {
            var name = "EPSG:31370";
            var crs = new NamedCRS(name);

            Assert.AreEqual(CRSType.Name, crs.Type);
        }
Example #2
0
        public void Equals_GetHashCode_Contract()
        {
            var name = "EPSG:31370";

            var left = new NamedCRS(name);
            var right = new NamedCRS(name);

            Assert.AreEqual(left, right);

            Assert.IsTrue(left == right);
            Assert.IsTrue(right == left);

            Assert.IsTrue(left.Equals(right));
            Assert.IsTrue(right.Equals(left));

            Assert.IsTrue(left.Equals(left));
            Assert.IsTrue(right.Equals(right));

            Assert.AreEqual(left.GetHashCode(), right.GetHashCode());

            name = "EPSG:25832";
            right = new NamedCRS(name);

            Assert.AreNotEqual(left, right);

            Assert.IsFalse(left == right);
            Assert.IsFalse(right == left);

            Assert.IsFalse(left.Equals(right));
            Assert.IsFalse(right.Equals(left));

            Assert.AreNotEqual(left.GetHashCode(), right.GetHashCode());
        }
Example #3
0
        public void Has_Name_Property_With_Name()
        {
            var name = "EPSG:31370";
            var crs = new NamedCRS(name);

            Assert.IsTrue(crs.Properties.ContainsKey("name"));
            Assert.AreEqual(name, crs.Properties["name"]);
        }
Example #4
0
        /// <summary>
        ///     Reads the JSON representation of the object.
        /// </summary>
        /// <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader" /> to read from.</param>
        /// <param name="objectType">Type of the object.</param>
        /// <param name="existingValue">The existing value of object being read.</param>
        /// <param name="serializer">The calling serializer.</param>
        /// <returns>
        ///     The object value.
        /// </returns>
        /// <exception cref="Newtonsoft.Json.JsonReaderException">
        ///     CRS must be null or a json object
        ///     or
        ///     CRS must have a "type" property
        /// </exception>
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            if (reader.TokenType == JsonToken.Null)
            {
                return new UnspecifiedCRS();
            }
            if (reader.TokenType != JsonToken.StartObject)
            {
                throw new JsonReaderException("CRS must be null or a json object");
            }

            var jObject = JObject.Load(reader);

            JToken token;
            if (!jObject.TryGetValue("type", StringComparison.OrdinalIgnoreCase, out token))
            {
                throw new JsonReaderException("CRS must have a \"type\" property");
            }

            var crsType = token.Value<string>();

            if (string.Equals("name", crsType, StringComparison.OrdinalIgnoreCase))
            {
                JObject properties = null;
                if (jObject.TryGetValue("properties", out token))
                {
                    properties = token as JObject;
                }

                if (properties != null)
                {
                    var target = new NamedCRS(properties["name"].ToString());
                    serializer.Populate(jObject.CreateReader(), target);
                    return target;
                }
            }
            else if (string.Equals("link", crsType, StringComparison.OrdinalIgnoreCase))
            {
                var linked = new LinkedCRS(string.Empty);
                serializer.Populate(jObject.CreateReader(), linked);
                return linked;
            }

            return new NotSupportedException(string.Format("Type {0} unexpected.", crsType));
        }