Пример #1
0
        /// <summary>
        /// Ensures the given IRCConfig is not valid.
        /// </summary>
        /// <param name="config">The config to check.</param>
        private void CheckNotValid( IrcConfig config )
        {
            Assert.Throws<ValidationException>( () => config.Validate() );

            ReadOnlyIrcConfig roConfig = new ReadOnlyIrcConfig( config.Clone() );
            Assert.Throws<ValidationException>( () => roConfig.Validate() );

            IIrcConfig iircConfig = config;
            Assert.Throws<ValidationException>( () => iircConfig.Validate() );
        }
Пример #2
0
        // -------- Test Helpers --------

        /// <summary>
        /// Ensures the three different types of IRC Configs are not equal.
        /// </summary>
        /// <param name="ircConfig">The IRC config object to test.</param>
        /// <param name="interfaceConfig">The interfaced IRC object to test.</param>
        /// <param name="roIrcConfig">The read-only IRC object to test.</param>
        private void CheckNotEqual( IrcConfig ircConfig, IIrcConfig interfaceConfig, ReadOnlyIrcConfig roIrcConfig )
        {
            // Ensure not equals works going from real -> interface
            Assert.AreNotEqual( ircConfig, interfaceConfig );
            Assert.AreNotEqual( interfaceConfig, ircConfig );

            // Ensure not equals works going from real -> readonly
            Assert.AreNotEqual( ircConfig, roIrcConfig );
            Assert.AreNotEqual( roIrcConfig, ircConfig );

            // Ensure not equals works going from interface -> interface
            IIrcConfig iircConfig = ircConfig;
            Assert.AreNotEqual( iircConfig, interfaceConfig );
            Assert.AreNotEqual( interfaceConfig, iircConfig );

            // Ensure not equals works going from readonly -> readonly
            ReadOnlyIrcConfig roConfig = new ReadOnlyIrcConfig( ircConfig );
            Assert.AreNotEqual( roConfig, roIrcConfig );
            Assert.AreNotEqual( roIrcConfig, roConfig );
        }
Пример #3
0
        public void EqualsTest()
        {
            IIrcConfig        interfaceIrcConfig = this.ircConfig.Clone();
            ReadOnlyIrcConfig roIrcConfig        = new ReadOnlyIrcConfig(this.ircConfig.Clone());

            // Ensure both the interface and the RO config are equal, but not the same reference.
            Assert.AreNotSame(interfaceIrcConfig, this.ircConfig);
            Assert.AreNotSame(roIrcConfig, this.ircConfig);
            Assert.AreNotSame(interfaceIrcConfig, roIrcConfig);

            // Ensure everything is equal.
            Assert.AreEqual(interfaceIrcConfig, this.ircConfig);
            Assert.AreEqual(this.ircConfig, interfaceIrcConfig);
            Assert.AreEqual(roIrcConfig, this.ircConfig);
            Assert.AreEqual(this.ircConfig, roIrcConfig);
            Assert.AreEqual(interfaceIrcConfig, roIrcConfig);
            Assert.AreEqual(roIrcConfig, interfaceIrcConfig);

            // BridgeBots should not be same reference.
            Assert.AreNotSame(interfaceIrcConfig.BridgeBots, this.ircConfig.BridgeBots);
            Assert.AreNotSame(roIrcConfig, this.ircConfig.BridgeBots);
            Assert.AreNotSame(interfaceIrcConfig.BridgeBots, roIrcConfig.BridgeBots);

            // Next, start changing things.  Everything should become false.
            this.ircConfig.Server = "irc.somewhere.net";
            CheckNotEqual(this.ircConfig, interfaceIrcConfig, roIrcConfig);
            this.ircConfig = TestHelpers.GetTestIrcConfig();

            this.ircConfig.Channel = "#derp";
            CheckNotEqual(this.ircConfig, interfaceIrcConfig, roIrcConfig);
            this.ircConfig = TestHelpers.GetTestIrcConfig();

            this.ircConfig.Port = 9876;
            CheckNotEqual(this.ircConfig, interfaceIrcConfig, roIrcConfig);
            this.ircConfig = TestHelpers.GetTestIrcConfig();

            this.ircConfig.UserName = "******";
            CheckNotEqual(this.ircConfig, interfaceIrcConfig, roIrcConfig);
            this.ircConfig = TestHelpers.GetTestIrcConfig();

            this.ircConfig.Nick = "Nate";
            CheckNotEqual(this.ircConfig, interfaceIrcConfig, roIrcConfig);
            this.ircConfig = TestHelpers.GetTestIrcConfig();

            this.ircConfig.RealName = "Nate A Saurus";
            CheckNotEqual(this.ircConfig, interfaceIrcConfig, roIrcConfig);
            this.ircConfig = TestHelpers.GetTestIrcConfig();

            this.ircConfig.Password = "******";
            CheckNotEqual(this.ircConfig, interfaceIrcConfig, roIrcConfig);
            this.ircConfig = TestHelpers.GetTestIrcConfig();

            this.ircConfig.QuitMessage = "A quit message";
            CheckNotEqual(this.ircConfig, interfaceIrcConfig, roIrcConfig);
            this.ircConfig = TestHelpers.GetTestIrcConfig();

            // Add an additional bot.
            this.ircConfig.BridgeBots["slackBridge"] = @"(?<bridgeUser>\w+):\s+(?<bridgeMessage>.+)";
            CheckNotEqual(this.ircConfig, interfaceIrcConfig, roIrcConfig);
            this.ircConfig = TestHelpers.GetTestIrcConfig();

            // Change an existing bot's value.
            this.ircConfig.BridgeBots["telegrambot"] = @"(?<bridgeUser>\w+)-\s+(?<bridgeMessage>.+)";
            CheckNotEqual(this.ircConfig, interfaceIrcConfig, roIrcConfig);
            this.ircConfig = TestHelpers.GetTestIrcConfig();
        }
