예제 #1
0
        public void CanRemoveContentPartFromList()
        {
            RootColumn      root   = new RootColumn();
            ColumnContainer target = new ColumnContainer(root);

            Html part1 = new Html()
            {
                Id = "1234", RawHtml = "Hello, World"
            };
            Html part2 = new Html()
            {
                Id = "5678", RawHtml = "Hello, World 2"
            };

            target.Columns[0].AddPart(part1);
            target.Columns[0].AddPart(part2);

            bool expected = true;
            bool actual;

            actual = target.Columns[0].RemovePart(part1.Id);
            Assert.AreEqual(expected, actual);

            List <IContentPart> partsAfter = target.Columns[0].Parts;

            Assert.AreEqual(1, partsAfter.Count, "Part count should be one after remove");
            Assert.AreEqual(part2.Id, partsAfter[0].Id, "Wrong part was removed!");
        }
예제 #2
0
        public void CanRenderForDisplayWithOneColumnContainerAndOnePart()
        {
            RootColumn root = new RootColumn();

            root.Id = "root";

            ColumnContainer target = new ColumnContainer(root);

            target.Id = "target";
            target.Columns[0].Parts.Add(SamplePart1);
            target.Columns[1].Parts.Add(SamplePart4);
            root.Parts.Add(target);

            string expected = "<div class=\"cols\">";

            expected += "<div class=\"grid_12\" >";

            expected += "<div class=\"cols editable issortable spacerabove\"><div class=\"grid_6\" >";
            expected += SamplePart1.RawHtml;
            expected += "</div>";

            expected += "<div class=\"grid_6l\" >";
            expected += SamplePart4.RawHtml;
            expected += "</div><div class=\"clearcol\"></div></div>";

            expected += "</div>";
            expected += "<div class=\"clearcol\"></div>";
            expected += "</div>";

            string actual;

            actual = root.RenderForDisplay(null, null);
            Assert.AreEqual(expected, actual);
        }
예제 #3
0
        public void CanFailWhenRemovingContentPart()
        {
            RootColumn      root   = new RootColumn();
            ColumnContainer target = new ColumnContainer(root);

            Html part1 = new Html()
            {
                Id = "1234", RawHtml = "Hello, World"
            };
            Html part2 = new Html()
            {
                Id = "5678", RawHtml = "Hello, World 2"
            };

            target.Columns[0].AddPart(part1);
            target.Columns[0].AddPart(part2);

            string nonExistingPartId = "56789";
            bool   expected          = false;
            bool   actual;

            actual = target.Columns[0].RemovePart(nonExistingPartId);
            Assert.AreEqual(expected, actual);

            List <IContentPart> partsAfter = target.Columns[0].Parts;

            Assert.AreEqual(2, partsAfter.Count, "Part count should be two after failed remove");
        }
        private void ParseColumns(IEnumerable <string[]> selectionWithColumnPath)
        {
            foreach (var selectionColumnPath in selectionWithColumnPath)
            {
                SelectColumn parentColumn = new RootColumn(_baseType);
                for (var depth = 0; depth < selectionColumnPath.Length; depth++)
                {
                    if (IsGreaterThenMaxDepth(depth))
                    {
                        break;
                    }

                    var columnName = selectionColumnPath[depth];
                    var property   = parentColumn.Type.GetTypeOrGenericType().GetProperties().FirstOrDefault(x => x.Name.ToLowerInvariant() == columnName.ToLowerInvariant());

                    if (property == null || IsGreaterThanMaxDepth(property, depth))
                    {
                        break;
                    }

                    var key           = string.Join(".", selectionColumnPath.Take(depth + 1)).ToLowerInvariant();
                    var currentColumn = _allSelectColumns.FirstOrDefault(all => all.Key == key);
                    if (currentColumn != null)
                    {
                        parentColumn = currentColumn;
                    }
                    else
                    {
                        // pass non selectable & unselectable properties
                        if (IsNotSelectableProperty(key) || IsUnselectableProperty(key) || IsAnIndexerProperty(property))
                        {
                            continue;
                        }

                        var column = new SelectColumn(columnName, key, property.PropertyType);

                        if (_rawSelection.Contains(column.Key + ".*", StringComparer.OrdinalIgnoreCase))
                        {
                            column.InclusionType = SelectInclusingType.IncludeAllProperties;
                            ProcessInclusingType(column);
                        }
                        else if (property.PropertyType.IsCustomObjectType() && _rawSelection.Contains(column.Key, StringComparer.OrdinalIgnoreCase))
                        {
                            column.InclusionType = SelectInclusingType.IncludeBaseProperties;
                            ProcessInclusingType(column);
                        }

                        _allSelectColumns.Add(column);
                        if (depth == 0)
                        {
                            _selectColumns.Add(column);
                        }

                        column.ParentColumn = parentColumn;
                        parentColumn.SubColumns.Add(column);
                        parentColumn = column;
                    }
                }
            }
        }
