Add more channel state diff tests.
authorJelmer Vernooij <jelmer@samba.org>
Mon, 13 Apr 2009 11:46:50 +0000 (13:46 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Mon, 13 Apr 2009 11:46:50 +0000 (13:46 +0200)
libirc/line.c
python/tests/test_irc.py

index 2f5a33684f5e0d21c354f7c6e2d337790d9caeac..9b9bdbdf58f204d6f9823ea7118eb5542c9fdf0c 100644 (file)
@@ -214,8 +214,9 @@ static gboolean requires_colon(const struct irc_line *l)
        if (!g_strcasecmp(l->args[0], "JOIN"))
                return FALSE;
 
-       if (!g_strcasecmp(l->args[0], "PART"))
-               return FALSE;
+       if (!g_strcasecmp(l->args[0], "PART") || !g_strcasecmp(l->args[0], "TOPIC")) {
+        return (strchr(l->args[l->argc-1], ' ') != NULL);
+    }
 
        switch(c) {
        case RPL_CHANNELMODEIS:
index 318722a850bff4a957660cc1723942b3ef69ac73..e24bb28f99a53c32770e1bdb90d4a92733a5ab41 100644 (file)
@@ -524,16 +524,33 @@ class ClientSendStateTests(unittest.TestCase):
             ':myorigin 332 * #foo :bla la', 
             ':myorigin 366 * #foo :End of /NAMES list'])
 
-    def test_diff_with_channel(self):
-        ch1 = irc.ChannelState("#foo")
-        ch2 = irc.ChannelState("#foo")
-        ch2.topic = "bla la"
-        self.state.add(ch1)
-        state2 = irc.NetworkState("nick", "user", "host")
-        state2.add(ch2)
-        self.client.send_state_diff(self.state, state2)
-        self.assertLines(['TOPIC #foo :bla la'])
-
     def test_empty_diff(self):
         self.client.send_state_diff(self.state, self.state)
         self.assertLines([])
+
+
+class ChannelStateDiffTests(unittest.TestCase):
+
+    def setUp(self):
+        super(ChannelStateDiffTests, self).setUp()
+        self.transport = DummyTransport()
+        self.client = irc.Client(self.transport, "myorigin", "description")
+        self.state1 = irc.NetworkState("nick", "user", "host")
+        self.state2 = irc.NetworkState("nick", "user", "host")
+        self.channel1 = irc.ChannelState("#foo")
+        self.channel2 = irc.ChannelState("#foo")
+        self.state1.add(self.channel1)
+        self.state2.add(self.channel2)
+
+    def assertLines(self, lines):
+        self.assertEquals(lines, self.transport.str_lines())
+
+    def test_diff_topic_set(self):
+        self.channel2.topic = "bla la"
+        self.client.send_state_diff(self.state1, self.state2)
+        self.assertLines(['TOPIC #foo :bla la'])
+
+    def test_diff_topic_unset(self):
+        self.channel1.topic = "bla la"
+        self.client.send_state_diff(self.state1, self.state2)
+        self.assertLines(['TOPIC #foo'])