def test_empty_instance(self): tags = IrcMessageTagsReadOnly() self.assertEqual(len(tags), 0) self.assertFalse(tags) self.assertNotIn('Kappa', tags) self.assertNotIn(IrcMessageTagsKey('Kappa'), tags) self.assertEqual(str(tags), '') self.assertEqual(tags, IrcMessageTagsReadOnly(None)) self.assertEqual(tags, {})
def test_instance_one_item_vendor_key_true_value(self): tags = IrcMessageTagsReadOnly(['turbo/miniK']) self.assertEqual(len(tags), 1) self.assertEqual(tags['turbo/miniK'], True) self.assertEqual(tags, {'turbo/miniK': True}) self.assertEqual(tags, {IrcMessageTagsKey('miniK', 'turbo'): True}) self.assertEqual( tags, IrcMessageTagsReadOnly([IrcMessageTagsKey('miniK', 'turbo')]))
def test_empty_instance_mapping_methods(self): tags = IrcMessageTagsReadOnly() self.assertEqual(tags, tags) self.assertEqual(tags, IrcMessageTagsReadOnly()) self.assertEqual(tags, {}) self.assertFalse(tags.keys()) self.assertFalse(tags.values()) self.assertFalse(tags.items()) self.assertIsNone(tags.get('Kappa')) keyIter = iter(tags) self.assertRaises(StopIteration, next, keyIter)
def test_instance_one_item_key_str_value(self): tags = IrcMessageTagsReadOnly({'Kappa': 'KappaHD'}) self.assertEqual(len(tags), 1) self.assertTrue(tags) self.assertIn('Kappa', tags) self.assertIn(IrcMessageTagsKey('Kappa'), tags) self.assertEqual(tags['Kappa'], 'KappaHD') self.assertEqual(tags[IrcMessageTagsKey('Kappa')], 'KappaHD') self.assertEqual( tags, IrcMessageTagsReadOnly([[IrcMessageTagsKey('Kappa'), 'KappaHD']])) self.assertEqual(tags, {'Kappa': 'KappaHD'})
def test_instaance_one_item_mapping_methods(self): tags = IrcMessageTagsReadOnly(['Kappa']) self.assertEqual(tags, tags) self.assertEqual(tags, IrcMessageTagsReadOnly({'Kappa': True})) self.assertEqual(tags, {'Kappa': True}) self.assertEqual(len(tags.keys()), 1) self.assertEqual(len(tags.values()), 1) self.assertEqual(len(tags.items()), 1) self.assertIn('Kappa', tags.keys()) self.assertIn(IrcMessageTagsKey('Kappa'), tags.keys()) self.assertIn(True, tags.values()) self.assertIn(('Kappa', True), tags.items()) self.assertIn((IrcMessageTagsKey('Kappa'), True), tags.items()) keyIter = iter(tags) self.assertEqual(next(keyIter), 'Kappa') self.assertRaises(StopIteration, next, keyIter)
def test_from_twitch_privmsg(self): self.assertEqual( IrcMessage.fromMessage( '@badges=broadcaster/1;color=#DAA520;display-name=BotGotsThis;' 'emotes=25:6-10;mod=1;room-id=42553092;subscriber=0;turbo=0;' 'user-id=55612319;user-type=mod ' ':[email protected] ' 'PRIVMSG #botgotsthis :Hello Kappa'), IrcMessage( tags=IrcMessageTagsReadOnly({ 'badges': 'broadcaster/1', 'color': '#DAA520', 'display-name': 'BotGotsThis', 'emotes': '25:6-10', 'mod': '1', 'room-id': '42553092', 'subscriber': '0', 'turbo': '0', 'user-id': '55612319', 'user-type': 'mod' }), prefix=IrcMessagePrefix(nick='botgotsthis', user='******', host='botgotsthis.tmi.twitch.tv'), command='PRIVMSG', params=IrcMessageParams(middle='#botgotsthis', trailing='Hello Kappa')))
def test_parse_multiple_spaces(self): self.assertEqual( IrcMessage.parse('''\ @multiple=spaces :will!be@used HERE to test :if this passes'''), ParsedMessage( IrcMessageTagsReadOnly({'multiple': 'spaces'}), IrcMessagePrefix(nick='will', user='******', host='used'), 'HERE', IrcMessageParams('to test', 'if this passes')))
def test_str_magic_two_items_mixed(self): self.assertIn( str( IrcMessageTagsReadOnly({ 'KevinTurtle': True, 'SwiftRage/DansGame': 'BibleThump' })), [ 'KevinTurtle;SwiftRage/DansGame=BibleThump', 'SwiftRage/DansGame=BibleThump;KevinTurtle' ])
def test_instance_multi_items(self): tags = IrcMessageTagsReadOnly([ 'KevinTurtle', IrcMessageTagsKey('PraiseIt'), ['Kappa', 'Keepo'], [IrcMessageTagsKey('SwiftRage'), 'DansGame'] ]) self.assertEqual(len(tags), 4) self.assertEqual(tags['KevinTurtle'], True) self.assertEqual(tags['PraiseIt'], True) self.assertEqual(tags[IrcMessageTagsKey('Kappa')], 'Keepo') self.assertEqual(tags[IrcMessageTagsKey('SwiftRage')], 'DansGame')
def test_instance_two_items(self): tags = IrcMessageTagsReadOnly( ['KevinTurtle', [IrcMessageTagsKey('KreyGasm'), 'PogChamp ']]) self.assertEqual(len(tags), 2) self.assertTrue(tags) self.assertIn('KevinTurtle', tags) self.assertIn(IrcMessageTagsKey('KreyGasm'), tags) self.assertEqual(tags[IrcMessageTagsKey('KevinTurtle')], True) self.assertEqual(tags['KreyGasm'], 'PogChamp ') strTags = str(tags) self.assertIn(strTags, [ r'KevinTurtle;KreyGasm=PogChamp\s', r'KreyGasm=PogChamp\s;KevinTurtle' ]) self.assertEqual( tags, IrcMessageTagsReadOnly({ IrcMessageTagsKey('KevinTurtle'): True, 'KreyGasm': 'PogChamp ' }))
def test_str_tags_magic_prefix_command_params(self): message = IrcMessage( tags=IrcMessageTagsReadOnly({ 'broadcaster-lang': '', 'emote-only': '0', 'r9k': '0', 'slow': '0', 'subs-only': '0' }), prefix=IrcMessagePrefix(servername='tmi.twitch.tv'), command='ROOMSTATE', params=IrcMessageParams('#botgotsthis')) self.assertEqual( str(message), '@' + str(message.tags) + ' :tmi.twitch.tv ROOMSTATE #botgotsthis')
def test_tags_prefix_command_params(self): message = IrcMessage( tags=IrcMessageTagsReadOnly({ 'broadcaster-lang': '', 'emote-only': '0', 'r9k': '0', 'slow': '0', 'subs-only': '0' }), prefix=IrcMessagePrefix(servername='tmi.twitch.tv'), command='ROOMSTATE', params=IrcMessageParams('#botgotsthis')) self.assertEqual(len(message.tags), 5) self.assertEqual(message.tags['broadcaster-lang'], '') self.assertEqual(message.tags['emote-only'], '0') self.assertEqual(message.tags['r9k'], '0') self.assertEqual(message.tags['slow'], '0') self.assertEqual(message.tags['subs-only'], '0') self.assertEqual(message.prefix.servername, 'tmi.twitch.tv') self.assertIsNone(message.prefix.nick) self.assertIsNone(message.prefix.user) self.assertIsNone(message.prefix.host) self.assertEqual(message.command, 'ROOMSTATE') self.assertIs(message.params.middle, '#botgotsthis') self.assertIs(message.params.trailing, None) self.assertEqual( message, IrcMessage( tags=IrcMessageTagsReadOnly({ 'broadcaster-lang': '', 'emote-only': '0', 'r9k': '0', 'slow': '0', 'subs-only': '0' }), prefix=IrcMessagePrefix(servername='tmi.twitch.tv'), command='ROOMSTATE', params=IrcMessageParams('#botgotsthis')))
def test_str_magic_three_items(self): self.assertIn( str( IrcMessageTagsReadOnly({ 'FrankerZ': 'RalpherZ', 'TriHard/WinWaker': True, 'DatSheffy': True })), [ 'FrankerZ=RalpherZ;TriHard/WinWaker;DatSheffy', 'FrankerZ=RalpherZ;DatSheffy;TriHard/WinWaker', 'TriHard/WinWaker;FrankerZ=RalpherZ;DatSheffy', 'TriHard/WinWaker;DatSheffy;FrankerZ=RalpherZ', 'DatSheffy;FrankerZ=RalpherZ;TriHard/WinWaker', 'DatSheffy;TriHard/WinWaker;FrankerZ=RalpherZ' ])
def test_readonly(self): tags = IrcMessageTagsReadOnly() with self.assertRaises(TypeError): tags['Kappa'] = 'KappaHD'
def test_index_missing_tagskey(self): tags = IrcMessageTagsReadOnly() with self.assertRaises(KeyError): tags[IrcMessageTagsKey('Kappa')]
def test_index_missing_str(self): tags = IrcMessageTagsReadOnly() with self.assertRaises(KeyError): tags['Kappa']
def test_str_magic_one_item_with_value_str(self): self.assertEqual(str(IrcMessageTagsReadOnly({'Kappa': 'KappaPride'})), 'Kappa=KappaPride')
def test_instance_special_values(self): tags = IrcMessageTagsReadOnly({'abc': r';\ '}) self.assertEqual(str(tags), r'abc=\:\\\s')
def test_constructor_readonly(self): tags = IrcMessageTagsReadOnly() self.assertIs(tags, IrcMessageTagsReadOnly(tags))
def test_parse_empty(self): items = IrcMessageTagsReadOnly.parseTags('') self.assertIsInstance(items, Dict) self.assertEqual(items, IrcMessageTagsReadOnly())
def test_str_magic_one_item_with_value(self): self.assertEqual( str( IrcMessageTagsReadOnly( [IrcMessageTagsKey(vendor='twitch.tv', key='KappaHD')])), 'twitch.tv/KappaHD')
def test_index_bytes(self): tags = IrcMessageTagsReadOnly() with self.assertRaises(TypeError): b'Kappa' in tags with self.assertRaises(TypeError): tags[b'Kappa']
def test_index_int(self): tags = IrcMessageTagsReadOnly() with self.assertRaises(TypeError): 1 in tags with self.assertRaises(TypeError): tags[1]
def test_command_set_command(self): message = IrcMessage(command=0) with self.assertRaises(AttributeError): message.command = IrcMessageTagsReadOnly()
def test_str_magic_empty_instance(self): self.assertEqual(str(IrcMessageTagsReadOnly()), '')