예제 #5
0
        public void CanNotAddMoreColumnsThanSpaceAvailable()
        {
            RootColumn      root   = new RootColumn();
            ColumnContainer target = new ColumnContainer(root);

            Assert.AreEqual(2, target.Columns.Count, "Container should have 2 column to start");
            Assert.IsFalse(target.AddColumns(11), "Adding more columns than parent size should return false");
        }
예제 #6
0
        public RootColumn GetSimpleSample()
        {
            RootColumn root = new RootColumn();



            // Sidebar + Main Column
            ColumnContainer col1 = new ColumnContainer(root);

            col1.SetColumns("3,9");
            root.Parts.Add(col1);

            col1.Columns[0].AddPart(new Html());
            col1.Columns[1].AddPart(new Html()
            {
                RawHtml = "<h1>Heading</h1>"
            });
            col1.Columns[1].AddPart(new Html());
            col1.Columns[1].AddPart(new Html()
            {
                RawHtml = "<h2>Sub Heading</h2>"
            });
            col1.Columns[1].AddPart(new Html());

            ColumnContainer col2 = new ColumnContainer(col1.Columns[1]);

            col2.SetColumns("2,5,2");
            col2.Columns[0].AddPart(new Html()
            {
                RawHtml = "<p>Left Side</p>"
            });
            col2.Columns[1].AddPart(new Html());
            col2.Columns[2].AddPart(new Html()
            {
                RawHtml = "<ul><li>One</li><li>Two</li><li>Three</li></ul>"
            });
            col1.Columns[1].AddPart(col2);

            ColumnContainer small = new ColumnContainer(col2.Columns[2]);

            small.SetColumns("1,1");
            small.Columns[0].AddPart(new Html()
            {
                RawHtml = "Small text goes here"
            });
            small.Columns[1].AddPart(new Html()
            {
                RawHtml = "More small text!"
            });
            col2.Columns[2].AddPart(small);

            root.Parts.Add(new Html());

            return(root);
        }
예제 #7
0
        public void CanListColumnsOnCreateTest()
        {
            RootColumn      root     = new RootColumn();
            ColumnContainer target   = new ColumnContainer(root);
            List <Column>   expected = new List <Column>();
            List <Column>   actual;

            actual = target.Columns;
            Assert.IsNotNull(actual, "List of columns should never be null");
            Assert.AreEqual(2, actual.Count, "Column Count should always be 2 on new containers");
        }
 public CategoryPageVersion()
 {
     Id                    = 0;
     PageId                = string.Empty;
     AdminName             = string.Empty;
     AvailableScheduleId   = 0;
     AvailableStartDateUtc = new DateTime(1900, 1, 1);
     AvailableEndDateUtc   = new DateTime(9999, 1, 1);
     Root                  = new RootColumn();
     PublishedStatus       = PublishStatus.Draft;
     Areas                 = new AreaData();
 }
예제 #9
0
        public void CanAddColumnToContainer()
        {
            RootColumn      root   = new RootColumn();
            ColumnContainer target = new ColumnContainer(root);

            Assert.AreEqual(2, target.Columns.Count, "Container should start with two columns");
            Assert.IsTrue(target.AddColumns(1), "Should return true when adding column");
            Assert.AreEqual(3, target.Columns.Count, "Column Cound should be 3");
            Assert.AreEqual(ColumnSize.Size4, target.Columns[0].Size, "First column number should be size 4");
            Assert.AreEqual(ColumnSize.Size4, target.Columns[1].Size, "Second column number should be size 4");
            Assert.AreEqual(ColumnSize.Size4, target.Columns[2].Size, "Third column number should be size 4");
        }
