コード例 #1
0
        public void ParsingTextReaderBlockingSimpleRead2()
        {
            StringReader strReader = new StringReader(TestData);

            BlockingTextReader reader = ParsingTextReader.CreateBlocking(strReader);

            char[] cs   = new char[100];
            int    read = reader.Read(cs, 0, cs.Length);

            Assert.Equal(TestData.Length, read);
            Assert.True(reader.EndOfStream);
            Assert.Equal(-1, reader.Peek());
            Assert.Equal(-1, reader.Read());

            reader.Close();

            String s = new string(cs, 0, read);

            Assert.Equal(TestData, s);
        }
コード例 #2
0
        public void ParsingTextReaderBlockingSimpleRead()
        {
            StringReader strReader = new StringReader(TestData);

            BlockingTextReader reader = ParsingTextReader.CreateBlocking(strReader);

            StringBuilder output = new StringBuilder();

            while (!reader.EndOfStream)
            {
                output.Append((char)reader.Read());
            }
            Assert.IsTrue(reader.EndOfStream);
            Assert.AreEqual(-1, reader.Peek());
            Assert.AreEqual(-1, reader.Read());
            reader.Close();

            Console.WriteLine(output.ToString());

            Assert.AreEqual(TestData, output.ToString());
        }
コード例 #3
0
        public void ParsingTextReaderBlockingSimpleReadBlock2()
        {
            StringReader strReader = new StringReader(TestData);

            BlockingTextReader reader = ParsingTextReader.CreateBlocking(strReader);

            char[] cs    = new char[10];
            int    start = 0;

            while (!reader.EndOfStream)
            {
                int read = reader.ReadBlock(cs, 0, cs.Length);
                Assert.IsTrue(read <= 10);

                String s = new string(cs, 0, read);
                Assert.AreEqual(TestData.Substring(start, read), s);
                start += 10;
            }
            Assert.IsTrue(reader.EndOfStream);
            Assert.AreEqual(-1, reader.Peek());
            Assert.AreEqual(-1, reader.Read());
            reader.Close();
        }
コード例 #4
0
        public void ParsingBlockingVsNonBlocking3()
        {
            this.EnsureNIOData();

            Stopwatch timer = new Stopwatch();
            TimeSpan  blockingTime = new TimeSpan(), nonBlockingTime = new TimeSpan();

            int maxSize = 1024 * 32;

            for (int size = 1024; size < maxSize; size += 1024)
            {
                Console.WriteLine("Buffer Size " + size);
                for (int i = 0; i < 25; i++)
                {
                    timer.Reset();

                    //Test Blocking
                    BlockingTextReader blocking = ParsingTextReader.CreateBlocking(new StreamReader("resources\\nio.ttl"), 4096);
                    timer.Start();
                    int totalBlocking = 0;
                    int read;
                    while (!blocking.EndOfStream)
                    {
                        read = blocking.Read();
                        if (read >= 0)
                        {
                            totalBlocking++;
                        }
                    }
                    timer.Stop();
                    blocking.Close();
                    blockingTime = blockingTime.Add(timer.Elapsed);

                    //Reset
                    timer.Reset();
                    int totalNonBlocking = 0;

                    NonBlockingTextReader nonBlocking = ParsingTextReader.CreateNonBlocking(new StreamReader("resources\\nio.ttl"), 4096);
                    timer.Start();
                    while (!nonBlocking.EndOfStream)
                    {
                        read = nonBlocking.Read();
                        if (read >= 0)
                        {
                            totalNonBlocking++;
                        }
                    }
                    timer.Stop();
                    nonBlocking.Close();
                    nonBlockingTime = nonBlockingTime.Add(timer.Elapsed);

                    Assert.AreEqual(totalBlocking, totalNonBlocking);
                }

                Console.WriteLine();
                Console.WriteLine("Blocking Total Time = " + blockingTime);
                Console.WriteLine("Non-Blocking Total Time = " + nonBlockingTime);
                Console.WriteLine();
                blockingTime    = new TimeSpan();
                nonBlockingTime = new TimeSpan();
            }
        }
コード例 #5
0
 public void ParsingTextReaderBlockingBadInstantiation2()
 {
     BlockingTextReader reader = ParsingTextReader.CreateBlocking(new StringReader(String.Empty), 0);
 }
コード例 #6
0
 public void ParsingTextReaderBlockingBadInstantiation()
 {
     BlockingTextReader reader = ParsingTextReader.CreateBlocking((TextReader)null);
 }
コード例 #7
0
 public void ParsingTextReaderBlockingBadInstantiation2()
 {
     Assert.Throws <ArgumentException>(() => ParsingTextReader.CreateBlocking(new StringReader(String.Empty), 0));
 }
コード例 #8
0
 public void ParsingTextReaderBlockingBadInstantiation()
 {
     Assert.Throws <ArgumentNullException>(() => ParsingTextReader.CreateBlocking((TextReader)null));
 }