123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- using System.CodeDom.Compiler;
- using System.Text;
- namespace Terminal.Gui.Analyzers.Internal.Tests;
- [TestFixture]
- [Category ("Extension Methods")]
- [TestOf (typeof (IndentedTextWriterExtensions))]
- [Parallelizable (ParallelScope.Children)]
- public class IndentedTextWriterExtensionsTests
- {
- [Test]
- public void Pop_Decrements ()
- {
- StringBuilder sb = new (0);
- using var sw = new StringWriter (sb);
- using var writer = new IndentedTextWriter (sw);
- writer.Indent = 5;
- Assume.That (writer.Indent, Is.EqualTo (5));
- writer.Pop ();
- Assert.That (writer.Indent, Is.EqualTo (4));
- }
- [Test]
- public void Pop_WithClosing_WritesAndPops ([Values ("}", ")", "]")] string scopeClosing)
- {
- StringBuilder sb = new (256);
- using var sw = new StringWriter (sb);
- using var writer = new IndentedTextWriter (sw, " ");
- writer.Indent = 5;
- writer.Flush ();
- Assume.That (writer.Indent, Is.EqualTo (5));
- Assume.That (sb.Length, Is.Zero);
- // Need to write something first, or IndentedTextWriter won't emit the indentation for the first call.
- // So we'll write an empty line.
- writer.WriteLine ();
- for (ushort indentCount = 5; indentCount > 0;)
- {
- writer.Pop (scopeClosing);
- Assert.That (writer.Indent, Is.EqualTo (--indentCount));
- }
- writer.Flush ();
- var result = sb.ToString ();
- Assert.That (
- result,
- Is.EqualTo (
- $"""
-
- {scopeClosing}
- {scopeClosing}
- {scopeClosing}
- {scopeClosing}
- {scopeClosing}
- """));
- }
- [Test]
- public void Push_Increments ()
- {
- StringBuilder sb = new (32);
- using var sw = new StringWriter (sb);
- using var writer = new IndentedTextWriter (sw, " ");
- for (int indentCount = 0; indentCount < 5; indentCount++)
- {
- writer.Push ();
- Assert.That (writer.Indent, Is.EqualTo (indentCount + 1));
- }
- }
- [Test]
- public void Push_WithOpening_WritesAndPushes ([Values ('{', '(', '[')] char scopeOpening)
- {
- StringBuilder sb = new (256);
- using var sw = new StringWriter (sb);
- using var writer = new IndentedTextWriter (sw, " ");
- for (ushort indentCount = 0; indentCount < 5;)
- {
- writer.Push ("Opening UninterestingEnum", scopeOpening);
- Assert.That (writer.Indent, Is.EqualTo (++indentCount));
- }
- writer.Flush ();
- var result = sb.ToString ();
- Assert.That (
- result,
- Is.EqualTo (
- $"""
- Opening UninterestingEnum
- {scopeOpening}
- Opening UninterestingEnum
- {scopeOpening}
- Opening UninterestingEnum
- {scopeOpening}
- Opening UninterestingEnum
- {scopeOpening}
- Opening UninterestingEnum
- {scopeOpening}
- """));
- }
- }
|