From 237ae081dbade817f4a2033b6aa2d3cdeb15b8b2 Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Sat, 15 Nov 2014 21:22:30 +0100 Subject: Moved typogrify as plugin --- plugins/typogrify/titlecase/tests.py | 174 +++++++++++++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 plugins/typogrify/titlecase/tests.py (limited to 'plugins/typogrify/titlecase/tests.py') diff --git a/plugins/typogrify/titlecase/tests.py b/plugins/typogrify/titlecase/tests.py new file mode 100644 index 0000000..97a45e4 --- /dev/null +++ b/plugins/typogrify/titlecase/tests.py @@ -0,0 +1,174 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +"""Tests for titlecase""" + + +import os +import sys +sys.path.insert(0, os.path.join(os.path.dirname(__file__), '../')) + +from titlecase import titlecase + +TEST_DATA = ( + ( + "Q&A with steve jobs: 'that's what happens in technology'", + "Q&A With Steve Jobs: 'That's What Happens in Technology'" + ), + ( + "What is AT&T's problem?", + "What Is AT&T's Problem?" + ), + ( + "Apple deal with AT&T falls through", + "Apple Deal With AT&T Falls Through" + ), + ( + "this v that", + "This v That" + ), + ( + "this v. that", + "This v. That" + ), + ( + "this vs that", + "This vs That" + ), + ( + "this vs. that", + "This vs. That" + ), + ( + "The SEC's Apple probe: what you need to know", + "The SEC's Apple Probe: What You Need to Know" + ), + ( + "'by the Way, small word at the start but within quotes.'", + "'By the Way, Small Word at the Start but Within Quotes.'" + ), + ( + "Small word at end is nothing to be afraid of", + "Small Word at End Is Nothing to Be Afraid Of" + ), + ( + "Starting Sub-Phrase With a Small Word: a Trick, Perhaps?", + "Starting Sub-Phrase With a Small Word: A Trick, Perhaps?" + ), + ( + "Sub-Phrase With a Small Word in Quotes: 'a Trick, Perhaps?'", + "Sub-Phrase With a Small Word in Quotes: 'A Trick, Perhaps?'" + ), + ( + 'sub-phrase with a small word in quotes: "a trick, perhaps?"', + 'Sub-Phrase With a Small Word in Quotes: "A Trick, Perhaps?"' + ), + ( + '"Nothing to Be Afraid of?"', + '"Nothing to Be Afraid Of?"' + ), + ( + '"Nothing to be Afraid Of?"', + '"Nothing to Be Afraid Of?"' + ), + ( + 'a thing', + 'A Thing' + ), + ( + "2lmc Spool: 'gruber on OmniFocus and vapo(u)rware'", + "2lmc Spool: 'Gruber on OmniFocus and Vapo(u)rware'" + ), + ( + 'this is just an example.com', + 'This Is Just an example.com' + ), + ( + 'this is something listed on del.icio.us', + 'This Is Something Listed on del.icio.us' + ), + ( + 'iTunes should be unmolested', + 'iTunes Should Be Unmolested' + ), + ( + 'reading between the lines of steve jobs’s ‘thoughts on music’', + 'Reading Between the Lines of Steve Jobs’s ‘Thoughts on Music’' + ), + ( + 'seriously, ‘repair permissions’ is voodoo', + 'Seriously, ‘Repair Permissions’ Is Voodoo' + ), + ( + 'generalissimo francisco franco: still dead; kieren McCarthy: still a jackass', + 'Generalissimo Francisco Franco: Still Dead; Kieren McCarthy: Still a Jackass' + ), + ( + "O'Reilly should be untouched", + "O'Reilly Should Be Untouched" + ), + ( + "my name is o'reilly", + "My Name Is O'Reilly" + ), + ( + "WASHINGTON, D.C. SHOULD BE FIXED BUT MIGHT BE A PROBLEM", + "Washington, D.C. Should Be Fixed but Might Be a Problem" + ), + ( + "THIS IS ALL CAPS AND SHOULD BE ADDRESSED", + "This Is All Caps and Should Be Addressed" + ), + ( + "Mr McTavish went to MacDonalds", + "Mr McTavish Went to MacDonalds" + ), + ( + "this shouldn't\nget mangled", + "This Shouldn't\nGet Mangled" + ), + ( + "this is http://foo.com", + "This Is http://foo.com" + ) +) + +def test_all_caps_regex(): + """Test - all capitals regex""" + from titlecase import ALL_CAPS + assert bool(ALL_CAPS.match('THIS IS ALL CAPS')) is True + +def test_initials_regex(): + """Test - uppercase initals regex with A.B""" + from titlecase import UC_INITIALS + assert bool(UC_INITIALS.match('A.B')) is True + +def test_initials_regex_2(): + """Test - uppercase initals regex with A.B.""" + from titlecase import UC_INITIALS + assert bool(UC_INITIALS.match('A.B.')) is True + +def test_initials_regex_3(): + """Test - uppercase initals regex with ABCD""" + from titlecase import UC_INITIALS + assert bool(UC_INITIALS.match('ABCD')) is False + +def check_input_matches_expected_output(in_, out): + """Function yielded by test generator""" + try : + assert titlecase(in_) == out + except AssertionError: + print("%s != %s" % (titlecase(in_), out)) + raise + + +def test_input_output(): + """Generated tests""" + for data in TEST_DATA: + yield check_input_matches_expected_output, data[0], data[1] + + +if __name__ == "__main__": + import nose + nose.main() + -- cgit v1.2.3