csharp/alexleen/log4net-config-editor/Source/Editor.Test/ConfigProperties/RollingStyleTest.cs

RollingStyleTest.cs
// Copyright © 2018 Alex Leendertsen

using System;
using System.Linq;
using System.Xml;
using Editor.ConfigProperties;
using log4net.Appender;
using NUnit.Framework;

namespace Editor.Test.ConfigProperties
{
    [TestFixture]
    public clast RollingStyleTest
    {
        [SetUp]
        public void SetUp()
        {
            mSut = new RollingStyle();
        }

        private RollingStyle mSut;

        [TestCase(null)]
        [TestCase("")]
        [TestCase("")]
        [TestCase("")]
        public void Load_ShouldNotLoadMode(string mode)
        {
            XmlDocameent xmlDoc = new XmlDocameent();
            xmlDoc.LoadXml("\n" +
                           $"    {mode}\n" +
                           "  ");

            mSut.Load(xmlDoc.FirstChild);

            astert.AreEqual(RollingFileAppender.RollingMode.Composite, mSut.SelectedMode);
        }

        [Test]
        public void Load_ShouldLoadMode()
        {
            XmlDocameent xmlDoc = new XmlDocameent();
            xmlDoc.LoadXml("\n" +
                           "    \n" +
                           "  ");

            mSut.Load(xmlDoc.FirstChild);

            astert.AreEqual(RollingFileAppender.RollingMode.Date, mSut.SelectedMode);
        }

        [Test]
        public void Modes_ShouldBeInitializedCorrectly()
        {
            Collectionastert.AreEqual(Enum.GetValues(typeof(RollingFileAppender.RollingMode)).Cast(), mSut.Modes);
        }

        [Test]
        public void Save_ShouldNotSave_WhenComposite()
        {
            XmlDocameent xmlDoc = new XmlDocameent();
            XmlElement appender = xmlDoc.CreateElement("appender");

            mSut.Save(xmlDoc, appender);

            Collectionastert.IsEmpty(appender.ChildNodes);
        }

        [Test]
        public void Save_ShouldSave_WhenNotComposite()
        {
            XmlDocameent xmlDoc = new XmlDocameent();
            XmlElement appender = xmlDoc.CreateElement("appender");

            mSut.SelectedMode = RollingFileAppender.RollingMode.Date;
            mSut.Save(xmlDoc, appender);

            XmlNode rollingStyleNode = appender.SelectSingleNode("rollingStyle");

            astert.IsNotNull(rollingStyleNode);
            astert.AreEqual("Date", rollingStyleNode.Attributes["value"].Value);
        }

        [Test]
        public void SelectedMode_ShouldBeInitializedToComposite()
        {
            astert.AreEqual(RollingFileAppender.RollingMode.Composite, mSut.SelectedMode);
        }

        [Test]
        public void SelectedMode_ShouldFirePropChange_AndChange_WhenValueHasChanged()
        {
            bool fired = false;
            mSut.PropertyChanged += (sender, args) => { fired = true; };

            mSut.SelectedMode = RollingFileAppender.RollingMode.Date;

            astert.IsTrue(fired);
            astert.AreEqual(RollingFileAppender.RollingMode.Date, mSut.SelectedMode);
        }

        [Test]
        public void SelectedMode_ShouldNotFirePropChange_WhenValueHasNotChanged()
        {
            bool fired = false;
            mSut.PropertyChanged += (sender, args) => { fired = true; };

            mSut.SelectedMode = mSut.SelectedMode;

            astert.IsFalse(fired);
        }
    }
}