summaryrefslogtreecommitdiff
path: root/plugins/typogrify/titlecase/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/typogrify/titlecase/tests.py')
-rw-r--r--plugins/typogrify/titlecase/tests.py174
1 files changed, 174 insertions, 0 deletions
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()
+