Example #1
0
        public void ExplicitCloseWins()
        {
            IDefaultActivityLogger l = DefaultActivityLogger.Create();

            // Binds the TestHelper.Logger logger to this one.
            l.Output.RegisterMuxClient(TestHelper.Logger.Output.ExternalInput);

            var log = new StringImpl();

            l.Register(log);

            // No explicit close conclusion: Success!
            using (l.OpenGroup(LogLevel.Trace, () => "Success!", "First"))
            {
                l.Error("Pouf");
            }
            Assert.That(log.Writer.ToString(), Is.StringContaining("Pouf"));
            Assert.That(log.Writer.ToString(), Is.Not.StringContaining("Failed!"), "Default conclusion wins.");
            Assert.That(log.Writer.ToString(), Is.StringContaining("Success!"), "Default conclusion.");

            log.Writer.GetStringBuilder().Clear();
            Assert.That(log.Writer.ToString(), Is.Empty);

            // Explicit conclusion: Failed!
            using (l.OpenGroup(LogLevel.Trace, () => "Success!", "First"))
            {
                l.Error("Pouf");
                l.CloseGroup("Failed!");
            }
            Console.WriteLine(log.Writer.ToString());

            Assert.That(log.Writer.ToString(), Is.StringContaining("Pouf"));
            Assert.That(log.Writer.ToString(), Is.StringContaining("Failed!"), "Explicit conclusion wins.");
            Assert.That(log.Writer.ToString(), Is.Not.StringContaining("Success!"), "Explicit conclusion wins.");
        }
        public void TestStartsWith()
        {
            const string stringValue = "SomeRandomStringIsHere";

            Assert.AreEqual(stringValue.StartsWith("Some", StringComparison.Ordinal),  // overload #1
                            StringImpl.StartsWith(stringValue, "Some", StringComparison.Ordinal));

            Assert.AreEqual(stringValue.StartsWith("", StringComparison.Ordinal),
                            StringImpl.StartsWith(stringValue, "", StringComparison.Ordinal));

            Assert.AreEqual(stringValue.StartsWith("some", StringComparison.Ordinal),
                            StringImpl.StartsWith(stringValue, "some", StringComparison.Ordinal));

            Assert.AreEqual(stringValue.StartsWith("Some"), // overload #2
                            StringImpl.StartsWith(stringValue, "Some"));

            Assert.AreEqual(stringValue.StartsWith(""),
                            StringImpl.StartsWith(stringValue, ""));

            Assert.AreEqual(stringValue.StartsWith("some"),
                            StringImpl.StartsWith(stringValue, "some"));

            Assert.AreEqual(stringValue.StartsWith("Some", false, null), //overload #3
                            StringImpl.StartsWith(stringValue, "Some", false, null));

            Assert.AreEqual(stringValue.StartsWith("", false, null),
                            StringImpl.StartsWith(stringValue, "", false, null));

            Assert.AreEqual(stringValue.StartsWith("some", false, null),
                            StringImpl.StartsWith(stringValue, "some", false, null));
        }
Example #3
0
        public void MultipleClose()
        {
            IDefaultActivityLogger logger = DefaultActivityLogger.Create();

            // Binds the TestHelper.Logger logger to this one.
            logger.Output.RegisterMuxClient(TestHelper.Logger.Output.ExternalInput);

            var log1 = new StringImpl();

            logger.Register(log1);

            Assert.That(logger.RegisteredSinks.Count, Is.EqualTo(1));

            using (logger.OpenGroup(LogLevel.Trace, () => "End First", "First"))
            {
                logger.CloseGroup("Pouf");
                using (logger.OpenGroup(LogLevel.Warn, "A group at level 0!"))
                {
                    logger.CloseGroup("Close it.");
                    logger.CloseGroup("Close it again.");
                }
            }

            Assert.That(log1.Writer.ToString(), Is.Not.StringContaining("End First"), "Close forgets other closes...");
            Assert.That(log1.Writer.ToString(), Is.Not.StringContaining("Close it again"), "Close forgets other closes...");
        }
        public void TestStringSubstring2()
        {
            var s1 = "Abcd";
            var s2 = s1.Substring(2, 2);
            var s3 = StringImpl.Substring(s1, 2, 2);

            Assert.AreEqual(s2, s3);
        }
