public void TestGetFCSContentTypeDict()
        {
            CleanPropertiesDisplayTranslator strings = CleanPropertiesDisplayTranslator.Instance;
            BinaryCleanActionPropertySet cleanProperties = new BinaryCleanActionPropertySet();

            Dictionary<ContentType, string> fcsContentTypeDict = cleanProperties.GetFCSContentTypeDict();
            Assert.AreEqual(fcsContentTypeDict.Count, 25, "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");
        }
        public void TestGetHighRiskElementsAndTheirApplications()
        {
            CleanPropertiesDisplayTranslator strings = CleanPropertiesDisplayTranslator.Instance;
            BinaryCleanActionPropertySet cleanProperties = new BinaryCleanActionPropertySet();

            SortedList<string, CleanActionPropertySet.TargetApplication> properties = cleanProperties.RatedRiskPropertyTargetSet;
            Assert.AreEqual(16, properties.Count, "There should be 19 risk rated elements defined.");

            Assert.IsTrue(properties.ContainsKey(strings.TrackChanges), "Risk rated properties should include TrackChanges");
            Assert.IsTrue(properties.ContainsKey(strings.Comments), "Risk rated properties should include Comments");
            Assert.IsTrue(properties.ContainsKey(strings.SmallText), "Risk rated properties should include SmallText");
            Assert.IsTrue(properties.ContainsKey(strings.WhiteText), "Risk rated properties should include WhiteText");
            Assert.IsTrue(properties.ContainsKey(strings.HiddenText), "Risk rated properties should include HiddenText");
            Assert.IsTrue(properties.ContainsKey(strings.HiddenSlides), "Risk rated properties should include HiddenSlides");
            Assert.IsTrue(properties.ContainsKey(strings.AutoVersion), "Risk rated properties should include AutoVersion");
            Assert.IsTrue(properties.ContainsKey(strings.Versions), "Risk rated properties should include Versions");
            Assert.IsTrue(properties.ContainsKey(strings.DocumentVariables), "Risk rated properties should include DocumentVariables");
            Assert.IsTrue(properties.ContainsKey(strings.RoutingSlip), "Risk rated properties should include RoutingSlip");
            Assert.IsTrue(properties.ContainsKey(strings.Links), "Risk rated properties should include Links");
            Assert.IsTrue(properties.ContainsKey(strings.Headers), "Risk rated properties should include Headers");
            Assert.IsTrue(properties.ContainsKey(strings.Footers), "Risk rated properties should include Footers");
            Assert.IsTrue(properties.ContainsKey(strings.SmartTags), "Risk rated properties should include SmartTags");
            Assert.IsTrue(properties.ContainsKey(strings.Fields), "Risk rated properties should include Fields");
            Assert.IsTrue(properties.ContainsKey(strings.SpeakerNotes), "Risk rated properties should include SpeakerNotes");
            //following items not currently supported by Binary Clean
            Assert.IsFalse(properties.ContainsKey(strings.BuiltInProperties), "Risk rated properties shouldn't include BuiltInProperties");
            Assert.IsFalse(properties.ContainsKey(strings.CustomProperties), "Risk rated properties shouldn't include CustomProperties");
            Assert.IsFalse(properties.ContainsKey(strings.Template), "Risk rated properties shouldn't include Template");
            
            Assert.IsTrue(properties[strings.TrackChanges] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel), "TrackChanges are meant for Word and Excel");
            Assert.IsTrue(properties[strings.Comments] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Comments are meant for Word, Excel and PowerPoint");
            Assert.IsTrue(properties[strings.SmallText] == CleanActionPropertySet.TargetApplication.Word, "SmallText are meant for Word");
            Assert.IsTrue(properties[strings.WhiteText] == CleanActionPropertySet.TargetApplication.Word, "WhiteText are meant for Word");
            Assert.IsTrue(properties[strings.HiddenText] == CleanActionPropertySet.TargetApplication.Word, "HiddenText are meant for Word");
            Assert.IsTrue(properties[strings.HiddenSlides] == CleanActionPropertySet.TargetApplication.PowerPoint, "HiddenSlides are meant for PowerPoint");
            Assert.IsTrue(properties[strings.AutoVersion] == CleanActionPropertySet.TargetApplication.Word, "AutoVersion are meant for Word");
            Assert.IsTrue(properties[strings.Versions] == CleanActionPropertySet.TargetApplication.Word, "Versions are meant for Word");
            Assert.IsTrue(properties[strings.DocumentVariables] == CleanActionPropertySet.TargetApplication.Word, "DocumentVariables are meant for Word");
            Assert.IsTrue(properties[strings.RoutingSlip] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel), "RoutingSlip are meant for Word and Excel");
            Assert.IsTrue(properties[strings.Links] == CleanActionPropertySet.TargetApplication.Excel, "Links are meant for Excel");
            Assert.IsTrue(properties[strings.Headers] == (CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Headers are meant for Excel PowerPoint");
            Assert.IsTrue(properties[strings.Footers] == (CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Footers are meant for Excel PowerPoint");
            Assert.IsTrue(properties[strings.SmartTags] == CleanActionPropertySet.TargetApplication.Word, "SmartTags are meant for Word");
            Assert.IsTrue(properties[strings.Fields] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Fields are meant for Word Excel PowerPoint");
            Assert.IsTrue(properties[strings.SpeakerNotes] == CleanActionPropertySet.TargetApplication.PowerPoint, "SpeakerNotes are meant for PowerPoint");
            //following items not currently supported by Binary Clean
            // Assert.IsTrue(properties[strings.CustomProperties] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "CustomProperties are meant for Word, Excel and PowerPoint");
            // Assert.IsTrue(properties[strings.BuiltInProperties] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "BuiltInProperties are meant for Word Excel PowerPoint");
            //Assert.IsTrue(properties[strings.Template] == CleanActionPropertySet.TargetApplication.Word, "Template are meant for Word");

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

            Assert.IsTrue(properties.ContainsKey(strings.TrackChanges), "Risk rated properties should include TrackChanges");
            Assert.IsTrue(properties.ContainsKey(strings.Comments), "Risk rated properties should include Comments");
            Assert.IsTrue(properties.ContainsKey(strings.SmallText), "Risk rated properties should include SmallText");
            Assert.IsTrue(properties.ContainsKey(strings.WhiteText), "Risk rated properties should include WhiteText");
            Assert.IsTrue(properties.ContainsKey(strings.HiddenText), "Risk rated properties should include HiddenText");
            Assert.IsTrue(properties.ContainsKey(strings.HiddenSlides), "Risk rated properties should include HiddenSlides");
            Assert.IsTrue(properties.ContainsKey(strings.AutoVersion), "Risk rated properties should include AutoVersion");
            Assert.IsTrue(properties.ContainsKey(strings.Versions), "Risk rated properties should include Versions");
            Assert.IsTrue(properties.ContainsKey(strings.DocumentVariables), "Risk rated properties should include DocumentVariables");
            Assert.IsTrue(properties.ContainsKey(strings.RoutingSlip), "Risk rated properties should include RoutingSlip");
            Assert.IsTrue(properties.ContainsKey(strings.Links), "Risk rated properties should include Links");
            Assert.IsTrue(properties.ContainsKey(strings.Headers), "Risk rated properties should include Headers");
            Assert.IsTrue(properties.ContainsKey(strings.Footers), "Risk rated properties should include Footers");
            Assert.IsTrue(properties.ContainsKey(strings.SmartTags), "Risk rated properties should include SmartTags");
            Assert.IsTrue(properties.ContainsKey(strings.Fields), "Risk rated properties should include Fields");
            Assert.IsTrue(properties.ContainsKey(strings.SpeakerNotes), "Risk rated properties should include SpeakerNotes");
            //following items not currently supported by Binary Clean
            Assert.IsFalse(properties.ContainsKey(strings.BuiltInProperties), "Risk rated properties shouldn't include BuiltInProperties");
            Assert.IsFalse(properties.ContainsKey(strings.CustomProperties), "Risk rated properties shouldn't include CustomProperties");
            Assert.IsFalse(properties.ContainsKey(strings.Template), "Risk rated properties shouldn't include Template");
            
            Assert.IsTrue(properties[strings.TrackChanges] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel), "TrackChanges are meant for Word and Excel");
            Assert.IsTrue(properties[strings.Comments] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Comments are meant for Word, Excel and PowerPoint");
            Assert.IsTrue(properties[strings.SmallText] == CleanActionPropertySet.TargetApplication.Word, "SmallText are meant for Word");
            Assert.IsTrue(properties[strings.WhiteText] == CleanActionPropertySet.TargetApplication.Word, "WhiteText are meant for Word");
            Assert.IsTrue(properties[strings.HiddenText] == CleanActionPropertySet.TargetApplication.Word, "HiddenText are meant for Word");
            Assert.IsTrue(properties[strings.HiddenSlides] == CleanActionPropertySet.TargetApplication.PowerPoint, "HiddenSlides are meant for PowerPoint");
            Assert.IsTrue(properties[strings.AutoVersion] == CleanActionPropertySet.TargetApplication.Word, "AutoVersion are meant for Word");
            Assert.IsTrue(properties[strings.Versions] == CleanActionPropertySet.TargetApplication.Word, "Versions are meant for Word");
            Assert.IsTrue(properties[strings.DocumentVariables] == CleanActionPropertySet.TargetApplication.Word, "DocumentVariables are meant for Word");
            Assert.IsTrue(properties[strings.RoutingSlip] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel), "RoutingSlip are meant for Word and Excel");
            Assert.IsTrue(properties[strings.Links] == CleanActionPropertySet.TargetApplication.Excel, "Links are meant for Excel");
            Assert.IsTrue(properties[strings.Headers] == (CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Headers are meant for Excel PowerPoint");
            Assert.IsTrue(properties[strings.Footers] == (CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Footers are meant for Excel PowerPoint");
            Assert.IsTrue(properties[strings.SmartTags] == CleanActionPropertySet.TargetApplication.Word, "SmartTags are meant for Word");
            Assert.IsTrue(properties[strings.Fields] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "Fields are meant for Word Excel PowerPoint");
            Assert.IsTrue(properties[strings.SpeakerNotes] == CleanActionPropertySet.TargetApplication.PowerPoint, "SpeakerNotes are meant for PowerPoint");
            //following items not currently supported by Binary Clean
            // Assert.IsTrue(properties[strings.CustomProperties] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "CustomProperties are meant for Word, Excel and PowerPoint");
            // Assert.IsTrue(properties[strings.BuiltInProperties] == (CleanActionPropertySet.TargetApplication.Word | CleanActionPropertySet.TargetApplication.Excel | CleanActionPropertySet.TargetApplication.PowerPoint), "BuiltInProperties are meant for Word Excel PowerPoint");
            //Assert.IsTrue(properties[strings.Template] == CleanActionPropertySet.TargetApplication.Word, "Template are meant for Word");
        }
        public void TestInitialisation()
        {
            CleanPropertiesDisplayTranslator strings = CleanPropertiesDisplayTranslator.Instance;

            BinaryCleanActionPropertySet cleanProperties = new BinaryCleanActionPropertySet();
            Assert.AreEqual(25, cleanProperties.Count, "Found an incorrect amount of properties.");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.AllowOverride), "Failed to find AllowOverride property");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.FootNotes), "Failed to find FootNotes");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Headers), "Failed to find Headers");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Footers), "Failed to find Footers");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.SmartTags), "Failed to find SmartTags");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.DocumentVariables), "Failed to find DocumentVariables");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Fields), "Failed to find Fields");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Macros), "Failed to find Macros");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.RoutingSlip), "Failed to find RoutingSlip");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.SpeakerNotes), "Failed to find SpeakerNotes");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Links), "Failed to find Links");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Reviewers), "Failed to find Reviewers");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.TrackChanges), "Failed to find TrackChanges");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Comments), "Failed to find Comments");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.SmallText), "Failed to find SmallText");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.WhiteText), "Failed to find WhiteText");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.HiddenText), "Failed to find HiddenText");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Authors), "Failed to find Authors");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.HiddenSlides), "Failed to find HiddenSlides");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.AutoVersion), "Failed to find AutoVersion");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Versions), "Failed to find Versions");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Execute), "Failed to find CleanHiddenData");
            Assert.IsTrue(cleanProperties.ContainsKey(ActionPropertyController.APPLY_TO_ALL), "Failed to find Apply to All");
            //following items not currently supported by Binary Clean
            Assert.IsFalse(cleanProperties.ContainsKey(strings.DocumentStatistics), "Shouldn't find DocumentStatistics");
            Assert.IsFalse(cleanProperties.ContainsKey(strings.BuiltInProperties), "Shouldn't find BuiltInProperties");
            Assert.IsFalse(cleanProperties.ContainsKey(strings.Template), "Shouldn't find Template");
            Assert.IsFalse(cleanProperties.ContainsKey(strings.CustomProperties), "Shouldn't find CustomProperties");

            // copy constructor
            cleanProperties = new BinaryCleanActionPropertySet(cleanProperties);
            Assert.AreEqual(25, cleanProperties.Count, "There should be exactly 24 properties here.");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.AllowOverride), "Failed to find AllowOverride property");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.FootNotes), "Failed to find FootNotes");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Headers), "Failed to find Headers");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Footers), "Failed to find Footers");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.SmartTags), "Failed to find SmartTags");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.DocumentVariables), "Failed to find DocumentVariables");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Fields), "Failed to find Fields");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Macros), "Failed to find Macros");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.RoutingSlip), "Failed to find RoutingSlip");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.SpeakerNotes), "Failed to find SpeakerNotes");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Links), "Failed to find Links");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Reviewers), "Failed to find Reviewers");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.TrackChanges), "Failed to find TrackChanges");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Comments), "Failed to find Comments");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.SmallText), "Failed to find SmallText");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.WhiteText), "Failed to find WhiteText");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.HiddenText), "Failed to find HiddenText");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Authors), "Failed to find Authors");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.HiddenSlides), "Failed to find HiddenSlides");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.AutoVersion), "Failed to find AutoVersion");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Versions), "Failed to find Versions");
            Assert.IsTrue(cleanProperties.ContainsKey(strings.Execute), "Failed to find CleanHiddenData");
            Assert.IsTrue(cleanProperties.ContainsKey(ActionPropertyController.APPLY_TO_ALL), "Failed to find Apply to All");
            //following items not currently supported by Binary Clean
            Assert.IsFalse(cleanProperties.ContainsKey(strings.DocumentStatistics), "Shouldn't find DocumentStatistics");
            Assert.IsFalse(cleanProperties.ContainsKey(strings.BuiltInProperties), "Shouldn't find BuiltInProperties");
            Assert.IsFalse(cleanProperties.ContainsKey(strings.Template), "Shouldn't find Template");
            Assert.IsFalse(cleanProperties.ContainsKey(strings.CustomProperties), "Shouldn't find CustomProperties");
        }