예제 #1
0
        public void op_FromString_string()
        {
            var expected = new HttpHeader("name", "value");
            var actual   = HttpHeader.FromString("name: value");

            Assert.Equal(expected, actual);
        }
예제 #2
0
        public void op_FromString_string_whenEndsWithColon()
        {
            var expected = new HttpHeader("name", string.Empty);
            var actual   = HttpHeader.FromString("name:");

            Assert.Equal(expected, actual);
        }
예제 #3
0
        public static HttpHeaderDictionary FromString(string value)
        {
            if (null == value)
            {
                throw new ArgumentNullException("value");
            }

            var result = new HttpHeaderDictionary();

#if NET20
            var lines = IEnumerableExtensionMethods.ToQueue(StringExtensionMethods.Split(value, Environment.NewLine, StringSplitOptions.None));
#else
            var lines = value.Split(Environment.NewLine, StringSplitOptions.None).ToQueue();
#endif
            if (0 == lines.Count)
            {
                return(result);
            }

            while (0 != lines.Count)
            {
                var line = lines.Dequeue();
                if (0 == line.Length)
                {
                    break;
                }

                result.Add(HttpHeader.FromString(line));
            }

            return(result);
        }
예제 #4
0
        public void Read(TextReader reader)
        {
            if (null == reader)
            {
                throw new ArgumentNullException("reader");
            }

            while (true)
            {
                var peek = reader.Peek();
                var line = reader.ReadLine();
                if (peek.EqualsOneOf(-1, 13))
                {
                    break; // EOF or CR
                }

                while (reader.Peek().EqualsOneOf(9, 32))
                {
                    line += Environment.NewLine + reader.ReadLine(); // HT or SPACE
                }

                Add(HttpHeader.FromString(line));
            }
        }
예제 #5
0
 public void op_FromString_string_whenMissingColon()
 {
     Assert.Throws <FormatException>(() => HttpHeader.FromString("name value"));
 }
예제 #6
0
 public void op_FromString_stringNull()
 {
     Assert.Throws <ArgumentNullException>(() => HttpHeader.FromString(null));
 }
예제 #7
0
 public void op_FromString_stringEmpty()
 {
     Assert.Throws <ArgumentOutOfRangeException>(() => HttpHeader.FromString(string.Empty));
 }
예제 #8
0
 public void op_FromString_string_whenStartsWithColon()
 {
     Assert.Throws <FormatException>(() => HttpHeader.FromString(": value"));
 }