public void Test_01_AcceptsOnlyOfficeFileTypes()
		{
			CleanActionPropertySet properties = new CleanActionPropertySet();
			CleanUserControl ctrl = new CleanUserControl();
			CleanUIController controller = new CleanUIController(ctrl, properties, ".doc");
			controller = new CleanUIController(ctrl, properties, ".xls");
			controller = new CleanUIController(ctrl, properties, ".ppt");
			controller = new CleanUIController(ctrl, properties, ".docx");
			controller = new CleanUIController(ctrl, properties, ".xlsx");
			controller = new CleanUIController(ctrl, properties, ".pptx");
		}
        public void TestGetListOfEnabledElementsToClean()
        {
            CleanActionPropertySet cleanSet = new CleanActionPropertySet();
            cleanSet.Clear();
            cleanSet.Add(new KeyValuePair<string, Workshare.Policy.Action.IActionProperty>("FootNotes", new ActionProperty("FootNotes", typeof(bool), PropertyDisplayType.Checkbox, true, true, true, true)));
            cleanSet.Add(new KeyValuePair<string, Workshare.Policy.Action.IActionProperty>("Headers", new ActionProperty("Headers", typeof(bool), PropertyDisplayType.Checkbox, true, true, true, false)));
            cleanSet.Add(new KeyValuePair<string, Workshare.Policy.Action.IActionProperty>("Template", new ActionProperty("Template", typeof(bool), PropertyDisplayType.Checkbox, true, true, true, false)));
            cleanSet.Add(new KeyValuePair<string, Workshare.Policy.Action.IActionProperty>("CustomProperties", new ActionProperty("CustomProperties", typeof(bool), PropertyDisplayType.Checkbox, true, true, true, false)));
            cleanSet.Add(new KeyValuePair<string, Workshare.Policy.Action.IActionProperty>("DocumentVariables", new ActionProperty("DocumentVariables", typeof(bool), PropertyDisplayType.Checkbox, true, true, true, false)));
            cleanSet.Add(new KeyValuePair<string, Workshare.Policy.Action.IActionProperty>("RoutingSlip", new ActionProperty("RoutingSlip", typeof(bool), PropertyDisplayType.Checkbox, true, true, true, false)));
            cleanSet.Add(new KeyValuePair<string, Workshare.Policy.Action.IActionProperty>("Links", new ActionProperty("Links", typeof(bool), PropertyDisplayType.Checkbox, true, true, true, false)));
            cleanSet.Add(new KeyValuePair<string, Workshare.Policy.Action.IActionProperty>("HiddenText", new ActionProperty("HiddenText", typeof(bool), PropertyDisplayType.Checkbox, true, true, true, false)));

            cleanSet.Add(new KeyValuePair<string, Workshare.Policy.Action.IActionProperty>("ExcludeCustomProperties", new ActionProperty("ExcludeCustomProperties", typeof(string), PropertyDisplayType.TextBox, true, true, String.Empty, false)));

            WordXCleaningStrategy wxStrategy = new WordXCleaningStrategy();
            Type type = typeof(CleanStrategyBase);
            MethodInfo mi = type.GetMethod("GetListOfEnabledElementsToClean", BindingFlags.NonPublic|BindingFlags.Instance);
            object returned = mi.Invoke(wxStrategy, new object[1] { cleanSet });
            List<ContentType> contentTypes = (List<ContentType>)returned;

            Assert.IsTrue(contentTypes.Contains(ContentType.AttachedTemplate), "Missing AttachedTemplate expected ContentType");
            Assert.IsFalse(contentTypes.Contains(ContentType.AutoVersion), "AutoVersion not expected ContentType");
            Assert.IsFalse(contentTypes.Contains(ContentType.BuiltInProperty), "BuiltInProperty not expected ContentType");
            Assert.IsFalse(contentTypes.Contains(ContentType.Comment), "Comment not expected ContentType");
            Assert.IsTrue(contentTypes.Contains(ContentType.ContentRule), "Missing ContentRule expected ContentType");
            Assert.IsTrue(contentTypes.Contains(ContentType.CustomProperty), "Missing CustomProperty expected ContentType");
            Assert.IsFalse(contentTypes.Contains(ContentType.DocumentStatistic), "DocumentStatistic not expected ContentType");
            Assert.IsTrue(contentTypes.Contains(ContentType.Endnote), "Missing Endnote expected ContentType");
            Assert.IsFalse(contentTypes.Contains(ContentType.Field), "Field not expected ContentType");
            Assert.IsFalse(contentTypes.Contains(ContentType.Footer), "Footer not expected ContentType");
            Assert.IsTrue(contentTypes.Contains(ContentType.Footnote), "Missing Footnote expected ContentType");
            Assert.IsTrue(contentTypes.Contains(ContentType.Header), "Missing Header expected ContentType");
            Assert.IsTrue(contentTypes.Contains(ContentType.HiddenColumn), "Missing HiddenColumn expected ContentType");
            Assert.IsTrue(contentTypes.Contains(ContentType.HiddenRow), "Missing HiddenRow expected ContentType");
            Assert.IsTrue(contentTypes.Contains(ContentType.HiddenSheet), "Missing HiddenSheet expected ContentType");
            Assert.IsFalse(contentTypes.Contains(ContentType.HiddenSlide), "HiddenSlide not expected ContentType");
            Assert.IsTrue(contentTypes.Contains(ContentType.HiddenText), "Missing HiddenText expected ContentType");
            Assert.IsTrue(contentTypes.Contains(ContentType.Hyperlink), "Missing Hyperlink expected ContentType");
            Assert.IsTrue(contentTypes.Contains(ContentType.Links), "Missing Links expected ContentType");
            Assert.IsFalse(contentTypes.Contains(ContentType.Macro), "Macro not expected ContentType");
            Assert.IsTrue(contentTypes.Contains(ContentType.RedactedText), "Missing RedactedText expected ContentType");
            Assert.IsFalse(contentTypes.Contains(ContentType.Reviewer), "Reviewer not expected ContentType");
//            Assert.IsFalse(contentTypes.Contains(ContentType.RoutingSlip), "RoutingSlip not expected ContentType - isn't valid type in Office 2007");
            Assert.IsFalse(contentTypes.Contains(ContentType.SmallText), "SmallText not expected ContentType");
            Assert.IsFalse(contentTypes.Contains(ContentType.SmartTag), "SmartTag not expected ContentType");
            Assert.IsFalse(contentTypes.Contains(ContentType.SpeakerNote), "SpeakerNote not expected ContentType");
            Assert.IsFalse(contentTypes.Contains(ContentType.TrackChange), "TrackChange not expected ContentType");
            Assert.IsTrue(contentTypes.Contains(ContentType.Variable), "Missing Variable expected ContentType");
            Assert.IsFalse(contentTypes.Contains(ContentType.Version), "Version not expected ContentType");
            Assert.IsFalse(contentTypes.Contains(ContentType.WhiteText), "WhiteText not expected ContentType");
            Assert.IsTrue(contentTypes.Contains(ContentType.WorkshareProperty), "Missing WorkshareProperty expected ContentType");
        }
        string CleanFile(string file)
        {
            var tffa = new TempFileForActions(file);

            var caps = new CleanActionPropertySet();
            caps[CleanOption.SkipDomCleaning].Value = true;
            
            var strategy = new WordXCleaningStrategy();
            strategy.RemoveMetadata(tffa, caps);
            return file;
        }
        public void Test_06_ListExcludedMetawallProperties()
        {
            CleanActionPropertySet cleanProperties = new CleanActionPropertySet();

            List<string> excludedMetawallProps = cleanProperties.GetExcludedMetawallPropertyList();

            Assert.AreEqual(18, excludedMetawallProps.Count, "There should be 18 metawall properties");
            Assert.IsTrue(excludedMetawallProps.Contains(CleanOption.ExcludeCustomProperties), "Failed to find ExcludeCustomProperties");
            Assert.IsTrue(excludedMetawallProps.Contains(CleanOption.ExcludeDocumentVariables), "Failed to find ExcludeDocumentVariables");
            Assert.IsTrue(excludedMetawallProps.Contains(CleanOption.ExcludeFieldCodes), "Failed to find ExcludeFieldCodes");
            Assert.IsTrue(excludedMetawallProps.Contains(CleanOption.ExcludeFieldCodesAuthorInformation), "Failed to find ExcludeFieldCodesAuthorInformation");
            Assert.IsTrue(excludedMetawallProps.Contains(CleanOption.ExcludeFieldCodesDocumentAutomation), "Failed to find ExcludeFieldCodesDocumentAutomation");
            Assert.IsTrue(excludedMetawallProps.Contains(CleanOption.ExcludeFieldCodesDocumentInformation), "Failed to find ExcludeFieldCodesDocumentInformation");
            Assert.IsTrue(excludedMetawallProps.Contains(CleanOption.ExcludeFieldCodesEquationsFormulas), "Failed to find ExcludeFieldCodesEquationsFormulas");
            Assert.IsTrue(excludedMetawallProps.Contains(CleanOption.ExcludeFieldCodesFormFields), "Failed to find ExcludeFieldCodesFormFields");
            Assert.IsTrue(excludedMetawallProps.Contains(CleanOption.ExcludeFieldCodesHyperlinks), "Failed to find ExcludeFieldCodesHyperlinks");
            Assert.IsTrue(excludedMetawallProps.Contains(CleanOption.ExcludeFieldCodesIncludeFields), "Failed to find ExcludeFieldCodesIncludeFields");
            Assert.IsTrue(excludedMetawallProps.Contains(CleanOption.ExcludeFieldCodesIndexTables), "Failed to find ExcludeFieldCodesIndexTables");
            Assert.IsTrue(excludedMetawallProps.Contains(CleanOption.ExcludeFieldCodesLinks), "Failed to find ExcludeFieldCodesLinks");
            Assert.IsTrue(excludedMetawallProps.Contains(CleanOption.ExcludeFieldCodesNumbering), "Failed to find ExcludeFieldCodesNumbering");
            Assert.IsTrue(excludedMetawallProps.Contains(CleanOption.ExcludeFieldCodesReferences), "Failed to find ExcludeFieldCodesReferences");
            Assert.IsTrue(excludedMetawallProps.Contains(CleanOption.DeleteFieldCodes), "Failed to find DeleteFieldCodes");
            Assert.IsTrue(excludedMetawallProps.Contains(CleanOption.HandleFootnotesHiddenData), "Failed to find HandleFootnotesHiddenData");
            Assert.IsTrue(excludedMetawallProps.Contains(CleanOption.EnableScriptRunning), "Failed to find EnableScriptRunning");
            Assert.IsTrue(excludedMetawallProps.Contains(CleanOption.ScriptToRun), "Failed to find ScriptToRun");
        }
        public void TestGetFCSContentTypeDict()
        {
            CleanActionPropertySet cleanProperties = new CleanActionPropertySet();

            Dictionary<ContentType, string> fcsContentTypeDict = cleanProperties.GetFCSContentTypeDict();
            Assert.AreEqual(32, fcsContentTypeDict.Count, "Number of items is wrong");
           
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.AttachedTemplate), "Missing AttachedTemplate expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.AutoVersion), "Missing AutoVersion expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.BuiltInProperty), "Missing BuiltInProperty expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.Comment), "Missing Comment expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.CustomProperty), "Missing CustomProperty expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.DocumentStatistic), "Missing DocumentStatistic expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.Endnote), "Missing Endnote expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.Field), "Missing Field expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.Footer), "Missing Footer expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.Footnote), "Missing Footnote expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.Header), "Missing Header expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.HiddenColumn), "Missing HiddenColumn expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.HiddenRow), "Missing HiddenRow expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.HiddenSheet), "Missing HiddenSheet expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.HiddenSlide), "Missing HiddenSlide expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.HiddenText), "Missing HiddenText expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.Hyperlink), "Missing Hyperlink expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.Links), "Missing Links expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.Macro), "Missing Macro expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.RedactedText), "Missing RedactedText expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.Reviewer), "Missing Reviewer expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.SmallText), "Missing SmallText expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.SmartTag), "Missing SmartTag expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.SpeakerNote), "Missing SpeakerNote expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.TrackChange), "Missing TrackChange expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.Variable), "Missing Variable expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.Version), "Missing Version expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.WhiteText), "Missing WhiteText expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.WorkshareProperty), "Missing WorkshareProperty expected key");
            Assert.IsTrue(fcsContentTypeDict.ContainsKey(ContentType.InkAnnotation), "Missing InkAnnotation expected key");
        }
		public void Test_05_ListMetawallProperties()
		{
			CleanActionPropertySet cleanProperties = new CleanActionPropertySet();

			List<string> metawallProps = cleanProperties.GetMetawallPropertyList();

			Assert.AreEqual(24, metawallProps.Count, "There should be 24 metawall properties");
			Assert.IsTrue(metawallProps.Contains(CleanOption.Footnotes), "Failed to find Footnotes");
			Assert.IsTrue(metawallProps.Contains(CleanOption.DocumentStatistics), "Failed to find DocumentStatistics");
			Assert.IsTrue(metawallProps.Contains(CleanOption.BuiltInProperties), "Failed to find BuiltInProperties");
			Assert.IsTrue(metawallProps.Contains(CleanOption.Headers), "Failed to find Headers");
			Assert.IsTrue(metawallProps.Contains(CleanOption.Footers), "Failed to find Footers");
			Assert.IsTrue(metawallProps.Contains(CleanOption.SmartTags), "Failed to find SmartTags");
			Assert.IsTrue(metawallProps.Contains(CleanOption.Template), "Failed to find Template");
			Assert.IsTrue(metawallProps.Contains(CleanOption.CustomProperties), "Failed to find CustomProperties");
			Assert.IsTrue(metawallProps.Contains(CleanOption.DocumentVariables), "Failed to find DocumentVariables");
			Assert.IsTrue(metawallProps.Contains(CleanOption.Fields), "Failed to find Fields");
			Assert.IsTrue(metawallProps.Contains(CleanOption.Macros), "Failed to find Macros");
			Assert.IsTrue(metawallProps.Contains(CleanOption.RoutingSlip), "Failed to find RoutingSlip");
			Assert.IsTrue(metawallProps.Contains(CleanOption.SpeakerNotes), "Failed to find SpeakerNotes");
			Assert.IsTrue(metawallProps.Contains(CleanOption.Links), "Failed to find Links");
			Assert.IsTrue(metawallProps.Contains(CleanOption.Reviewers), "Failed to find Reviewers");
			Assert.IsTrue(metawallProps.Contains(CleanOption.TrackChanges), "Failed to find TrackChanges");
			Assert.IsTrue(metawallProps.Contains(CleanOption.Comments), "Failed to find Comments");
			Assert.IsTrue(metawallProps.Contains(CleanOption.SmallText), "Failed to find SmallText");
			Assert.IsTrue(metawallProps.Contains(CleanOption.WhiteText), "Failed to find WhiteText");
			Assert.IsTrue(metawallProps.Contains(CleanOption.HiddenText), "Failed to find HiddenText");
			Assert.IsTrue(metawallProps.Contains(CleanOption.Authors), "Failed to find Authors");
			Assert.IsTrue(metawallProps.Contains(CleanOption.HiddenSlides), "Failed to find HiddenSlides");
			Assert.IsTrue(metawallProps.Contains(CleanOption.AutoVersion), "Failed to find AutoVersion");
			Assert.IsTrue(metawallProps.Contains(CleanOption.Versions), "Failed to find Versions");
            //Assert.IsTrue(metawallProps.Contains(CleanOption.InkAnnotations), "Failed to find InkAnnotations");
		}
		public void Test_01_Initialization()
		{

			CleanActionPropertySet cleanProperties = new CleanActionPropertySet();
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.AllowOverride), "Failed to find AllowOverride property");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Footnotes), "Failed to find Footnotes");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.DocumentStatistics), "Failed to find DocumentStatistics");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.BuiltInProperties), "Failed to find BuiltInProperties");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Headers), "Failed to find Headers");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Footers), "Failed to find Footers");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.SmartTags), "Failed to find SmartTags");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Template), "Failed to find Template");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.CustomProperties), "Failed to find CustomProperties");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.DocumentVariables), "Failed to find DocumentVariables");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Fields), "Failed to find Fields");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Macros), "Failed to find Macros");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.RoutingSlip), "Failed to find RoutingSlip");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.SpeakerNotes), "Failed to find SpeakerNotes");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Links), "Failed to find Links");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Reviewers), "Failed to find Reviewers");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.TrackChanges), "Failed to find TrackChanges");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Comments), "Failed to find Comments");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.SmallText), "Failed to find SmallText");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.WhiteText), "Failed to find WhiteText");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.HiddenText), "Failed to find HiddenText");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Authors), "Failed to find Authors");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.HiddenSlides), "Failed to find HiddenSlides");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.AutoVersion), "Failed to find AutoVersion");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Versions), "Failed to find Versions");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Execute), "Failed to find CleanHiddenData");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.InkAnnotations), "Failed to find InkAnnotations");

            // New Exclusion properties
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeCustomProperties), "Failed to find ExcludeCustomProperties");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeDocumentVariables), "Failed to find ExcludeDocumentVariables");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodes), "Failed to find ExcludeFieldCodes");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesAuthorInformation), "Failed to find ExcludeFieldCodesAuthorInformation");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesDocumentAutomation), "Failed to find ExcludeFieldCodesDocumentAutomation");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesDocumentInformation), "Failed to find ExcludeFieldCodesDocumentInformation");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesEquationsFormulas), "Failed to find ExcludeFieldCodesEquationsFormulas");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesFormFields), "Failed to find ExcludeFieldCodesFormFields");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesHyperlinks), "Failed to find ExcludeFieldCodesHyperlinks");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesIncludeFields), "Failed to find ExcludeFieldCodesIncludeFields");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesIndexTables), "Failed to find ExcludeFieldCodesIndexTables");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesLinks), "Failed to find ExcludeFieldCodesLinks");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesNumbering), "Failed to find ExcludeFieldCodesNumbering");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesReferences), "Failed to find ExcludeFieldCodesReferences");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.DeleteFieldCodes), "Failed to find DeleteFieldCodes");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.HandleFootnotesHiddenData), "Failed to find HandleFootnotesHiddenData");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.EnableScriptRunning), "Failed to find EnableScriptRunning");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ScriptToRun), "Failed to find ScriptToRun");

			// Now test the copy constructor
			cleanProperties = new CleanActionPropertySet(cleanProperties);
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.AllowOverride), "Failed to find AllowOverride property");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Footnotes), "Failed to find Footnotes");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.DocumentStatistics), "Failed to find DocumentStatistics");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.BuiltInProperties), "Failed to find BuiltInProperties");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Headers), "Failed to find Headers");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Footers), "Failed to find Footers");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.SmartTags), "Failed to find SmartTags");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Template), "Failed to find Template");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.CustomProperties), "Failed to find CustomProperties");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.DocumentVariables), "Failed to find DocumentVariables");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Fields), "Failed to find Fields");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Macros), "Failed to find Macros");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.RoutingSlip), "Failed to find RoutingSlip");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.SpeakerNotes), "Failed to find SpeakerNotes");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Links), "Failed to find Links");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Reviewers), "Failed to find Reviewers");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.TrackChanges), "Failed to find TrackChanges");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Comments), "Failed to find Comments");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.SmallText), "Failed to find SmallText");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.WhiteText), "Failed to find WhiteText");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.HiddenText), "Failed to find HiddenText");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Authors), "Failed to find Authors");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.HiddenSlides), "Failed to find HiddenSlides");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.AutoVersion), "Failed to find AutoVersion");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Versions), "Failed to find Versions");
			Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.Execute), "Failed to find CleanHiddenData");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.InkAnnotations), "Failed to find InkAnnotations");

            // New Exclusion properties
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeCustomProperties), "Failed to find ExcludeCustomProperties");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeDocumentVariables), "Failed to find ExcludeDocumentVariables");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodes), "Failed to find ExcludeFieldCodes");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesAuthorInformation), "Failed to find ExcludeFieldCodesAuthorInformation");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesDocumentAutomation), "Failed to find ExcludeFieldCodesDocumentAutomation");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesDocumentInformation), "Failed to find ExcludeFieldCodesDocumentInformation");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesEquationsFormulas), "Failed to find ExcludeFieldCodesEquationsFormulas");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesFormFields), "Failed to find ExcludeFieldCodesFormFields");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesHyperlinks), "Failed to find ExcludeFieldCodesHyperlinks");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesIncludeFields), "Failed to find ExcludeFieldCodesIncludeFields");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesIndexTables), "Failed to find ExcludeFieldCodesIndexTables");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesLinks), "Failed to find ExcludeFieldCodesLinks");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesNumbering), "Failed to find ExcludeFieldCodesNumbering");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesReferences), "Failed to find ExcludeFieldCodesReferences");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.DeleteFieldCodes), "Failed to find DeleteFieldCodes");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.HandleFootnotesHiddenData), "Failed to find HandleFootnotesHiddenData");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.EnableScriptRunning), "Failed to find EnableScriptRunning");
            Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ScriptToRun), "Failed to find ScriptToRun");
		}
		public void Test_02_GetHighRiskElementsAndTheirApplications()
		{
			CleanActionPropertySet cleanProperties = new CleanActionPropertySet();

			SortedList<string, CleanActionPropertySet.TargetApplication> properties = cleanProperties.RatedRiskPropertyTargetSet;
			Assert.AreEqual(25, properties.Count, "There should be 25 risk rated elements defined.");
			
            Assert.IsTrue(properties.ContainsKey(CleanOption.TrackChanges), "Risk rated properties should include TrackChanges");
			Assert.IsTrue(properties.ContainsKey(CleanOption.Comments), "Risk rated properties should include Comments");
			Assert.IsTrue(properties.ContainsKey(CleanOption.SmallText), "Risk rated properties should include SmallText");
			Assert.IsTrue(properties.ContainsKey(CleanOption.WhiteText), "Risk rated properties should include WhiteText");
			Assert.IsTrue(properties.ContainsKey(CleanOption.HiddenText), "Risk rated properties should include HiddenText");
			Assert.IsTrue(properties.ContainsKey(CleanOption.HiddenSlides), "Risk rated properties should include HiddenSlides");
			Assert.IsTrue(properties.ContainsKey(CleanOption.AutoVersion), "Risk rated properties should include AutoVersion");
			Assert.IsTrue(properties.ContainsKey(CleanOption.Versions), "Risk rated properties should include Versions");
            Assert.IsTrue(properties.ContainsKey(CleanOption.CustomProperties), "Risk rated properties should include CustomProperties");
            Assert.IsTrue(properties.ContainsKey(CleanOption.DocumentVariables), "Risk rated properties should include DocumentVariables");
            Assert.IsTrue(properties.ContainsKey(CleanOption.RoutingSlip), "Risk rated properties should include RoutingSlip");
            Assert.IsTrue(properties.ContainsKey(CleanOption.Links), "Risk rated properties should include Links");
            Assert.IsTrue(properties.ContainsKey(CleanOption.BuiltInProperties), "Risk rated properties should include BuiltInProperties");
            Assert.IsTrue(properties.ContainsKey(CleanOption.Headers), "Risk rated properties should include Headers");
            Assert.IsTrue(properties.ContainsKey(CleanOption.Footers), "Risk rated properties should include Footers");
            Assert.IsTrue(properties.ContainsKey(CleanOption.SmartTags), "Risk rated properties should include SmartTags");
            Assert.IsTrue(properties.ContainsKey(CleanOption.Template), "Risk rated properties should include Template");
            Assert.IsTrue(properties.ContainsKey(CleanOption.Fields), "Risk rated properties should include Fields");
            Assert.IsTrue(properties.ContainsKey(CleanOption.SpeakerNotes), "Risk rated properties should include SpeakerNotes");
            Assert.IsTrue(properties.ContainsKey(CleanOption.Authors), "Risk rated properties should include Authors");
            Assert.IsTrue(properties.ContainsKey(CleanOption.Macros), "Risk rated properties should include Macros");
            Assert.IsTrue(properties.ContainsKey(CleanOption.Reviewers), "Risk rated properties should include Reviewers");
            Assert.IsTrue(properties.ContainsKey(CleanOption.DocumentStatistics), "Risk rated properties should include DocumentStatistics");
            Assert.IsTrue(properties.ContainsKey(CleanOption.Footnotes), "Risk rated properties should include Footnotes");
            Assert.IsTrue(properties.ContainsKey(CleanOption.InkAnnotations), "Risk rated properties should include InkAnnotations");

			Assert.IsTrue(properties[CleanOption.TrackChanges] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel), "TrackChanges are meant for Word and Excel");
			Assert.IsTrue(properties[CleanOption.Comments] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Comments are meant for Word, Excel and PowerPoint");
			Assert.IsTrue(properties[CleanOption.SmallText] == CleanActionPropertySet.TargetApplication.Word, "SmallText are meant for Word");
			Assert.IsTrue(properties[CleanOption.WhiteText] == CleanActionPropertySet.TargetApplication.Word, "WhiteText are meant for Word");
			Assert.IsTrue(properties[CleanOption.HiddenText] == CleanActionPropertySet.TargetApplication.Word, "HiddenText are meant for Word");
			Assert.IsTrue(properties[CleanOption.HiddenSlides] == CleanActionPropertySet.TargetApplication.PowerPoint, "HiddenSlides are meant for PowerPoint");
			Assert.IsTrue(properties[CleanOption.AutoVersion] == CleanActionPropertySet.TargetApplication.Word, "AutoVersion are meant for Word");
			Assert.IsTrue(properties[CleanOption.Versions] == CleanActionPropertySet.TargetApplication.Word, "Versions are meant for Word");
            Assert.IsTrue(properties[CleanOption.CustomProperties] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "CustomProperties are meant for Word, Excel and PowerPoint");
            Assert.IsTrue(properties[CleanOption.DocumentVariables] == CleanActionPropertySet.TargetApplication.Word, "DocumentVariables are meant for Word");
            Assert.IsTrue(properties[CleanOption.RoutingSlip] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel), "RoutingSlip are meant for Word and Excel");
            Assert.IsTrue(properties[CleanOption.Links] == CleanActionPropertySet.TargetApplication.Excel, "Links are meant for Excel");
            Assert.IsTrue(properties[CleanOption.BuiltInProperties] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "BuiltInProperties are meant for Word Excel PowerPoint");
            Assert.IsTrue(properties[CleanOption.Headers] == (CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Headers are meant for Excel PowerPoint");
            Assert.IsTrue(properties[CleanOption.Footers] == (CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Footers are meant for Excel PowerPoint");
            Assert.IsTrue(properties[CleanOption.SmartTags] == CleanActionPropertySet.TargetApplication.Word, "SmartTags are meant for Word");
            Assert.IsTrue(properties[CleanOption.Template] == CleanActionPropertySet.TargetApplication.Word, "Template are meant for Word");
            Assert.IsTrue(properties[CleanOption.Fields] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Fields are meant for Word Excel PowerPoint");
            Assert.IsTrue(properties[CleanOption.SpeakerNotes] == CleanActionPropertySet.TargetApplication.PowerPoint, "SpeakerNotes are meant for PowerPoint");
            Assert.IsTrue(properties[CleanOption.Authors] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Authors are meant for Word, Excel and PowerPoint");
            Assert.IsTrue(properties[CleanOption.Macros] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Macros are meant for Word, Excel and PowerPoint");
            Assert.IsTrue(properties[CleanOption.Reviewers] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Reviewers are meant for Word, Excel and PowerPoint");
            Assert.IsTrue(properties[CleanOption.DocumentStatistics] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "DocumentStatistics are meant for Word, Excel and PowerPoint");
            Assert.IsTrue(properties[CleanOption.Footnotes] == (CleanActionPropertySet.TargetApplication.Word), "Footnotes are meant for Word");

            //// New Exclusion properties
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeCustomProperties), "Failed to find ExcludeCustomProperties");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeDocumentVariables), "Failed to find ExcludeDocumentVariables");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodes), "Failed to find ExcludeFieldCodes");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesAuthorInformation), "Failed to find ExcludeFieldCodesAuthorInformation");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesDocumentAutomation), "Failed to find ExcludeFieldCodesDocumentAutomation");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesDocumentInformation), "Failed to find ExcludeFieldCodesDocumentInformation");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesEquationsFormulas), "Failed to find ExcludeFieldCodesEquationsFormulas");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesFormFields), "Failed to find ExcludeFieldCodesFormFields");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesHyperlinks), "Failed to find ExcludeFieldCodesHyperlinks");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesIncludeFields), "Failed to find ExcludeFieldCodesIncludeFields");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesIndexTables), "Failed to find ExcludeFieldCodesIndexTables");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesLinks), "Failed to find ExcludeFieldCodesLinks");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesNumbering), "Failed to find ExcludeFieldCodesNumbering");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesReferences), "Failed to find ExcludeFieldCodesReferences");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.DeleteFieldCodes), "Failed to find DeleteFieldCodes");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.HandleFootnotesHiddenData), "Failed to find HandleFootnotesHiddenData");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.EnableScriptRunning), "Failed to find EnableScriptRunning");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ScriptToRun), "Failed to find ScriptToRun");

			// Now test the copy constructor
			cleanProperties = new CleanActionPropertySet(cleanProperties);
			properties = cleanProperties.RatedRiskPropertyTargetSet;
			Assert.AreEqual(25, properties.Count, "There should be 25 Risk rated elements defined.");

            Assert.IsTrue(properties.ContainsKey(CleanOption.TrackChanges), "Risk rated properties should include TrackChanges");
			Assert.IsTrue(properties.ContainsKey(CleanOption.Comments), "Risk rated properties should include Comments");
			Assert.IsTrue(properties.ContainsKey(CleanOption.SmallText), "Risk rated properties should include SmallText");
			Assert.IsTrue(properties.ContainsKey(CleanOption.WhiteText), "Risk rated properties should include WhiteText");
			Assert.IsTrue(properties.ContainsKey(CleanOption.HiddenText), "Risk rated properties should include HiddenText");
			Assert.IsTrue(properties.ContainsKey(CleanOption.HiddenSlides), "Risk rated properties should include HiddenSlides");
			Assert.IsTrue(properties.ContainsKey(CleanOption.AutoVersion), "Risk rated properties should include AutoVersion");
			Assert.IsTrue(properties.ContainsKey(CleanOption.Versions), "Risk rated properties should include Versions");
            Assert.IsTrue(properties.ContainsKey(CleanOption.CustomProperties), "Risk rated properties should include CustomProperties");
            Assert.IsTrue(properties.ContainsKey(CleanOption.DocumentVariables), "Risk rated properties should include DocumentVariables");
            Assert.IsTrue(properties.ContainsKey(CleanOption.RoutingSlip), "Risk rated properties should include RoutingSlip");
            Assert.IsTrue(properties.ContainsKey(CleanOption.Links), "Risk rated properties should include Links");
            Assert.IsTrue(properties.ContainsKey(CleanOption.BuiltInProperties), "Risk rated properties should include BuiltInProperties");
            Assert.IsTrue(properties.ContainsKey(CleanOption.Headers), "Risk rated properties should include Headers");
            Assert.IsTrue(properties.ContainsKey(CleanOption.Footers), "Risk rated properties should include Footers");
            Assert.IsTrue(properties.ContainsKey(CleanOption.SmartTags), "Risk rated properties should include SmartTags");
            Assert.IsTrue(properties.ContainsKey(CleanOption.Template), "Risk rated properties should include Template");
            Assert.IsTrue(properties.ContainsKey(CleanOption.Fields), "Risk rated properties should include Fields");
            Assert.IsTrue(properties.ContainsKey(CleanOption.SpeakerNotes), "Risk rated properties should include SpeakerNotes");
            Assert.IsTrue(properties.ContainsKey(CleanOption.Authors), "Risk rated properties should include Authors");
            Assert.IsTrue(properties.ContainsKey(CleanOption.Macros), "Risk rated properties should include Macros");
            Assert.IsTrue(properties.ContainsKey(CleanOption.Reviewers), "Risk rated properties should include Reviewers");
            Assert.IsTrue(properties.ContainsKey(CleanOption.DocumentStatistics), "Risk rated properties should include DocumentStatistics");
            Assert.IsTrue(properties.ContainsKey(CleanOption.Footnotes), "Risk rated properties should include Footnotes");
            Assert.IsTrue(properties.ContainsKey(CleanOption.InkAnnotations), "Risk rated properties should include InkAnnotations");

			Assert.IsTrue(properties[CleanOption.TrackChanges] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel), "TrackChanges are meant for Word and Excel");
			Assert.IsTrue(properties[CleanOption.Comments] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Comments are meant for Word, Excel and PowerPoint");
			Assert.IsTrue(properties[CleanOption.SmallText] == CleanActionPropertySet.TargetApplication.Word, "SmallText are meant for Word");
			Assert.IsTrue(properties[CleanOption.WhiteText] == CleanActionPropertySet.TargetApplication.Word, "WhiteText are meant for Word");
			Assert.IsTrue(properties[CleanOption.HiddenText] == CleanActionPropertySet.TargetApplication.Word, "HiddenText are meant for Word");
			Assert.IsTrue(properties[CleanOption.HiddenSlides] == CleanActionPropertySet.TargetApplication.PowerPoint, "HiddenSlides are meant for PowerPoint");
			Assert.IsTrue(properties[CleanOption.AutoVersion] == CleanActionPropertySet.TargetApplication.Word, "AutoVersion are meant for Word");
			Assert.IsTrue(properties[CleanOption.Versions] == CleanActionPropertySet.TargetApplication.Word, "Versions are meant for Word");
            Assert.IsTrue(properties[CleanOption.CustomProperties] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "CustomProperties are meant for Word, Excel and PowerPoint");
            Assert.IsTrue(properties[CleanOption.DocumentVariables] == CleanActionPropertySet.TargetApplication.Word, "DocumentVariables are meant for Word");
            Assert.IsTrue(properties[CleanOption.RoutingSlip] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel), "RoutingSlip are meant for Word and Excel");
            Assert.IsTrue(properties[CleanOption.Links] == CleanActionPropertySet.TargetApplication.Excel, "Links are meant for Excel");
            Assert.IsTrue(properties[CleanOption.BuiltInProperties] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "BuiltInProperties are meant for Word Excel PowerPoint");
            Assert.IsTrue(properties[CleanOption.Headers] == (CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Headers are meant for Excel PowerPoint");
            Assert.IsTrue(properties[CleanOption.Footers] == (CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Footers are meant for Excel PowerPoint");
            Assert.IsTrue(properties[CleanOption.SmartTags] == CleanActionPropertySet.TargetApplication.Word, "SmartTags are meant for Word");
            Assert.IsTrue(properties[CleanOption.Template] == CleanActionPropertySet.TargetApplication.Word, "Template are meant for Word");
            Assert.IsTrue(properties[CleanOption.Fields] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Fields are meant for Word Excel PowerPoint");
            Assert.IsTrue(properties[CleanOption.SpeakerNotes] == CleanActionPropertySet.TargetApplication.PowerPoint, "SpeakerNotes are meant for PowerPoint");
            Assert.IsTrue(properties[CleanOption.Authors] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Authors are meant for Word, Excel and PowerPoint");
            Assert.IsTrue(properties[CleanOption.Macros] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Macros are meant for Word, Excel and PowerPoint");
            Assert.IsTrue(properties[CleanOption.Reviewers] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Reviewers are meant for Word, Excel and PowerPoint");
            Assert.IsTrue(properties[CleanOption.DocumentStatistics] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "DocumentStatistics are meant for Word, Excel and PowerPoint");
            Assert.IsTrue(properties[CleanOption.Footnotes] == (CleanActionPropertySet.TargetApplication.Word), "Footnotes are meant for Word");

            //// New Exclusion properties
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeCustomProperties), "Failed to find ExcludeCustomProperties");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeDocumentVariables), "Failed to find ExcludeDocumentVariables");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodes), "Failed to find ExcludeFieldCodes");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesAuthorInformation), "Failed to find ExcludeFieldCodesAuthorInformation");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesDocumentAutomation), "Failed to find ExcludeFieldCodesDocumentAutomation");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesDocumentInformation), "Failed to find ExcludeFieldCodesDocumentInformation");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesEquationsFormulas), "Failed to find ExcludeFieldCodesEquationsFormulas");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesFormFields), "Failed to find ExcludeFieldCodesFormFields");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesHyperlinks), "Failed to find ExcludeFieldCodesHyperlinks");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesIncludeFields), "Failed to find ExcludeFieldCodesIncludeFields");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesIndexTables), "Failed to find ExcludeFieldCodesIndexTables");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesLinks), "Failed to find ExcludeFieldCodesLinks");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesNumbering), "Failed to find ExcludeFieldCodesNumbering");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ExcludeFieldCodesReferences), "Failed to find ExcludeFieldCodesReferences");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.DeleteFieldCodes), "Failed to find DeleteFieldCodes");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.HandleFootnotesHiddenData), "Failed to find HandleFootnotesHiddenData");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.EnableScriptRunning), "Failed to find EnableScriptRunning");
            //Assert.IsTrue(cleanProperties.ContainsKey(CleanOption.ScriptToRun), "Failed to find ScriptToRun");
		}
		public void TestRemoveMacros()
		{
			using (TempFileForActions inputFile = new TempFileForActions(CopyFile(Workshare.TestUtils.TestFileUtils.MakeRootPathAbsolute(@"\Projects\Hygiene\src\TestDocuments\TestSimpleDocument.doc"))))
			{
				CleanActionPropertySet cleanActionProperties = new CleanActionPropertySet();
				LightSpeedWordCleaningStrategy strategy = new LightSpeedWordCleaningStrategy();
				strategy.RemoveMacros(inputFile, cleanActionProperties);
			}
		}
		public void Test_10_AcceptsOnlyOfficeFileTypes()
		{
			CleanActionPropertySet properties = new CleanActionPropertySet();
			CleanUserControl ctrl = new CleanUserControl();
			CleanUIController controller = new CleanUIController(ctrl, properties, ".txt");
		}