Пример #4
0
        public void ReadOnlyTest()
        {
            IIrcConfig config = new ReadOnlyIrcConfig(ircConfig);

            // First, ensure properties are all equal
            Assert.AreEqual(this.ircConfig.Server, config.Server);
            Assert.AreEqual(this.ircConfig.Channel, config.Channel);
            Assert.AreEqual(this.ircConfig.Port, config.Port);
            Assert.AreEqual(this.ircConfig.UserName, config.UserName);
            Assert.AreEqual(this.ircConfig.Nick, config.Nick);
            Assert.AreEqual(this.ircConfig.RealName, config.RealName);
            Assert.AreEqual(this.ircConfig.Password, config.Password);
            Assert.AreEqual(this.ircConfig.QuitMessage, config.QuitMessage);
            Assert.AreNotSame(this.ircConfig.BridgeBots, config.BridgeBots);   // Should not be same reference.

            // Next, ensure trying to convert to an IRCConfig results in a null (someone's going to do this).
            Assert.IsNull(config as IrcConfig);

            // Lastly, ensure setters throw exceptions.
            ReadOnlyIrcConfig roConfig = config as ReadOnlyIrcConfig;

            ReadOnlyException ex =
                Assert.Throws <ReadOnlyException>(
                    delegate()
            {
                roConfig.Server = "NewServer";
            }
                    );

            Assert.IsTrue(ex.Message.Contains("Server"));

            ex = Assert.Throws <ReadOnlyException>(
                delegate()
            {
                roConfig.Channel = "#NewChannel";
            }
                );
            Assert.IsTrue(ex.Message.Contains("Channel"));

            ex = Assert.Throws <ReadOnlyException>(
                delegate()
            {
                roConfig.Port = 4;
            }
                );
            Assert.IsTrue(ex.Message.Contains("Port"));

            ex = Assert.Throws <ReadOnlyException>(
                delegate()
            {
                roConfig.UserName = "******";
            }
                );
            Assert.IsTrue(ex.Message.Contains("UserName"));

            ex = Assert.Throws <ReadOnlyException>(
                delegate()
            {
                roConfig.Nick = "NewNick";
            }
                );
            Assert.IsTrue(ex.Message.Contains("Nick"));

            ex = Assert.Throws <ReadOnlyException>(
                delegate()
            {
                roConfig.RealName = "NewRName";
            }
                );
            Assert.IsTrue(ex.Message.Contains("RealName"));

            ex = Assert.Throws <ReadOnlyException>(
                delegate()
            {
                roConfig.Password = "******";
            }
                );
            Assert.IsTrue(ex.Message.Contains("Password"));

            ex = Assert.Throws <ReadOnlyException>(
                delegate()
            {
                roConfig.QuitMessage = "I am quitting";
            }
                );
            Assert.IsTrue(ex.Message.Contains("QuitMessage"));
        }