public void CanSerializeRootColumnToXmlString() { RootColumn target = new RootColumn(); ColumnContainer cols = new ColumnContainer(target); target.AddPart(cols); cols.SetColumns("2,10"); cols.Columns[0].AddPart(new Html() { Id="test1", RawHtml = "sidebar" }); cols.Columns[1].AddPart(new Html() { Id="test2", RawHtml = "<h1>hello, world!</h1>" }); cols.Columns[1].AddPart(new Html() { Id="test3", RawHtml = "<p>Lorem Ipsum</p>" }); ColumnContainer cols2 = new ColumnContainer(cols.Columns[1]); cols2.SetColumns("4w,6"); cols2.Columns[0].AddPart(new Html() { Id = "test4", RawHtml = "inside" }); cols2.Columns[1].AddPart(new Html() { Id = "test5", RawHtml = "outside" }); cols.Columns[1].AddPart(cols2); string expected = "<rootcolumn>"; expected += "<id>" + target.Id + "</id>"; expected += "<parts>"; expected += "<part><id>" + cols.Id + "</id><typecode>columncontainer</typecode>"; expected += "<spacerabove>true</spacerabove>"; expected += "<columns>"; expected += "<part><id>" + cols.Columns[0].Id + "</id><typecode>column</typecode>"; expected += "<size>Size2</size><nogutter>false</nogutter>"; expected += "<parts>"; expected += "<part><id>test1</id><typecode>htmlpart</typecode><rawhtml>sidebar</rawhtml></part>"; expected += "</parts>"; expected += "</part>"; expected += "<part><id>" + cols.Columns[1].Id + "</id><typecode>column</typecode>"; expected += "<size>Size10</size><nogutter>false</nogutter>"; expected += "<parts>"; expected += "<part><id>test2</id><typecode>htmlpart</typecode><rawhtml><h1>hello, world!</h1></rawhtml></part>"; expected += "<part><id>test3</id><typecode>htmlpart</typecode><rawhtml><p>Lorem Ipsum</p></rawhtml></part>"; expected += "<part><id>" + cols2.Id + "</id><typecode>columncontainer</typecode>"; expected += "<spacerabove>true</spacerabove>"; expected += "<columns>"; expected += "<part><id>" + cols2.Columns[0].Id + "</id><typecode>column</typecode>"; expected += "<size>Size4</size><nogutter>true</nogutter>"; expected += "<parts>"; expected += "<part><id>test4</id><typecode>htmlpart</typecode><rawhtml>inside</rawhtml></part>"; expected += "</parts>"; expected += "</part>"; expected += "<part><id>" + cols2.Columns[1].Id + "</id><typecode>column</typecode>"; expected += "<size>Size6</size><nogutter>false</nogutter>"; expected += "<parts>"; expected += "<part><id>test5</id><typecode>htmlpart</typecode><rawhtml>outside</rawhtml></part>"; expected += "</parts>"; expected += "</part>"; expected += "</columns>"; expected += "</part>"; expected += "</parts>"; expected += "</part>"; expected += "</columns>"; expected += "</part>"; expected += "</parts>"; expected += "</rootcolumn>"; string actual; actual = target.SerializeToString(); Assert.AreEqual(expected, actual); }
public RootColumn GetSampleContent() { RootColumn root = new RootColumn(); Html part1 = new Html() { RawHtml = "Wide Area Here - Col 12" }; root.Parts.Add(part1); // Sidebar + Main Column ColumnContainer col1 = new ColumnContainer(root); col1.SetColumns("3w,9"); root.Parts.Add(col1); // First 3 in sidebar ColumnContainer colside1 = new ColumnContainer(col1.Columns[0]); colside1.SetColumns("1,1,1w"); colside1.Columns[0].Parts.Add(new Html() { RawHtml = "1" }); colside1.Columns[1].Parts.Add(new Html() { RawHtml = "1" }); colside1.Columns[2].Parts.Add(new Html() { RawHtml = "1w" }); col1.Columns[0].Parts.Add(colside1); // Second group in side ColumnContainer colside2 = new ColumnContainer(col1.Columns[0]); colside2.SetColumns("2w,1w"); colside2.Columns[0].Parts.Add(new Html() { RawHtml = "2w" }); colside2.Columns[1].Parts.Add(new Html() { RawHtml = "1w" }); col1.Columns[0].Parts.Add(colside2); // Third group in side ColumnContainer colside3 = new ColumnContainer(col1.Columns[0]); colside3.SetColumns("1,2"); colside3.Columns[0].Parts.Add(new Html() { RawHtml = "1" }); colside3.Columns[1].Parts.Add(new Html() { RawHtml = "2l" }); col1.Columns[0].Parts.Add(colside3); // Html in bottom of sidebar col1.Columns[0].Parts.Add(new Html() { RawHtml = "This is some content that will span the entire sidebar column and should be 3 columns wide." }); // Start Grid 9 Area col1.Columns[1].AddPart(new Html() { RawHtml = "Grid 9 - should be bumped up against wide column" }); // 4 column in 9 ColumnContainer nine1 = new ColumnContainer(col1.Columns[1]); nine1.SetColumns("2,2,2,3"); nine1.Columns[0].Parts.Add(new Html() { RawHtml = "2" }); nine1.Columns[1].Parts.Add(new Html() { RawHtml = "2" }); nine1.Columns[2].Parts.Add(new Html() { RawHtml = "2" }); nine1.Columns[3].Parts.Add(new Html() { RawHtml = "3l" }); col1.Columns[1].Parts.Add(nine1); col1.Columns[1].AddPart(new Html() { RawHtml = "And Another Section" }); // 5 column in 9 ColumnContainer nine2 = new ColumnContainer(col1.Columns[1]); nine2.SetColumns("4,2,1,1,1"); nine2.Columns[0].Parts.Add(new Html() { RawHtml = "4" }); nine2.Columns[1].Parts.Add(new Html() { RawHtml = "2" }); nine2.Columns[2].Parts.Add(new Html() { RawHtml = "1" }); nine2.Columns[3].Parts.Add(new Html() { RawHtml = "1" }); nine2.Columns[4].Parts.Add(new Html() { RawHtml = "1l" }); col1.Columns[1].Parts.Add(nine2); col1.Columns[1].AddPart(new Html() { RawHtml = "And Same Section (no gaps)" }); // 5wide column in 9 ColumnContainer nine3 = new ColumnContainer(col1.Columns[1]); nine3.SetColumns("4w,2w,1w,1w,1w"); nine3.Columns[0].Parts.Add(new Html() { RawHtml = "4w" }); nine3.Columns[1].Parts.Add(new Html() { RawHtml = "2w" }); nine3.Columns[2].Parts.Add(new Html() { RawHtml = "1w" }); nine3.Columns[3].Parts.Add(new Html() { RawHtml = "1w" }); nine3.Columns[4].Parts.Add(new Html() { RawHtml = "1l" }); col1.Columns[1].Parts.Add(nine3); // 12 columns root.AddPart(new Html() { RawHtml = "After Others" }); ColumnContainer r1 = new ColumnContainer(root); r1.SetColumns("1,1,1,1,1,1,1,1,1,1,1,1"); for (int i = 0; i < 12; i++) { r1.Columns[i].Parts.Add(new Html() { RawHtml = "1" }); } root.AddPart(r1); // 12 columns root.AddPart(new Html() { RawHtml = "Smallest Columns (no gaps)" }); ColumnContainer r2 = new ColumnContainer(root); r2.SetColumns("1w,1w,1w,1w,1w,1w,1w,1w,1w,1w,1w,1w"); for (int i = 0; i < 12; i++) { r2.Columns[i].Parts.Add(new Html() { RawHtml = "1" }); } root.AddPart(r2); // 2 even columns root.AddPart(new Html() { RawHtml = "2 even columns" }); ColumnContainer r3 = new ColumnContainer(root); r3.SetColumns("6,6"); r3.Columns[0].Parts.Add(new Html() { RawHtml = "6" }); r3.Columns[1].Parts.Add(new Html() { RawHtml = "6l" }); root.AddPart(r3); // 3 even columns root.AddPart(new Html() { RawHtml = "3 even columns" }); ColumnContainer r4 = new ColumnContainer(root); r4.SetColumns("4,4,4"); r4.Columns[0].Parts.Add(new Html() { RawHtml = "4" }); r4.Columns[1].Parts.Add(new Html() { RawHtml = "4" }); r4.Columns[2].Parts.Add(new Html() { RawHtml = "4l" }); root.AddPart(r4); // 4 even columns root.AddPart(new Html() { RawHtml = "4 even columns" }); ColumnContainer r4e = new ColumnContainer(root); r4e.SetColumns("3,3,3,3"); r4e.Columns[0].Parts.Add(new Html() { RawHtml = "3" }); r4e.Columns[1].Parts.Add(new Html() { RawHtml = "3" }); r4e.Columns[2].Parts.Add(new Html() { RawHtml = "3" }); r4e.Columns[3].Parts.Add(new Html() { RawHtml = "3l" }); root.AddPart(r4e); // 2 sides + middle root.AddPart(new Html() { RawHtml = "2 sides + middle" }); ColumnContainer r5 = new ColumnContainer(root); r5.SetColumns("2,8,2"); r5.Columns[0].Parts.Add(new Html() { RawHtml = "2" }); r5.Columns[1].Parts.Add(new Html() { RawHtml = "8" }); r5.Columns[2].Parts.Add(new Html() { RawHtml = "2l" }); root.AddPart(r5); // 2 sides wide + middle root.AddPart(new Html() { RawHtml = "2 sides wide + middle" }); ColumnContainer r6 = new ColumnContainer(root); r6.SetColumns("3,6,3"); r6.Columns[0].Parts.Add(new Html() { RawHtml = "3" }); r6.Columns[1].Parts.Add(new Html() { RawHtml = "6" }); r6.Columns[2].Parts.Add(new Html() { RawHtml = "3l" }); root.AddPart(r6); // Side Left root.AddPart(new Html() { RawHtml = "Side Left" }); ColumnContainer sl = new ColumnContainer(root); sl.SetColumns("3,9"); sl.Columns[0].Parts.Add(new Html() { RawHtml = "3" }); sl.Columns[1].Parts.Add(new Html() { RawHtml = "9l" }); root.AddPart(sl); // Side Right root.AddPart(new Html() { RawHtml = "Side Right" }); ColumnContainer sr = new ColumnContainer(root); sr.SetColumns("9,3"); sr.Columns[0].Parts.Add(new Html() { RawHtml = "9" }); sr.Columns[1].Parts.Add(new Html() { RawHtml = "3l" }); root.AddPart(sr); // Off Balance Right root.AddPart(new Html() { RawHtml = "Off Balance Right" }); ColumnContainer sr2 = new ColumnContainer(root); sr2.SetColumns("5,7"); sr2.Columns[0].Parts.Add(new Html() { RawHtml = "5" }); sr2.Columns[1].Parts.Add(new Html() { RawHtml = "7l" }); root.AddPart(sr2); // Off Balance Left root.AddPart(new Html() { RawHtml = "Off Balance Left" }); ColumnContainer sl2 = new ColumnContainer(root); sl2.SetColumns("7,5"); sl2.Columns[0].Parts.Add(new Html() { RawHtml = "7" }); sl2.Columns[1].Parts.Add(new Html() { RawHtml = "5l" }); root.AddPart(sl2); root.AddPart(new Html() { RawHtml = "<p>End of Samples</p>" }); return root; }
public void CanDeserializeRootColumnFromXmlString() { string source = "<rootcolumn>"; source += "<id>rootcol</id>"; source += "<parts>"; source += "<part><id>col1</id><typecode>columncontainer</typecode>"; source += "<spacerabove>true</spacerabove>"; source += "<columns>"; source += "<part><id>col1a</id><typecode>column</typecode>"; source += "<size>Size2</size><nogutter>false</nogutter>"; source += "<parts>"; source += "<part><id>test1</id><typecode>htmlpart</typecode><rawhtml>sidebar</rawhtml></part>"; source += "</parts>"; source += "</part>"; source += "<part><id>col1b</id><typecode>column</typecode>"; source += "<size>Size10</size><nogutter>false</nogutter>"; source += "<parts>"; source += "<part><id>test2</id><typecode>htmlpart</typecode><rawhtml><h1>hello, world!</h1></rawhtml></part>"; source += "<part><id>test3</id><typecode>htmlpart</typecode><rawhtml><p>Lorem Ipsum</p></rawhtml></part>"; source += "<part><id>col2</id><typecode>columncontainer</typecode>"; source += "<spacerabove>true</spacerabove>"; source += "<columns>"; source += "<part><id>col2a</id><typecode>column</typecode>"; source += "<size>Size4</size><nogutter>true</nogutter>"; source += "<parts>"; source += "<part><id>test4</id><typecode>htmlpart</typecode><rawhtml>inside</rawhtml></part>"; source += "</parts>"; source += "</part>"; source += "<part><id>col2b</id><typecode>column</typecode>"; source += "<size>Size6</size><nogutter>false</nogutter>"; source += "<parts>"; source += "<part><id>test5</id><typecode>htmlpart</typecode><rawhtml>outside</rawhtml></part>"; source += "</parts>"; source += "</part>"; source += "</columns>"; source += "</part>"; source += "</parts>"; source += "</part>"; source += "</columns>"; source += "</part>"; source += "</parts>"; source += "</rootcolumn>"; RootColumn expected = new RootColumn(); expected.Id = "rootcol"; ColumnContainer cols = new ColumnContainer(expected); cols.Id = "col1"; expected.AddPart(cols); cols.SetColumns("2,10"); cols.Columns[0].Id = "col1a"; cols.Columns[1].Id = "col1b"; cols.Columns[0].AddPart(new Html() { Id = "test1", RawHtml = "sidebar" }); cols.Columns[1].AddPart(new Html() { Id = "test2", RawHtml = "<h1>hello, world!</h1>" }); cols.Columns[1].AddPart(new Html() { Id = "test3", RawHtml = "<p>Lorem Ipsum</p>" }); ColumnContainer cols2 = new ColumnContainer(cols.Columns[1]); cols2.Id = "col2"; cols2.SetColumns("4w,6"); cols2.Columns[0].Id = "col2a"; cols2.Columns[1].Id = "col2b"; cols2.Columns[0].AddPart(new Html() { Id = "test4", RawHtml = "inside" }); cols2.Columns[1].AddPart(new Html() { Id = "test5", RawHtml = "outside" }); cols.Columns[1].AddPart(cols2); RootColumn actual = new RootColumn(); actual.DeserializeFromXml(source); Assert.AreEqual(expected.Id, actual.Id); Assert.AreEqual(expected.MinimumSize(), actual.MinimumSize()); Assert.AreEqual(expected.NoGutter, actual.NoGutter); Assert.AreEqual(1, actual.Parts.Count); ColumnContainer actualCols = (ColumnContainer)actual.Parts[0]; Assert.IsNotNull(actualCols); Assert.AreEqual(cols.Id, actualCols.Id); Assert.AreEqual(cols.Columns.Count, actualCols.Columns.Count); Assert.AreEqual(cols.MinimumSize(), actualCols.MinimumSize()); // Column 1 Assert.AreEqual(cols.Columns[0].Id, actualCols.Columns[0].Id); Assert.AreEqual(cols.Columns[0].NoGutter, actualCols.Columns[0].NoGutter); Assert.AreEqual(cols.Columns[0].Parts.Count, actualCols.Columns[0].Parts.Count); Assert.AreEqual(cols.Columns[0].Size, actualCols.Columns[0].Size); // Part 1 in Column 1 Html test1 = (Html)actualCols.Columns[0].Parts[0]; Assert.IsNotNull(test1); Assert.AreEqual("test1", test1.Id); Assert.AreEqual("sidebar", test1.RawHtml); // Column 2 Assert.AreEqual(cols.Columns[1].Id, actualCols.Columns[1].Id); Assert.AreEqual(cols.Columns[1].NoGutter, actualCols.Columns[1].NoGutter); Assert.AreEqual(cols.Columns[1].Parts.Count, actualCols.Columns[1].Parts.Count); Assert.AreEqual(cols.Columns[1].Size, actualCols.Columns[1].Size); // Part 1 in Column 2 Html test2 = (Html)actualCols.Columns[1].Parts[0]; Assert.IsNotNull(test2); Assert.AreEqual("test2", test2.Id); Assert.AreEqual("<h1>hello, world!</h1>", test2.RawHtml); // Part 2 in Column 2 Html test3 = (Html)actualCols.Columns[1].Parts[1]; Assert.IsNotNull(test3); Assert.AreEqual("test3", test3.Id); Assert.AreEqual("<p>Lorem Ipsum</p>", test3.RawHtml); // ColumnContainer 2 inside column 2 ColumnContainer actualCols2 = (ColumnContainer)actualCols.Columns[1].Parts[2]; Assert.IsNotNull(actualCols2); Assert.AreEqual(cols2.Columns.Count, actualCols2.Columns.Count); Assert.AreEqual(cols2.Id, actualCols2.Id); Assert.AreEqual(cols2.MinimumSize(), actualCols2.MinimumSize()); // ColumnContainer2 column 1 Assert.AreEqual(cols2.Columns[0].Id, actualCols2.Columns[0].Id); Assert.AreEqual(cols2.Columns[0].NoGutter, actualCols2.Columns[0].NoGutter); Assert.AreEqual(cols2.Columns[0].Parts.Count, actualCols2.Columns[0].Parts.Count); Assert.AreEqual(cols2.Columns[0].Size, actualCols2.Columns[0].Size); // ColumnContainer2 Part 1 in Column 1 Html test4 = (Html)actualCols2.Columns[0].Parts[0]; Assert.IsNotNull(test4); Assert.AreEqual("test4", test4.Id); Assert.AreEqual("inside", test4.RawHtml); // ColumnContainer2 column 2 Assert.AreEqual(cols2.Columns[1].Id, actualCols2.Columns[1].Id); Assert.AreEqual(cols2.Columns[1].NoGutter, actualCols2.Columns[1].NoGutter); Assert.AreEqual(cols2.Columns[1].Parts.Count, actualCols2.Columns[1].Parts.Count); Assert.AreEqual(cols2.Columns[1].Size, actualCols2.Columns[1].Size); // ColumnContainer2 Part 1 in Column 2 Html test5 = (Html)actualCols2.Columns[1].Parts[0]; Assert.IsNotNull(test5); Assert.AreEqual("test5", test5.Id); Assert.AreEqual("outside", test5.RawHtml); // Make sure everything renders as expected string expectedRender = expected.RenderForDisplay(new MerchantTribeApplication(new RequestContext(), true), null); string actualRender = actual.RenderForDisplay(new MerchantTribeApplication(new RequestContext(), true), null); Assert.AreEqual(expectedRender, actualRender); }