public void TestLayoutWriter() { const ushort width = 15; using (StringWriter stringWriter = new StringWriter()) using (FormatTextWriter formatTextWriter = new FormatTextWriter( stringWriter, width, alignment: Alignment.Justify)) { formatTextWriter.Write("A short string that requires justification "); formatTextWriter.Write("but is written in multiple steps "); formatTextWriter.Write("whicher prevents any kind of justification on the resultant join points."); string result = stringWriter.ToString(); Trace.WriteLine(result); string[] lines = result .Split(new[] { Environment.NewLine }, StringSplitOptions.None); // Check number of lines and maximum line length, if we have any race conditions we expect these to change. Assert.AreEqual(12, lines.Length); Assert.AreEqual(width, lines.Select(l => l.Length).Max()); } }
public void TestThreadSafety() { const ushort width = 80; using (StringWriter stringWriter = new StringWriter()) using (FormatTextWriter formatTextWriter = new FormatTextWriter( stringWriter, width, alignment: Alignment.Justify)) { Stopwatch watch = Stopwatch.StartNew(); Parallel.For( 0, 1000, new ParallelOptions { MaxDegreeOfParallelism = 8 }, i => formatTextWriter.Write(FormatResources.ButIMustExplain)); watch.Stop(); Trace.WriteLine(watch.Elapsed.TotalMilliseconds); Assert.AreEqual(50, formatTextWriter.Position); string result = stringWriter.ToString(); string[] lines = result .Split(new[] { Environment.NewLine }, StringSplitOptions.None); // Check number of lines and maximum line length, if we have any race conditions we expect these to change. Assert.AreEqual(12500, lines.Length); Assert.AreEqual(width, lines.Select(l => l.Length).Max()); } }
public void TestAutoPositioning() { using (StringWriter writer = new StringWriter()) using (FormatTextWriter fw = new FormatTextWriter(writer, 5)) { fw.WriteLine(); Assert.AreEqual(0, fw.Position); fw.WriteLine("12345"); Assert.AreEqual(0, fw.Position); fw.Write("12345\r\n"); Assert.AreEqual(0, fw.Position); fw.Write("1234\r\n"); Assert.AreEqual(0, fw.Position); fw.Write("1234"); Assert.AreEqual(4, fw.Position); fw.Write("123456"); Assert.AreEqual(1, fw.Position); fw.Write("123456"); Assert.AreEqual(1, fw.Position); fw.Write("12345\r\n1"); Assert.AreEqual(1, fw.Position); } }