Example #1
0
        public void Accessor_Public_Type_Field()
        {
            var typeAcc = new TypeAccessor(typeof(AccessorTestObject));

            var origValue = (int)typeAcc.GetStaticField("_staticPublicField");

            typeAcc.SetStaticField("_staticPublicField", origValue + 1);
            var actualValue = (int)typeAcc.GetStaticField("_staticPublicField");

            Assert.AreEqual(origValue + 1, actualValue);

            typeAcc.SetStaticFieldOrProperty("_staticPublicField", origValue - 1);
            actualValue = (int)typeAcc.GetStaticFieldOrProperty("_staticPublicField");
            Assert.AreEqual(origValue - 1, actualValue);
        }
Example #2
0
        public void ContentNaming_FromDisplayName()
        {
            var providers = new[] {
                (ContentNamingProvider) new CharReplacementContentNamingProvider(),
                (ContentNamingProvider) new Underscore5FContentNamingProvider()
            };

            var contentNamingProviderAcc = new TypeAccessor(typeof(ContentNamingProvider));
            var originalProvider         = contentNamingProviderAcc.GetStaticField("__instance");

            try
            {
                foreach (var provider in providers)
                {
                    contentNamingProviderAcc.SetStaticField("__instance", provider);
                    var providerName = provider.GetType().Name;

                    Assert.AreEqual("árvíztűrőtükörfúrógép", ContentNamingProvider.GetNameFromDisplayName("árvíztűrőtükörfúrógép"));
                    Assert.AreEqual("ÁRVÍZTŰRŐTÜKÖRFÚRÓGÉP", ContentNamingProvider.GetNameFromDisplayName("ÁRVÍZTŰRŐTÜKÖRFÚRÓGÉP"));
                    Assert.AreEqual("ÁrvíztűrőTükörfúrógép", ContentNamingProvider.GetNameFromDisplayName("ÁrvíztűrőTükörfúrógép"));
                    Assert.AreEqual("árvíztűrőtükörfúrógép.txt", ContentNamingProvider.GetNameFromDisplayName("árvíztűrőtükörfúrógép.txt"));
                    Assert.AreEqual("árvíztűrőtükörfúrógép.doc.txt", ContentNamingProvider.GetNameFromDisplayName("árvíztűrőtükörfúrógép.txt", "árvíztűrőtükörfúrógép.doc"));
                    Assert.AreEqual("árvíztűrőtükörfúrógép.doc.txt", ContentNamingProvider.GetNameFromDisplayName(".txt", "árvíztűrőtükörfúrógép.doc"));

                    var name = ContentNamingProvider.GetNameFromDisplayName("!*_~@#$%a^&()b{}+\"'|:<>?c/.,");
                    if (providerName == typeof(CharReplacementContentNamingProvider).Name)
                    {
                        Assert.AreEqual("!-_-a-()b-c", name);
                    }
                    else if (providerName == typeof(Underscore5FContentNamingProvider).Name)
                    {
                        Assert.AreEqual("!_2a_5f_7e_40_23_24_25a_5e_26()b_7b_7d_2b_22_27_7c_3a_3c_3e_3fc_2f._2c", name);
                    }
                    else
                    {
                        Assert.Inconclusive("Unknown ContentNamingProvider: " + providerName);
                    }
                }
            }
            finally
            {
                contentNamingProviderAcc.SetStaticField("__instance", originalProvider);
            }
        }
Example #3
0
        public void Packaging_DependencyCheck_LoggingDependencies()
        {
            PackagingTest(() =>
            {
                var logger    = new StringBuilder();
                var loggers   = new[] { new PackagingTestLogger(logger) };
                var loggerAcc = new TypeAccessor(typeof(SenseNet.Packaging.Logger));
                loggerAcc.SetStaticField("_loggers", loggers);

                using (new Swindler <IPackagingLogger[]>(loggers,
                                                         () => (IPackagingLogger[])loggerAcc.GetStaticField("_loggers"),
                                                         value => loggerAcc.SetStaticField("_loggers", loggers)))
                {
                    for (var i = 0; i < 9; i++)
                    {
                        ExecutePhases($@"<?xml version='1.0' encoding='utf-8'?>
                            <Package type='Install'>
                                <Id>Component{i + 1}</Id>
                                <ReleaseDate>2017-01-01</ReleaseDate>
                                <Version>{i + 1}.0</Version>
                            </Package>");
                    }
                    logger.Clear();

                    // action
                    ExecutePhases(@"<?xml version='1.0' encoding='utf-8'?>
                            <Package type='Install'>
                                <Id>MyCompany.MyComponent</Id>
                                <ReleaseDate>2017-01-02</ReleaseDate>
                                <Version>1.2</Version>
                                <Dependencies>
                                    <Dependency id='Component1' version=            '1.0' />
                                    <Dependency id='Component2' minVersion=         '1.0' />
                                    <Dependency id='Component3' maxVersion=         '9.0' />
                                    <Dependency id='Component4' minVersionExclusive='1.0' />
                                    <Dependency id='Component5' maxVersionExclusive='9.0' />
                                    <Dependency id='Component6' minVersion=         '1.0' maxVersion=         '10.0' />
                                    <Dependency id='Component7' minVersion=         '1.0' maxVersionExclusive='10.0' />
                                    <Dependency id='Component8' minVersionExclusive='1.0' maxVersion=         '10.0' />
                                    <Dependency id='Component9' minVersionExclusive='1.0' maxVersionExclusive='10.0' />
                                </Dependencies>
                            </Package>");

                    // check
                    var log           = logger.ToString();
                    var relevantLines = new List <string>();
                    using (var reader = new StringReader(log))
                    {
                        string line;
                        while ((line = reader.ReadLine()) != null)
                        {
                            line = line.Trim();
                            if (line.StartsWith("Component") && !line.StartsWith("ComponentId"))
                            {
                                relevantLines.Add(line);
                            }
                        }
                    }

                    Assert.AreEqual("Component1: 1.0 = 1.0 (current)", relevantLines[0]);
                    Assert.AreEqual("Component2: 1.0 <= 2.0 (current)", relevantLines[1]);
                    Assert.AreEqual("Component3: 3.0 (current) <= 9.0", relevantLines[2]);
                    Assert.AreEqual("Component4: 1.0 < 4.0 (current)", relevantLines[3]);
                    Assert.AreEqual("Component5: 5.0 (current) <= 9.0", relevantLines[4]);
                    Assert.AreEqual("Component6: 1.0 <= 6.0 (current) <= 10.0", relevantLines[5]);
                    Assert.AreEqual("Component7: 1.0 <= 7.0 (current) <= 10.0", relevantLines[6]);
                    Assert.AreEqual("Component8: 1.0 < 8.0 (current) < 10.0", relevantLines[7]);
                    Assert.AreEqual("Component9: 1.0 < 9.0 (current) < 10.0", relevantLines[8]);
                }
            });
        }