Esempio n. 1
0
 public void Nothing_to_trim()
 {
     TextReader reader = new StringReader("this is plain text");
     reader = new TrimmingTextReader(reader);
     string result = reader.ReadToEnd();
     Assert.AreEqual("this is plain text", result);
 }
Esempio n. 2
0
 public void Readbuffer_in_multiple_attempts_with_more_whitespace_than_buffersize_trailing()
 {
     var text = "this is some text                                                                                                                                                                                                                                                                                    ";
     var reader = new TrimmingTextReader(new StringReader(text));
     var result = new StringBuilder();
     var buffer = new char[1024];
     var read = reader.Read(buffer, 0, 24);
     var total = read;
     Assert.AreEqual('t', buffer[0]);
     read = reader.Read(buffer, read, buffer.Length);
     total += read;
     result.Append(buffer, 0, total);
     Assert.AreEqual("this is some text", result.ToString());
 }
Esempio n. 3
0
        private static XDoc FromXml(TextReader reader)
        {
            // check if reader is a StringReader, so that we can use an optimized trimming reader for it
            if(!reader.IsTrimmingReader()) {
                reader = new TrimmingTextReader(reader);
            }

            // check if stream is either empty or does not start with a legal symbol
            int peek = reader.Peek();
            if((peek == -1) || (peek != '<')) {
                return XDoc.Empty;
            }
            try {
                XmlDocument doc = XDoc.NewXmlDocument();
                doc.Load(reader);
                if(doc.DocumentElement == null) {
                    return XDoc.Empty;
                }
                return new XDoc(doc);
            } catch {
                return XDoc.Empty;
            }
        }
Esempio n. 4
0
 public void Readbuffer_in_multiple_attempts_with_whitespace_between_chunks()
 {
     var text = "   this is some text                                          with lots of whitespace in the middle   ";
     var reader = new TrimmingTextReader(new StringReader(text));
     var result = new StringBuilder();
     var buffer = new char[1024];
     var read = reader.Read(buffer, 0, 24);
     var total = read;
     Assert.AreEqual(24, read);
     Assert.AreEqual('t', buffer[0]);
     read = reader.Read(buffer, read, buffer.Length);
     total += read;
     result.Append(buffer, 0, total);
     Assert.AreEqual("this is some text                                          with lots of whitespace in the middle", result.ToString());
 }
Esempio n. 5
0
 public void Trim_from_the_beginning()
 {
     TextReader reader = new StringReader("   this is plain text");
     reader = new TrimmingTextReader(reader);
     string result = reader.ReadToEnd();
     Assert.AreEqual("this is plain text", result);
 }
Esempio n. 6
0
 public void Trim_both_the_beginning_and_end_via_readbuffer()
 {
     TextReader reader = new StringReader("   this is plain text   ");
     reader = new TrimmingTextReader(reader);
     var buffer = new char[1024];
     var read = reader.Read(buffer, 0, buffer.Length);
     var result = new StringBuilder();
     result.Append(buffer, 0, read);
     Assert.AreEqual("this is plain text", result.ToString());
 }
Esempio n. 7
0
 public void Trimming_reader_retries_against_stream_when_request_bytes_are_not_met()
 {
     var stream = new MockStream();
     using(var reader = new TrimmingTextReader(new StreamReader(stream, Encoding.ASCII))) {
         var buffer = new char[4000];
         var total = 0;
         while(total < buffer.Length) {
             var read = reader.Read(buffer, total, buffer.Length - total);
             _log.DebugFormat("requested {0}, got {1}", buffer.Length - total, read);
             Assert.IsTrue(read > 0);
             total += read;
         }
     }
 }