public void ElementComposition() { var sb = new StringBuilder(); var elements = new DialogElement(); elements.Add(new DialogButton("Foobar1")); elements.Render(ref sb); Assert.Equal("<button title='Foobar1' keyword='@foobar1' />", sb.ToString()); sb.Clear(); elements.Add(new DialogButton("Foobar2")); elements.Render(ref sb); Assert.Equal("<button title='Foobar1' keyword='@foobar1' /><button title='Foobar2' keyword='@foobar2' />", sb.ToString()); sb.Clear(); elements.Insert(1, new DialogButton("Foobar3")); elements.Render(ref sb); Assert.Equal("<button title='Foobar1' keyword='@foobar1' /><button title='Foobar3' keyword='@foobar3' /><button title='Foobar2' keyword='@foobar2' />", sb.ToString()); sb.Clear(); elements.Replace(0, new DialogButton("Foobar4")); elements.Render(ref sb); Assert.Equal("<button title='Foobar4' keyword='@foobar4' /><button title='Foobar3' keyword='@foobar3' /><button title='Foobar2' keyword='@foobar2' />", sb.ToString()); sb.Clear(); elements.Insert(0, new DialogButton("Foobar5")); elements.Render(ref sb); Assert.Equal("<button title='Foobar5' keyword='@foobar5' /><button title='Foobar4' keyword='@foobar4' /><button title='Foobar3' keyword='@foobar3' /><button title='Foobar2' keyword='@foobar2' />", sb.ToString()); sb.Clear(); elements.Insert(99, new DialogButton("Foobar6")); elements.Render(ref sb); Assert.Equal("<button title='Foobar5' keyword='@foobar5' /><button title='Foobar4' keyword='@foobar4' /><button title='Foobar3' keyword='@foobar3' /><button title='Foobar2' keyword='@foobar2' /><button title='Foobar6' keyword='@foobar6' />", sb.ToString()); sb.Clear(); elements = new DialogElement(); elements.Insert(1, new DialogButton("Foobar7")); elements.Render(ref sb); Assert.Equal("<button title='Foobar7' keyword='@foobar7' />", sb.ToString()); sb.Clear(); elements = new DialogElement(); elements.Replace(0, new DialogButton("Foobar8")); elements.Render(ref sb); Assert.Equal("<button title='Foobar8' keyword='@foobar8' />", sb.ToString()); sb.Clear(); elements = new DialogElement("foobar, <username/>!", new DialogButton("Foobar9"), new DialogButton("Foobar10")); elements.Render(ref sb); Assert.Equal("foobar, <username/>!<button title='Foobar9' keyword='@foobar9' /><button title='Foobar10' keyword='@foobar10' />", sb.ToString()); sb.Clear(); elements.Replace(0, "barfoo?"); elements.Insert(1, new DialogButton("Foobar11")); elements.Render(ref sb); Assert.Equal("barfoo?<button title='Foobar11' keyword='@foobar11' /><button title='Foobar9' keyword='@foobar9' /><button title='Foobar10' keyword='@foobar10' />", sb.ToString()); sb.Clear(); }