Skip to content
This repository has been archived by the owner on Apr 19, 2019. It is now read-only.

Commit

Permalink
Whoops, lost the case mapping tests there
Browse files Browse the repository at this point in the history
  • Loading branch information
kxz committed Aug 17, 2015
1 parent da3974c commit bf5c908
Showing 1 changed file with 85 additions and 0 deletions.
85 changes: 85 additions & 0 deletions omnipresence/test/test_case_mapping.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
"""Unit tests for IRC case mappings."""
# pylint: disable=missing-docstring,too-few-public-methods


from twisted.trial.unittest import TestCase

from ..case_mapping import (CaseMapping, CASE_MAPPINGS,
case_mapping_by_name, CaseMappedDict)


EXPECTED = {
# Strings to compare # Equal under...
('#foo', '#foo'): ('ascii', 'strict-rfc1459', 'rfc1459'),
('#foo', '#FOO'): ('ascii', 'strict-rfc1459', 'rfc1459'),
('#FOO', '#FOO'): ('ascii', 'strict-rfc1459', 'rfc1459'),
('nick[tag]', 'nick{tag}'): ('strict-rfc1459', 'rfc1459'),
('foo|bar', 'foo\\bar'): ('strict-rfc1459', 'rfc1459'),
('hello~', 'hello^'): ('rfc1459'),
('#foo', '#bar'): tuple()
}


class EqualityTester(object):
def __init__(self, value):
self.value = value

def __eq__(self, other):
return self.value

def __ne__(self, other):
return self.value


class CaseMappingTestCase(TestCase):
def test_hash(self):
self.assertEqual(hash(CaseMapping('a', 'b')),
hash(CaseMapping('a', 'b')))
self.assertNotEqual(hash(CaseMapping('a', 'b')),
hash(CaseMapping('a', 'c')))

def test_equality(self):
self.assertEqual(CaseMapping('a', 'b'), CaseMapping('a', 'b'))
self.assertNotEqual(CaseMapping('a', 'b'), CaseMapping('a', 'c'))
self.assertTrue(CaseMapping('a', 'b') == EqualityTester(True))
self.assertFalse(CaseMapping('a', 'b') == EqualityTester(False))
self.assertTrue(CaseMapping('a', 'b') != EqualityTester(True))
self.assertFalse(CaseMapping('a', 'b') != EqualityTester(False))

def test_equates(self):
for (a, b), equal_case_mappings in EXPECTED.iteritems():
for name in CASE_MAPPINGS:
case_mapping = case_mapping_by_name(name)
self.assertIs(case_mapping.equates(a, b),
name in equal_case_mappings)

def test_upper_equates(self):
for (a, b), equal_case_mappings in EXPECTED.iteritems():
for name in CASE_MAPPINGS:
case_mapping = case_mapping_by_name(name)
self.assertIs(
case_mapping.upper(a) == case_mapping.upper(b),
name in equal_case_mappings)

def test_unrecognized_name(self):
self.assertRaises(ValueError, case_mapping_by_name, 'spam')


class CaseMappedDictTestCase(TestCase):
def test_no_mapping(self):
self.assertIs(CaseMappedDict().case_mapping, CASE_MAPPINGS['rfc1459'])

def test_lookup(self):
for (a, b), equal_case_mappings in EXPECTED.iteritems():
for name in CASE_MAPPINGS:
d = CaseMappedDict(case_mapping=name)
d[a] = 1
if name in equal_case_mappings:
self.assertEqual(d.get(b), 1)
else:
self.assertIsNone(d.get(b))

def test_nonstring_keys(self):
d = CaseMappedDict()
d[9001] = 1
self.assertEqual(d[9001], 1)

0 comments on commit bf5c908

Please sign in to comment.