Ejemplo n.º 1
0
        public void Merge2Levels1()
        {
            var selector = new FieldSelector <object>().Add("a:(m)").Add("a:(n:(z))");

            Assert.AreEqual(2, selector.Items.Length);
            Assert.AreEqual(":(a:(m,n:(z)))", selector.ToString());
        }
Ejemplo n.º 2
0
        public void ToStringEmpty()
        {
            var target = new FieldSelector <FieldSelectorTests>();
            var result = target.ToString();

            Assert.AreEqual(string.Empty, result);
        }
Ejemplo n.º 3
0
        public void Merge2Levels()
        {
            var selector = new FieldSelector <object>().Add("location:(name)").Add("location:(country:(code))");

            Assert.AreEqual(2, selector.Items.Length);
            Assert.AreEqual(":(location:(name,country:(code)))", selector.ToString());
        }
Ejemplo n.º 4
0
        public void ToString3()
        {
            var target = new FieldSelector <FieldSelectorTests>().Add("hello").Add("location:(name,country)").Add("world");
            var result = target.ToString();

            Assert.AreEqual(":(hello,location:(name,country),world)", result);
        }
Ejemplo n.º 5
0
        public void DeDuplicate()
        {
            var selector = new FieldSelector <object>().Add("location").Add("location:()");

            Assert.AreEqual(2, selector.Items.Length);
            Assert.AreEqual(":(location)", selector.ToString());
        }
Ejemplo n.º 6
0
        public void ToString2()
        {
            var target = new FieldSelector <FieldSelectorTests>().Add("hello").Add("world");
            var result = target.ToString();

            Assert.AreEqual(":(hello,world)", result);
        }
Ejemplo n.º 7
0
        public void ToString2SlashColon()
        {
            var target = new FieldSelector <FieldSelectorTests>().Add("hello:(name)").Add("world/wtf");
            var result = target.ToString();

            Assert.AreEqual(":(hello:(name),world/wtf)", result);
        }
