/// <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() ); }
// -------- 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 ); }
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(); }
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")); }