Class for utilities used to determine/search/build keys for layout configurations. Used by Inventory, LayoutCache, LayoutMerger and XmlDocConfigureDlg
        public void GetSuffixedPartOfNamedViewOrDuplicateNodeWorks()
        {
            string[] keyAttributes = { null, null, "name", null };
            string[] keyValues     = { null, null, "test#1", null };
            string[] stdKeyValues;
            // SUT
            var suffix = LayoutKeyUtils.GetSuffixedPartOfNamedViewOrDuplicateNode(keyAttributes, keyValues, out stdKeyValues);

            Assert.That(suffix, Is.StringMatching("#1"));
            Assert.That(stdKeyValues[2], Is.StringMatching("test"));
            keyValues[2] = "test%01";
            suffix       = LayoutKeyUtils.GetSuffixedPartOfNamedViewOrDuplicateNode(keyAttributes, keyValues, out stdKeyValues);
            Assert.That(suffix, Is.StringMatching("%01"));
            Assert.That(stdKeyValues[2], Is.StringMatching("test"));
            keyValues[2] = "test_1";
            suffix       = LayoutKeyUtils.GetSuffixedPartOfNamedViewOrDuplicateNode(keyAttributes, keyValues, out stdKeyValues);
            Assert.That(suffix, Is.StringMatching("_1"));
            Assert.That(stdKeyValues[2], Is.StringMatching("test"));
            keyValues[2] = "test_AsPara#Stem01";
            suffix       = LayoutKeyUtils.GetSuffixedPartOfNamedViewOrDuplicateNode(keyAttributes, keyValues, out stdKeyValues);
            Assert.That(suffix, Is.StringMatching("#Stem01"));
            Assert.That(stdKeyValues[2], Is.StringMatching("test_AsPara"));
            keyValues[2] = "test-en";
            suffix       = LayoutKeyUtils.GetSuffixedPartOfNamedViewOrDuplicateNode(keyAttributes, keyValues, out stdKeyValues);
            Assert.That(suffix, Is.StringMatching("en"));
            Assert.That(stdKeyValues[2], Is.StringMatching("test"));
        }
        public void GetPossibleParamSuffixWorks()
        {
            var node = new XmlDocument();

            node.LoadXml("<part ref=\"RootSubEntryTypeConfig\" param=\"publishRootSubEntryType_1\" hideConfig=\"true\" dup=\"1\" />");
            var suffix = LayoutKeyUtils.GetPossibleParamSuffix(node.DocumentElement);

            Assert.That(suffix, Is.StringMatching("_1"));

            node = new XmlDocument();
            node.LoadXml("<part ref=\"RootSubEntryTypeConfig\" param=\"publishRootSubEntryType_%01_1\" hideConfig=\"true\" dup=\"1\" />");
            suffix = LayoutKeyUtils.GetPossibleParamSuffix(node.DocumentElement);
            Assert.That(suffix, Is.StringMatching("%01_1"));
        }