public void TestSerializationDeserialization()
        {
            ConfigurationV5 config           = CreateConfiguration();
            string          serializedConfig = config.SerializeAsString();
            var             result           = serializedConfig.DeserializeFromString();

            Assert.AreEqual(config.ColumnSummaryFieldName, result.ColumnSummaryFieldName);
            Assert.AreEqual(config.RowSummaryFieldName, result.RowSummaryFieldName);
            Assert.AreEqual(config.SortFieldName, result.SortFieldName);
            Assert.AreEqual(config.SortDirection, result.SortDirection);
            Assert.AreEqual(config.QueryId, result.QueryId);
            Assert.AreEqual(config.States.Count, result.States.Count);
            Assert.AreEqual(config.BacklogItems.Count, result.BacklogItems.Count);
            Assert.AreEqual(config.ChildItems.Count, result.ChildItems.Count);
            Assert.AreEqual(config.HideColumnSummaryFieldName, result.HideColumnSummaryFieldName);
        }
        protected virtual ConfigurationV5 CreateConfiguration()
        {
            var config = new ConfigurationV5();

            config.BacklogItems.AddRange(new List <string> {
                "Requirement", "Bug"
            });
            config.ChildItems.AddRange(new List <string> {
                "Task", "TestCase"
            });
            config.ColumnSummaryFieldName = "Remaining Work";
            config.RowSummaryFieldName    = "Completed Work";
            config.QueryId       = Guid.NewGuid();
            config.SortDirection = SortDirection.Descending;
            config.SortFieldName = "Priority";
            config.HideColumnSummaryFieldName = true;
            config.WorkItemSize = WorkItemSize.Small;
            var stateA = new CustomState {
                Color = Colors.AliceBlue, Name = "Pending"
            };

            stateA.WorkItemStates.Add("Proposed");
            var stateB = new CustomState {
                Color = Colors.Navy, Name = "In Progress"
            };

            stateB.WorkItemStates.Add("Active");
            var stateC = new CustomState {
                Color = Colors.DarkRed, Name = "Done"
            };

            stateC.WorkItemStates.Add("Resolved");
            stateC.WorkItemStates.Add("Closed");

            config.States.Add(stateA);
            config.States.Add(stateB);
            config.States.Add(stateC);
            return(config);
        }