make CAP tokens without "=value" be key:"", avoiding None checks

This commit is contained in:
jesopo 2020-04-02 17:15:23 +01:00
parent 8b18a696be
commit 048ae4252e
2 changed files with 13 additions and 16 deletions

View File

@ -44,9 +44,9 @@ class Server(Named):
self.isupport = ISupport()
self.has_cap: bool = False
self._temp_caps: Dict[str, Optional[str]] = {}
self.available_caps: Dict[str, Optional[str]] = {}
self.agreed_caps: List[str] = []
self._temp_caps: Dict[str, str] = {}
self.available_caps: Dict[str, str] = {}
self.agreed_caps: List[str] = []
def __repr__(self) -> str:
return f"Server(name={self.name!r})"
@ -645,12 +645,12 @@ class Server(Named):
caps = line.params[2 + (1 if multiline else 0)]
tokens: Dict[str, Optional[str]] = {}
tokens_str: List[str] = []
tokens: Dict[str, str] = {}
tokens_str: List[str] = []
for cap in filter(bool, caps.split(" ")):
tokens_str.append(cap)
key, _, value = cap.partition("=")
tokens[key] = value or None
tokens[key] = value
emit = self._emit()
emit.subcommand = subcommand

View File

@ -7,21 +7,19 @@ class CapTestLS(unittest.TestCase):
self.assertFalse(server.has_cap)
self.assertEqual(server.available_caps, {})
server.parse_tokens(irctokens.tokenise("CAP * LS :a b"))
self.assertEqual(server.available_caps, {"a": None, "b": None})
self.assertEqual(server.available_caps, {"a": "", "b": ""})
def test_two_lines(self):
server = ircstates.Server("test")
server.parse_tokens(irctokens.tokenise("CAP * LS * :a b"))
self.assertEqual(server.available_caps, {})
server.parse_tokens(irctokens.tokenise("CAP * LS :c"))
self.assertEqual(server.available_caps,
{"a": None, "b": None, "c": None})
self.assertEqual(server.available_caps, {"a": "", "b": "", "c": ""})
def test_values(self):
server = ircstates.Server("test")
server.parse_tokens(irctokens.tokenise("CAP * LS :a b= c=1"))
self.assertEqual(server.available_caps,
{"a": None, "b": None, "c": "1"})
self.assertEqual(server.available_caps, {"a": "", "b": "", "c": "1"})
class CapTestACK(unittest.TestCase):
def test_one_line(self):
@ -47,20 +45,19 @@ class CapTestNEW(unittest.TestCase):
def test_no_ls(self):
server = ircstates.Server("test")
server.parse_tokens(irctokens.tokenise("CAP * NEW :a"))
self.assertEqual(server.available_caps, {"a": None})
self.assertEqual(server.available_caps, {"a": ""})
def test_one(self):
server = ircstates.Server("test")
server.parse_tokens(irctokens.tokenise("CAP * LS :a"))
server.parse_tokens(irctokens.tokenise("CAP * NEW :b"))
self.assertEqual(server.available_caps, {"a": None, "b": None})
self.assertEqual(server.available_caps, {"a": "", "b": ""})
def test_two(self):
server = ircstates.Server("test")
server.parse_tokens(irctokens.tokenise("CAP * LS :a"))
server.parse_tokens(irctokens.tokenise("CAP * NEW :b c"))
self.assertEqual(server.available_caps,
{"a": None, "b": None, "c": None})
self.assertEqual(server.available_caps, {"a": "", "b": "", "c": ""})
class CapTestDEL(unittest.TestCase):
def test_not_acked(self):
@ -80,7 +77,7 @@ class CapTestDEL(unittest.TestCase):
server.parse_tokens(irctokens.tokenise("CAP * LS :a b"))
server.parse_tokens(irctokens.tokenise("CAP * ACK :a b"))
server.parse_tokens(irctokens.tokenise("CAP * DEL :a"))
self.assertEqual(server.available_caps, {"b": None})
self.assertEqual(server.available_caps, {"b": ""})
self.assertEqual(server.agreed_caps, ["b"])
def test_two_del(self):