Example #5
0
        public void FilterLevel()
        {
            IDefaultActivityLogger l = DefaultActivityLogger.Create();

            // Binds the TestHelper.Logger logger to this one.
            l.Output.RegisterMuxClient(TestHelper.Logger.Output.ExternalInput);

            var log = new StringImpl();

            l.Register(log);
            using (l.Filter(LogLevelFilter.Error))
            {
                l.Trace("NO SHOW");
                l.Info("NO SHOW");
                l.Warn("NO SHOW");
                l.Error("Error n°1");
                using (l.Filter(LogLevelFilter.Warn))
                {
                    l.Trace("NO SHOW");
                    l.Info("NO SHOW");
                    l.Warn("Warn n°1");
                    l.Error("Error n°2");
                    using (l.OpenGroup(LogLevel.Info, "GroupInfo"))
                    {
                        Assert.That(l.Filter, Is.EqualTo(LogLevelFilter.Warn), "Groups does not change the current filter level.");
                        l.Trace("NO SHOW");
                        l.Info("NO SHOW");
                        l.Warn("Warn n°2");
                        l.Error("Error n°3");
                        // Changing the level inside a Group.
                        l.Filter = LogLevelFilter.Fatal;
                        l.Error("NO SHOW");
                        l.Fatal("Fatal n°1");
                    }
                    Assert.That(l.Filter, Is.EqualTo(LogLevelFilter.Warn), "But Groups restores the original filter level when closed.");
                    l.Trace("NO SHOW");
                    l.Info("NO SHOW");
                    l.Warn("Warn n°3");
                    l.Error("Error n°4");
                    l.Fatal("Fatal n°2");
                }
                l.Trace("NO SHOW");
                l.Info("NO SHOW");
                l.Warn("NO SHOW");
                l.Error("Error n°5");
            }
            Assert.That(log.Writer.ToString(), Is.Not.StringContaining("NO SHOW"));
            Assert.That(log.Writer.ToString(), Is.StringContaining("Error n°1")
                        .And.StringContaining("Error n°2")
                        .And.StringContaining("Error n°3")
                        .And.StringContaining("Error n°4")
                        .And.StringContaining("Error n°5"));
            Assert.That(log.Writer.ToString(), Is.StringContaining("Warn n°1")
                        .And.StringContaining("Warn n°2")
                        .And.StringContaining("Warn n°3"));
            Assert.That(log.Writer.ToString(), Is.StringContaining("Fatal n°1")
                        .And.StringContaining("Fatal n°2"));
        }
        public void TestIndexOf()
        {
            const string stringValue = "Some longer string, and some other data.";

            Assert.AreEqual(stringValue.IndexOf("om", 4, 3, StringComparison.Ordinal), // overload #1
                            StringImpl.IndexOf(stringValue, "om", 4, 3, StringComparison.Ordinal));

            Assert.AreEqual(stringValue.IndexOf("om", 0, stringValue.Length, StringComparison.Ordinal),
                            StringImpl.IndexOf(stringValue, "om", 0, stringValue.Length, StringComparison.Ordinal));

            Assert.AreEqual(stringValue.IndexOf("om", 3, stringValue.Length - 3, StringComparison.Ordinal),
                            StringImpl.IndexOf(stringValue, "om", 3, stringValue.Length - 3, StringComparison.Ordinal));

            Assert.AreEqual(stringValue.IndexOf("some", 0, stringValue.Length, StringComparison.Ordinal),
                            StringImpl.IndexOf(stringValue, "some", 0, stringValue.Length, StringComparison.Ordinal));

            Assert.AreEqual(stringValue.IndexOf("Some", 0, stringValue.Length, StringComparison.Ordinal),
                            StringImpl.IndexOf(stringValue, "Some", 0, stringValue.Length, StringComparison.Ordinal));

            // overloaded versions
            Assert.AreEqual(stringValue.IndexOf("a", 0, stringValue.Length), // overload #2
                            StringImpl.IndexOf(stringValue, "a", 0, stringValue.Length));

            Assert.AreEqual(stringValue.IndexOf("a", 30), // overload #3
                            StringImpl.IndexOf(stringValue, "a", 30));

            Assert.AreEqual(stringValue.IndexOf("a", 30, StringComparison.Ordinal), // overload #4
                            StringImpl.IndexOf(stringValue, "a", 30, StringComparison.Ordinal));

            Assert.AreEqual(stringValue.IndexOf("a"), // overload #5
                            StringImpl.IndexOf(stringValue, "a"));

            Assert.AreEqual(stringValue.IndexOf("a", StringComparison.Ordinal), // overload #6
                            StringImpl.IndexOf(stringValue, "a", StringComparison.Ordinal));

            // character overload versions of IndexOf
            Assert.AreEqual(stringValue.IndexOf('a', 30, stringValue.Length - 30), // overload #7
                            StringImpl.IndexOf(stringValue, 'a', 30, stringValue.Length - 30));

            Assert.AreEqual(stringValue.IndexOf('a', 30), // overload #8
                            StringImpl.IndexOf(stringValue, 'a', 30));

            Assert.AreEqual(stringValue.IndexOf('a'), // overload #9
                            StringImpl.IndexOf(stringValue, 'a'));
        }
        public void TestStringTrim()
        {
            const string stringValue = " \t\n Abcd \n\t ";

            Assert.AreEqual(stringValue.Trim(),
                            StringImpl.Trim(stringValue),
                            "Default trim should remove '\\n', '\\t' and ' '");

            Assert.AreEqual(stringValue.Trim('\n', ' '),
                            StringImpl.Trim(stringValue, '\n', ' '),
                            "Custom trims should remove only some characters.");

            Assert.AreEqual(stringValue.Trim('\n', '\t', ' ', 'A', 'b', 'c', 'd'),
                            StringImpl.Trim(stringValue, '\n', '\t', ' ', 'A', 'b', 'c', 'd'),
                            "Trims should be able to make strings empty.");

            Assert.AreEqual("".Trim(),
                            StringImpl.Trim(""),
                            "Trims on empty strings should be allowed.");
        }
