public void Merge_And_Assert_Removing(BaseConstruct merged1, BaseConstruct merged2, BaseConstruct merged3, BaseConstruct user, BaseConstruct prevgen, BaseConstruct newgen, string expectedResult)
 {
     Assert.That(merged1.CustomMergeStep(user, newgen, prevgen), Is.EqualTo(true));
     string result = merged1.ToString();
     Assertions.StringContains(result, expectedResult, 1, "\nTesting removal of a construct in template");
 }
        public void Merge_And_Assert(BaseConstruct merged1, BaseConstruct merged2, BaseConstruct merged3, BaseConstruct changed, BaseConstruct unchanged, string expectedResult)
        {
            Assert.That(merged1.CustomMergeStep(changed, unchanged, unchanged), Is.EqualTo(true), "CustomMergeStep returned false when the user version had changed");
            string result = merged1.ToString();
            Assertions.StringContains(result, expectedResult, 1, "\nUser change");

            Assert.That(merged2.CustomMergeStep(unchanged, changed, unchanged), Is.EqualTo(true), "CustomMergeStep returned false when the template version had changed");
            result = merged2.ToString();
            Assertions.StringContains(result, expectedResult, 1, "\nTemplate Change");

            Assert.That(merged3.CustomMergeStep(changed, changed, unchanged), Is.EqualTo(true), "CustomMergeStep returned false when the template and users version had both changed");
            result = merged3.ToString();
            Assertions.StringContains(result, expectedResult, 1, "\nTemplate and User changes, with both changes the same");
        }