Ejemplo n.º 8
0
        public void ToString1Slash()
        {
            var target = new FieldSelector <FieldSelectorTests>().Add("hello/name");
            var result = target.ToString();

            Assert.AreEqual(":(hello/name)", result);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Formats the URL.
        /// </summary>
        /// <param name="format">The format.</param>
        /// <param name="fieldSelector">The field selectors.</param>
        /// <param name="values">The values.</param>
        /// <returns></returns>
        protected string FormatUrl(string format, FieldSelector fieldSelector, params object[] values)
        {
            var result = format;

            var dic = new Dictionary <string, string>(values.Length / 2);

            for (int i = 0; i < values.Length; i++)
            {
                if (i % 2 == 1)
                {
                    var    key         = values[i - 1].ToString();
                    object valueObject = values[i] != null ? values[i] : null;
                    var    value       = valueObject != null?valueObject.ToString() : null;

                    if (valueObject != null)
                    {
                        var      type = valueObject.GetType();
                        DateTime?ndt  = null;

                        if (type == typeof(DateTime?))
                        {
                            ndt = (DateTime?)valueObject;
                        }

                        if (type == typeof(DateTime))
                        {
                            ndt = (DateTime)valueObject;
                        }

                        if (ndt != null)
                        {
                            value = ndt.Value.ToUnixTime().ToString();
                        }
                    }

                    dic.Add(key, value);
                }
            }

            if (fieldSelector != null)
            {
                result = result.Replace("{FieldSelector}", fieldSelector.ToString());
            }
            else
            {
                result = result.Replace("{FieldSelector}", string.Empty);
            }

            foreach (var key in dic.Keys)
            {
                var value = dic[key];
                if (value != null)
                {
                    result = result.Replace("{" + key + "}", value);
                }
                else
                {
                    result = result.Replace("{" + key + "}", string.Empty);
                }
            }

            return(result);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Formats the URL.
        /// </summary>
        /// <param name="format">The format.</param>
        /// <param name="fieldSelector">The field selectors.</param>
        /// <param name="skipUrlParamsEscape">list lit comma separated values. e.g.: urn,id,postId</param>
        /// <param name="values">The values.</param>
        /// <returns></returns>
        protected string FormatUrl(string format, FieldSelector fieldSelector, string skipUrlParamsEscape, params object[] values)
        {
            var result = format;

            var dic = new Dictionary <string, string>(values.Length / 2);

            for (int i = 0; i < values.Length; i++)
            {
                if (i % 2 == 1)
                {
                    var    key         = values[i - 1].ToString();
                    object valueObject = values[i] != null ? values[i] : null;
                    var    value       = valueObject != null?valueObject.ToString() : null;

                    if (valueObject != null)
                    {
                        var      type = valueObject.GetType();
                        DateTime?ndt  = null;

                        if (type == typeof(DateTime?))
                        {
                            ndt = (DateTime?)valueObject;
                        }

                        if (type == typeof(DateTime))
                        {
                            ndt = (DateTime)valueObject;
                        }

                        if (ndt != null)
                        {
                            value = ndt.Value.ToUnixTime().ToString();
                        }
                    }

                    dic.Add(key, value);
                }
            }

            if (fieldSelector != null)
            {
                var selector = fieldSelector.ToString();
                selector = selector.Replace("~~~", "~:");
                result   = result.Replace("{FieldSelector}", selector);
            }
            else
            {
                result = result.Replace("{FieldSelector}", string.Empty);
            }

            var skipParamsEscape = !string.IsNullOrEmpty(skipUrlParamsEscape) ? skipUrlParamsEscape.Split(',').ToList() : new List <string>();

            foreach (var key in dic.Keys)
            {
                var value = dic[key];
                if (value != null)
                {
                    var skipEscape = skipParamsEscape.Contains(key);
                    result = result.Replace("{" + key + "}", skipEscape ? value : Uri.EscapeDataString(value));
                }
                else
                {
                    result = result.Replace("{" + key + "}", string.Empty);
                }
            }

            return(result);
        }
Ejemplo n.º 11
0
 public void ToString1()
 {
     var target = new FieldSelector<FieldSelectorTests>().Add("hello");
     var result = target.ToString();
     Assert.AreEqual(":(hello)", result);
 }
Ejemplo n.º 12
0
 public void ToString2SlashColon()
 {
     var target = new FieldSelector<FieldSelectorTests>().Add("hello:(name)").Add("world/wtf");
     var result = target.ToString();
     Assert.AreEqual(":(hello:(name),world/wtf)", result);
 }
Ejemplo n.º 13
0
 public void MergeSimple()
 {
     var selector = new FieldSelector<object>().Add("location:(name)").Add("location:(code)");
     Assert.AreEqual(2, selector.Items.Length);
     Assert.AreEqual(":(location:(name,code))", selector.ToString());
 }
Ejemplo n.º 14
0
 public void Merge2Levels1()
 {
     var selector = new FieldSelector<object>().Add("a:(m)").Add("a:(n:(z))");
     Assert.AreEqual(2, selector.Items.Length);
     Assert.AreEqual(":(a:(m,n:(z)))", selector.ToString());
 }
Ejemplo n.º 15
0
 public void DeDuplicate()
 {
     var selector = new FieldSelector<object>().Add("location").Add("location:()");
     Assert.AreEqual(2, selector.Items.Length);
     Assert.AreEqual(":(location)", selector.ToString());
 }
Ejemplo n.º 16
0
 public void ToStringEmpty()
 {
     var target = new FieldSelector<FieldSelectorTests>();
     var result = target.ToString();
     Assert.AreEqual(string.Empty, result);
 }
Ejemplo n.º 17
0
 public void ToString3()
 {
     var target = new FieldSelector<FieldSelectorTests>().Add("hello").Add("location:(name,country)").Add("world");
     var result = target.ToString();
     Assert.AreEqual(":(hello,location:(name,country),world)", result);
 }