Example #8
0
        public void CloseMismatch()
        {
            IDefaultActivityLogger l = DefaultActivityLogger.Create();
            var log = new StringImpl();

            l.Register(log);
            {
                IDisposable g0 = l.OpenGroup(LogLevel.Trace, "First");
                IDisposable g1 = l.OpenGroup(LogLevel.Trace, "Second");
                IDisposable g2 = l.OpenGroup(LogLevel.Trace, "Third");

                g1.Dispose();
                l.Trace("Inside First");
                g0.Dispose();
                l.Trace("At root");

                var end = "Trace: Inside First" + Environment.NewLine + "-" + Environment.NewLine + "Trace: At root";
                Assert.That(log.Writer.ToString(), Is.StringEnding(end));
            }
            {
                // g2 is closed after g1.
                IDisposable g0 = l.OpenGroup(LogLevel.Trace, "First");
                IDisposable g1 = l.OpenGroup(LogLevel.Trace, "Second");
                IDisposable g2 = l.OpenGroup(LogLevel.Trace, "Third");
                log.Writer.GetStringBuilder().Clear();
                g1.Dispose();
                // g2 has already been disposed by g1.
                // Nothing changed.
                g2.Dispose();
                l.Trace("Inside First");
                g0.Dispose();
                l.Trace("At root");

                var end = "Trace: Inside First" + Environment.NewLine + "-" + Environment.NewLine + "Trace: At root";
                Assert.That(log.Writer.ToString(), Is.StringEnding(end));
            }
        }
Example #9
0
        public void CloseMismatch()
        {
            IDefaultActivityLogger l = DefaultActivityLogger.Create();
            var log = new StringImpl();
            l.Register( log );
            {
                IDisposable g0 = l.OpenGroup( LogLevel.Trace, "First" );
                IDisposable g1 = l.OpenGroup( LogLevel.Trace, "Second" );
                IDisposable g2 = l.OpenGroup( LogLevel.Trace, "Third" );

                g1.Dispose();
                l.Trace( "Inside First" );
                g0.Dispose();
                l.Trace( "At root" );

                var end = "Trace: Inside First" + Environment.NewLine + "-" + Environment.NewLine + "Trace: At root";
                Assert.That( log.Writer.ToString(), Is.StringEnding( end ) );
            }
            {
                // g2 is closed after g1.
                IDisposable g0 = l.OpenGroup( LogLevel.Trace, "First" );
                IDisposable g1 = l.OpenGroup( LogLevel.Trace, "Second" );
                IDisposable g2 = l.OpenGroup( LogLevel.Trace, "Third" );
                log.Writer.GetStringBuilder().Clear();
                g1.Dispose();
                // g2 has already been disposed by g1.
                // Nothing changed.
                g2.Dispose();
                l.Trace( "Inside First" );
                g0.Dispose();
                l.Trace( "At root" );

                var end = "Trace: Inside First" + Environment.NewLine + "-" + Environment.NewLine + "Trace: At root";
                Assert.That( log.Writer.ToString(), Is.StringEnding( end ) );
            }
        }
Example #10
0
        public void MultipleClose()
        {
            IDefaultActivityLogger logger = DefaultActivityLogger.Create();
            // Binds the TestHelper.Logger logger to this one.
            logger.Output.RegisterMuxClient( TestHelper.Logger.Output.ExternalInput );

            var log1 = new StringImpl();
            logger.Register( log1 );

            Assert.That( logger.RegisteredSinks.Count, Is.EqualTo( 1 ) );

            using( logger.OpenGroup( LogLevel.Trace, () => "End First", "First" ) )
            {
                logger.CloseGroup( "Pouf" );
                using( logger.OpenGroup( LogLevel.Warn, "A group at level 0!" ) )
                {
                    logger.CloseGroup( "Close it." );
                    logger.CloseGroup( "Close it again." );
                }
            }

            Assert.That( log1.Writer.ToString(), Is.Not.StringContaining( "End First" ), "Close forgets other closes..." );
            Assert.That( log1.Writer.ToString(), Is.Not.StringContaining( "Close it again" ), "Close forgets other closes..." );
        }
