def test_get_link_returns_correct_link_when_matches(self): for arg, exp in [(('smoke', 'http://tobacco.com', 'Lung_cancer'), ('http://tobacco.com', 'Lung cancer')), (('tag', 'ftp://foo:809/bar.zap', 'Foo_in a Bar'), ('ftp://foo:809/bar.zap', 'Foo in a Bar'))]: link = TagStatLink(*arg) assert_equals(exp, link.get_link(arg[0]))
def test_get_link_returns_correct_link_when_matches(self): for arg, exp in [(('smoke', 'http://tobacco.com', 'Lung_cancer'), ('http://tobacco.com', 'Lung cancer')), (('tag', 'ftp://foo:809/bar.zap', 'Foo_in a Bar'), ('ftp://foo:809/bar.zap', 'Foo in a Bar'))]: link = TagStatLink(*arg) assert_equal(exp, link.get_link(arg[0]))
def test_valid_string_containing_patterns_is_parsed_correctly(self): for arg, exp_pattern in [('*', '^(.*)$'), ('f*r', '^f(.*)r$'), ('*a*', '^(.*)a(.*)$'), ('?', '^(.)$'), ('??', '^(..)$'), ('f???ar', '^f(...)ar$'), ('F*B?R*?', '^F(.*)B(.)R(.*)(.)$')]: link = TagStatLink(arg, 'some_url', 'some_title') assert_equals(exp_pattern, link._regexp.pattern)
def test_valid_string_is_parsed_correctly(self): for arg, exp in [(('Tag', 'bar/foo.html', 'foobar'), ('^Tag$', 'bar/foo.html', 'foobar')), (('hello', 'gopher://hello.world:8090/hello.html', 'Hello World'), ('^hello$', 'gopher://hello.world:8090/hello.html', 'Hello World'))]: link = TagStatLink(*arg) assert_equals(exp[0], link._regexp.pattern) assert_equals(exp[1], link._link) assert_equals(exp[2], link._title)
def test_pattern_matches_case_insensitively(self): exp = 'http://tobacco.com', 'Lung cancer' link = TagStatLink('smoke', *exp) for tag in ['Smoke', 'SMOKE', 'smoke']: assert_equal(exp, link.get_link(tag))
def test_get_link_returns_none_when_no_match(self): link = TagStatLink('smoke', 'http://tobacco.com', 'Lung cancer') for tag in ['foo', 'b a r', 's moke']: assert_none(link.get_link(tag))
def test_matches_are_ignored_in_pattern_substitution(self): link = TagStatLink('???-*-*-?', '%4-%2-%2-%4', 'Tracker') assert_equals(link.get_link('AAA-XXX-ABC-B'), ('B-XXX-XXX-B', 'Tracker'))
def test_pattern_substitution_with_multiple_substitutions(self): link = TagStatLink('??-?-*', '%3-%3-%1-%2-%3', 'Tracker') assert_equal(link.get_link('aa-b-XXX'), ('XXX-XXX-aa-b-XXX', 'Tracker'))
def test_pattern_substitution_with_one_match(self): link = TagStatLink('tag-*', 'http://tracker/?id=%1', 'Tracker') for id in ['1', '23', '456']: exp = ('http://tracker/?id=%s' % id, 'Tracker') assert_equal(exp, link.get_link('tag-%s' % id))
def test_pattern_match(self): link = TagStatLink('f?o*r', 'http://foo/bar.html', 'FooBar') for tag in ['foobar', 'foor', 'f_ofoobarfoobar', 'fOoBAr']: assert_equals(link.get_link(tag), ('http://foo/bar.html', 'FooBar'))
def test_pattern_matches_when_spaces(self): exp = 'http://tobacco.com', 'Lung cancer' link = TagStatLink('smoking kills', *exp) for tag in ['Smoking Kills', 'SMOKING KILLS']: assert_equals(exp, link.get_link(tag))
def test_pattern_matches_case_insensitively(self): exp = 'http://tobacco.com', 'Lung cancer' link = TagStatLink('smoke', *exp) for tag in ['Smoke', 'SMOKE', 'smoke']: assert_equals(exp, link.get_link(tag))
def test_underscores_in_title_are_converted_to_spaces(self): link = TagStatLink('', '', 'my_name') assert_equals(link._title, 'my name')
def test_pattern_matches_when_spaces(self): exp = 'http://tobacco.com', 'Lung cancer' link = TagStatLink('smoking kills', *exp) for tag in ['Smoking Kills', 'SMOKING KILLS']: assert_equal(exp, link.get_link(tag))
def test_pattern_match(self): link = TagStatLink('f?o*r', 'http://foo/bar.html', 'FooBar') for tag in ['foobar', 'foor', 'f_ofoobarfoobar', 'fOoBAr']: assert_equal(link.get_link(tag), ('http://foo/bar.html', 'FooBar'))
def test_pattern_substitution_with_one_match(self): link = TagStatLink('tag-*', 'http://tracker/?id=%1', 'Tracker') for id in ['1', '23', '456']: exp = ('http://tracker/?id=%s' % id, 'Tracker') assert_equals(exp, link.get_link('tag-%s' % id))
def test_pattern_substitution_with_multiple_matches(self): link = TagStatLink('?-*', 'http://tracker/?id=%1-%2', 'Tracker') for id1, id2 in [('1', '2'), ('3', '45'), ('f', 'bar')]: exp = ('http://tracker/?id=%s-%s' % (id1, id2), 'Tracker') assert_equal(exp, link.get_link('%s-%s' % (id1, id2)))
def test_pattern_substitution_with_multiple_matches(self): link = TagStatLink('?-*', 'http://tracker/?id=%1-%2', 'Tracker') for id1, id2 in [('1', '2'), ('3', '45'), ('f', 'bar')]: exp = ('http://tracker/?id=%s-%s' % (id1, id2), 'Tracker') assert_equals(exp, link.get_link('%s-%s' % (id1, id2)))
def test_matches_are_ignored_in_pattern_substitution(self): link = TagStatLink('???-*-*-?', '%4-%2-%2-%4', 'Tracker') assert_equal(link.get_link('AAA-XXX-ABC-B'), ('B-XXX-XXX-B', 'Tracker'))
def test_pattern_substitution_with_multiple_substitutions(self): link = TagStatLink('??-?-*', '%3-%3-%1-%2-%3', 'Tracker') assert_equals(link.get_link('aa-b-XXX'), ('XXX-XXX-aa-b-XXX', 'Tracker'))