예제 #10
0
        public void CanFailToResizeColumnWhenBiggerThanMax()
        {
            RootColumn      root   = new RootColumn();
            ColumnContainer target = new ColumnContainer(root);

            Assert.AreEqual(2, target.Columns.Count, "Container should start with two columns");
            Assert.IsTrue(target.AddColumns(1), "Should return true when adding column");
            Assert.AreEqual(3, target.Columns.Count, "Column Cound should be 3");
            Assert.AreEqual(ColumnSize.Size4, target.Columns[0].Size, "First column number should be size 4");
            Assert.AreEqual(ColumnSize.Size4, target.Columns[1].Size, "Second column number should be size 4");
            Assert.AreEqual(ColumnSize.Size4, target.Columns[2].Size, "Third column number should be size 4");

            Assert.IsFalse(target.ResizeColumn(0, ColumnSize.Size11), "Column should not resize to size 11");
        }
예제 #11
0
        public void CanAddContentPart()
        {
            RootColumn      root   = new RootColumn();
            ColumnContainer target = new ColumnContainer(root);
            IContentPart    part1  = new Html()
            {
                Id = "1234", RawHtml = "Hello, World"
            };
            bool expected = true;
            bool actual;

            actual = target.Columns[0].AddPart(part1);
            Assert.AreEqual(expected, actual);
        }
예제 #12
0
        public void CanRenderForDisplayWhenEmpty()
        {
            RootColumn root = new RootColumn();

            string expected = "<div class=\"cols\">";

            expected += "<div class=\"grid_12\" >";
            expected += "</div>";
            expected += "<div class=\"clearcol\"></div>";
            expected += "</div>";
            string actual;

            actual = root.RenderForDisplay(null, null);
            Assert.AreEqual(expected, actual);
        }
예제 #13
0
        public void CanResizeColumnsUsingShorthand()
        {
            RootColumn      root   = new RootColumn();
            ColumnContainer target = new ColumnContainer(root);

            target.SetNumberOfColumns(3);
            Assert.AreEqual(3, target.Columns.Count, "Column Cound should be 3");
            Assert.AreEqual(ColumnSize.Size4, target.Columns[0].Size, "First column number should be size 4");
            Assert.AreEqual(ColumnSize.Size4, target.Columns[1].Size, "Second column number should be size 4");
            Assert.AreEqual(ColumnSize.Size4, target.Columns[2].Size, "Third column number should be size 4");

            Assert.IsTrue(target.SetColumnSizes("10,1,1"), "Column set size should be true");

            Assert.AreEqual(ColumnSize.Size10, target.Columns[0].Size, "First column number should be size 10");
            Assert.AreEqual(ColumnSize.Size1, target.Columns[1].Size, "Second column number should be size 1");
            Assert.AreEqual(ColumnSize.Size1, target.Columns[2].Size, "Third column number should be size 1");
        }
예제 #14
0
        public void CanListParts()
        {
            RootColumn      root   = new RootColumn();
            ColumnContainer target = new ColumnContainer(root);

            Html part1 = new Html()
            {
                Id = "1234", RawHtml = "Hello, World"
            };

            List <IContentPart> expected = new List <IContentPart>()
            {
                part1
            };
            List <IContentPart> actual;

            target.Columns[0].AddPart(part1);
            actual = target.Columns[0].Parts;
            Assert.AreEqual(1, actual.Count, "Count should be one");
            Assert.AreEqual(expected[0].Id, actual[0].Id, "part id value didn't match as expected");
        }
예제 #15
0
        public void CanRemoveSingleContentPart()
        {
            RootColumn      root   = new RootColumn();
            ColumnContainer target = new ColumnContainer(root);

            Html part1 = new Html()
            {
                Id = "1234", RawHtml = "Hello, World"
            };

            target.Columns[0].AddPart(part1);

            bool expected = true;
            bool actual;

            actual = target.Columns[0].RemovePart(part1.Id);
            Assert.AreEqual(expected, actual);

            List <IContentPart> partsAfter = target.Columns[0].Parts;

            Assert.AreEqual(0, partsAfter.Count, "Part count should be zero after remove");
        }
예제 #16
0
        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>&lt;h1&gt;hello, world!&lt;/h1&gt;</rawhtml></part>";
            source += "<part><id>test3</id><typecode>htmlpart</typecode><rawhtml>&lt;p&gt;Lorem Ipsum&lt;/p&gt;</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);
        }
예제 #17
0
        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>&lt;h1&gt;hello, world!&lt;/h1&gt;</rawhtml></part>";
            expected += "<part><id>test3</id><typecode>htmlpart</typecode><rawhtml>&lt;p&gt;Lorem Ipsum&lt;/p&gt;</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);
        }
예제 #18
0
        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);
        }