Example #11
0
        public void FilterLevel()
        {
            IDefaultActivityLogger l = DefaultActivityLogger.Create();
            // Binds the TestHelper.Logger logger to this one.
            l.Output.RegisterMuxClient( TestHelper.Logger.Output.ExternalInput );

            var log = new StringImpl();
            l.Register( log );
            using( l.Filter( LogLevelFilter.Error ) )
            {
                l.Trace( "NO SHOW" );
                l.Info( "NO SHOW" );
                l.Warn( "NO SHOW" );
                l.Error( "Error n°1" );
                using( l.Filter( LogLevelFilter.Warn ) )
                {
                    l.Trace( "NO SHOW" );
                    l.Info( "NO SHOW" );
                    l.Warn( "Warn n°1" );
                    l.Error( "Error n°2" );
                    using( l.OpenGroup( LogLevel.Info, "GroupInfo" ) )
                    {
                        Assert.That( l.Filter, Is.EqualTo( LogLevelFilter.Warn ), "Groups does not change the current filter level." );
                        l.Trace( "NO SHOW" );
                        l.Info( "NO SHOW" );
                        l.Warn( "Warn n°2" );
                        l.Error( "Error n°3" );
                        // Changing the level inside a Group.
                        l.Filter = LogLevelFilter.Fatal;
                        l.Error( "NO SHOW" );
                        l.Fatal( "Fatal n°1" );
                    }
                    Assert.That( l.Filter, Is.EqualTo( LogLevelFilter.Warn ), "But Groups restores the original filter level when closed." );
                    l.Trace( "NO SHOW" );
                    l.Info( "NO SHOW" );
                    l.Warn( "Warn n°3" );
                    l.Error( "Error n°4" );
                    l.Fatal( "Fatal n°2" );
                }
                l.Trace( "NO SHOW" );
                l.Info( "NO SHOW" );
                l.Warn( "NO SHOW" );
                l.Error( "Error n°5" );
            }
            Assert.That( log.Writer.ToString(), Is.Not.StringContaining( "NO SHOW" ) );
            Assert.That( log.Writer.ToString(), Is.StringContaining( "Error n°1" )
                                                    .And.StringContaining( "Error n°2" )
                                                    .And.StringContaining( "Error n°3" )
                                                    .And.StringContaining( "Error n°4" )
                                                    .And.StringContaining( "Error n°5" ) );
            Assert.That( log.Writer.ToString(), Is.StringContaining( "Warn n°1" )
                                                    .And.StringContaining( "Warn n°2" )
                                                    .And.StringContaining( "Warn n°3" ) );
            Assert.That( log.Writer.ToString(), Is.StringContaining( "Fatal n°1" )
                                                    .And.StringContaining( "Fatal n°2" ) );
        }
Example #12
0
        public void ExplicitCloseWins()
        {
            IDefaultActivityLogger l = DefaultActivityLogger.Create();
            // Binds the TestHelper.Logger logger to this one.
            l.Output.RegisterMuxClient( TestHelper.Logger.Output.ExternalInput );

            var log = new StringImpl();
            l.Register( log );

            // No explicit close conclusion: Success!
            using( l.OpenGroup( LogLevel.Trace, () => "Success!", "First" ) )
            {
                l.Error( "Pouf" );
            }
            Assert.That( log.Writer.ToString(), Is.StringContaining( "Pouf" ) );
            Assert.That( log.Writer.ToString(), Is.Not.StringContaining( "Failed!" ), "Default conclusion wins." );
            Assert.That( log.Writer.ToString(), Is.StringContaining( "Success!" ), "Default conclusion." );

            log.Writer.GetStringBuilder().Clear();
            Assert.That( log.Writer.ToString(), Is.Empty );

            // Explicit conclusion: Failed!
            using( l.OpenGroup( LogLevel.Trace, () => "Success!", "First" ) )
            {
                l.Error( "Pouf" );
                l.CloseGroup( "Failed!" );
            }
            Console.WriteLine( log.Writer.ToString() );

            Assert.That( log.Writer.ToString(), Is.StringContaining( "Pouf" ) );
            Assert.That( log.Writer.ToString(), Is.StringContaining( "Failed!" ), "Explicit conclusion wins." );
            Assert.That( log.Writer.ToString(), Is.Not.StringContaining( "Success!" ), "Explicit conclusion wins." );
        }