WordPress.org

Make WordPress Core

Ticket #22692: WPTexturize.php.3.diff

File WPTexturize.php.3.diff, 18.9 KB (added by miqrogroove, 7 years ago)
  • WPTexturize.php

     
    1414                $this->assertEquals('[a]a–b[code]---[/code]a–b[/a]', wptexturize('[a]a--b[code]---[/code]a--b[/a]'));
    1515                $this->assertEquals('<pre><code></code>--</pre>', wptexturize('<pre><code></code>--</pre>'));
    1616
    17                 $this->assertEquals('<code>---</code>', wptexturize('<code>---</code>'));
     17                $this->assertEquals( '<code>---</code>',     wptexturize( '<code>---</code>'     ) );
     18                $this->assertEquals( '<kbd>---</kbd>',       wptexturize( '<kbd>---</kbd>'       ) );
     19                $this->assertEquals( '<style>---</style>',   wptexturize( '<style>---</style>'   ) );
     20                $this->assertEquals( '<script>---</script>', wptexturize( '<script>---</script>' ) );
     21                $this->assertEquals( '<tt>---</tt>',         wptexturize( '<tt>---</tt>'         ) );
    1822
    1923                $this->assertEquals('<code>href="baba"</code> &#8220;baba&#8221;', wptexturize('<code>href="baba"</code> "baba"'));
    2024
     
    4448        //WP Ticket #4539
    4549        function test_basic_quotes() {
    4650                $this->assertEquals('test&#8217;s', wptexturize('test\'s'));
    47                 $this->assertEquals('test&#8217;s', wptexturize('test\'s'));
    4851
    4952                $this->assertEquals('&#8216;quoted&#8217;', wptexturize('\'quoted\''));
    5053                $this->assertEquals('&#8220;quoted&#8221;', wptexturize('"quoted"'));
     
    184187         * @ticket 23185
    185188         */
    186189        function test_spaces_around_hyphens() {
     190                $nbsp = "\xC2\xA0";
     191
    187192                $this->assertEquals( ' &#8211; ', wptexturize( ' - ' ) );
    188193                $this->assertEquals( '&nbsp;&#8211;&nbsp;', wptexturize( '&nbsp;-&nbsp;' ) );
    189194                $this->assertEquals( ' &#8211;&nbsp;', wptexturize( ' -&nbsp;' ) );
    190195                $this->assertEquals( '&nbsp;&#8211; ', wptexturize( '&nbsp;- ') );
     196                $this->assertEquals( "$nbsp&#8211;$nbsp", wptexturize( "$nbsp-$nbsp" ) );
     197                $this->assertEquals( " &#8211;$nbsp", wptexturize( " -$nbsp" ) );
     198                $this->assertEquals( "$nbsp&#8211; ", wptexturize( "$nbsp- ") );
    191199
    192200                $this->assertEquals( ' &#8212; ', wptexturize( ' -- ' ) );
    193201                $this->assertEquals( '&nbsp;&#8212;&nbsp;', wptexturize( '&nbsp;--&nbsp;' ) );
    194202                $this->assertEquals( ' &#8212;&nbsp;', wptexturize( ' --&nbsp;' ) );
    195203                $this->assertEquals( '&nbsp;&#8212; ', wptexturize( '&nbsp;-- ') );
     204                $this->assertEquals( "$nbsp&#8212;$nbsp", wptexturize( "$nbsp--$nbsp" ) );
     205                $this->assertEquals( " &#8212;$nbsp", wptexturize( " --$nbsp" ) );
     206                $this->assertEquals( "$nbsp&#8212; ", wptexturize( "$nbsp-- ") );
    196207        }
     208
     209        /**
     210         * @ticket 22692
     211         */
     212        function test_spaces_around_quotes() {
     213                $nbsp = "\xC2\xA0";
     214                $pi   = "\xCE\xA0";
     215
     216                // This should never happen, even if the desired output changes some day.
     217
     218                $problem_input  = "$nbsp\"A";
     219                $problem_output = "$nbsp&#8221;A";
     220
     221                $this->assertNotEquals( $problem_output, wptexturize( $problem_input ) );
     222
     223                // These are desirable outputs for the current design.
     224
     225                $input  = array();
     226                $output = array();
     227
     228                $input[]  = "stop. $nbsp\"A quote after 2 spaces.\"";
     229                $output[] = "stop. $nbsp&#8220;A quote after 2 spaces.&#8221;";
     230
     231                $input[]  = "stop.$nbsp$nbsp\"A quote after 2 spaces.\"";
     232                $output[] = "stop.$nbsp$nbsp&#8220;A quote after 2 spaces.&#8221;";
     233
     234                $input[]  = "stop. $nbsp'A quote after 2 spaces.'";
     235                $output[] = "stop. $nbsp&#8216;A quote after 2 spaces.&#8217;";
     236
     237                $input[]  = "stop.$nbsp$nbsp'A quote after 2 spaces.'";
     238                $output[] = "stop.$nbsp$nbsp&#8216;A quote after 2 spaces.&#8217;";
     239
     240                $input[]  = "stop. &nbsp;\"A quote after 2 spaces.\"";
     241                $output[] = "stop. &nbsp;&#8220;A quote after 2 spaces.&#8221;";
     242
     243                $input[]  = "stop.&nbsp;&nbsp;\"A quote after 2 spaces.\"";
     244                $output[] = "stop.&nbsp;&nbsp;&#8220;A quote after 2 spaces.&#8221;";
     245
     246                $input[]  = "stop. &nbsp;'A quote after 2 spaces.'";
     247                $output[] = "stop. &nbsp;&#8216;A quote after 2 spaces.&#8217;";
     248
     249                $input[]  = "stop.&nbsp;&nbsp;'A quote after 2 spaces.'";
     250                $output[] = "stop.&nbsp;&nbsp;&#8216;A quote after 2 spaces.&#8217;";
     251
     252                $input[]  = "Contraction: $pi's";
     253                $output[] = "Contraction: $pi&#8217;s";
     254
     255                foreach($input as $key => $in) {
     256                        $this->assertEquals( $output[$key], wptexturize( $in ) );
     257                }
     258        }
     259
     260        /**
     261         * Check all baseline patterns.  If anything ever changes in wptexturize(), these tests may fail.
     262         *
     263         * @ticket 22692
     264         */
     265        function test_all_regexp_behaviors() {
     266                $input  = array();
     267                $output = array();
     268
     269                // Apostrophe before a number always becomes &#8217 (apos);
     270
     271                $input[]  = "word '99 word";
     272                $output[] = "word &#8217;99 word";
     273
     274                $input[]  = "word'99 word";
     275                $output[] = "word&#8217;99 word";
     276
     277                $input[]  = "word '99word";
     278                $output[] = "word &#8217;99word";
     279
     280                $input[]  = "word'99word";
     281                $output[] = "word&#8217;99word";
     282
     283                $input[]  = "word '99&#8217;s word"; // Appears as a separate but logically superfluous pattern in 3.8.
     284                $output[] = "word &#8217;99&#8217;s word";
     285
     286                $input[]  = "word '99's word"; // Due to the logic error, second apos becomes a prime.  See ticket #22823
     287                $output[] = "word &#8217;99&#8242;s word";
     288
     289                $input[]  = "word '99'samsonite";
     290                $output[] = "word &#8217;99&#8242;samsonite";
     291
     292                $input[]  = "according to our source, '33% of all students scored less than 50' on the test."; // Apostrophes and primes have priority over quotes
     293                $output[] = "according to our source, &#8217;33% of all students scored less than 50&#8242; on the test.";
     294
     295                $input[]  = "word '99' word"; // See ticket #8775
     296                $output[] = "word &#8217;99&#8242; word";
     297
     298                // Apostrophe after a space or ([{<" becomes &#8216; (opening_single_quote)
     299
     300                $input[]  = "word 'word word";
     301                $output[] = "word &#8216;word word";
     302
     303                $input[]  = "word ('word word";
     304                $output[] = "word (&#8216;word word";
     305
     306                $input[]  = "word ['word word";
     307                $output[] = "word [&#8216;word word";
     308
     309                $input[]  = "word <'word word"; // Invalid HTML input?
     310                $output[] = "word <&#8216;word word";
     311
     312                $input[]  = "word &lt;'word word"; // Valid HTML input triggers the apos in a word pattern
     313                $output[] = "word &lt;&#8217;word word";
     314
     315                $input[]  = "word {'word word";
     316                $output[] = "word {&#8216;word word";
     317
     318                $input[]  = "word \"'word word";
     319                $output[] = "word &#8220;&#8216;word word"; // Two opening quotes
     320
     321                $input[]  = "'word word";
     322                $output[] = "&#8216;word word";
     323
     324                $input[]  = "word('word word";
     325                $output[] = "word(&#8216;word word";
     326
     327                $input[]  = "word['word word";
     328                $output[] = "word[&#8216;word word";
     329
     330                $input[]  = "word<'word word";
     331                $output[] = "word<&#8216;word word";
     332
     333                $input[]  = "word&lt;'word word";
     334                $output[] = "word&lt;&#8217;word word";
     335
     336                $input[]  = "word{'word word";
     337                $output[] = "word{&#8216;word word";
     338
     339                $input[]  = "word\"'word word";
     340                $output[] = "word&#8221;&#8216;word word"; // Closing quote, then opening quote
     341
     342                $input[]  = "word ' word word";
     343                $output[] = "word &#8216; word word";
     344
     345                $input[]  = "word (' word word";
     346                $output[] = "word (&#8216; word word";
     347
     348                $input[]  = "word [' word word";
     349                $output[] = "word [&#8216; word word";
     350
     351                $input[]  = "word <' word word"; // Invalid HTML input?
     352                $output[] = "word <&#8216; word word";
     353
     354                $input[]  = "word &lt;' word word"; // Valid HTML input triggers the closing single quote here
     355                $output[] = "word &lt;&#8217; word word";
     356
     357                $input[]  = "word {' word word";
     358                $output[] = "word {&#8216; word word";
     359
     360                $input[]  = "word \"' word word";
     361                $output[] = "word &#8220;&#8216; word word"; // Two opening quotes
     362
     363                $input[]  = "' word word";
     364                $output[] = "&#8216; word word";
     365
     366                $input[]  = "word(' word word";
     367                $output[] = "word(&#8216; word word";
     368
     369                $input[]  = "word[' word word";
     370                $output[] = "word[&#8216; word word";
     371
     372                $input[]  = "word<' word word";
     373                $output[] = "word<&#8216; word word";
     374
     375                $input[]  = "word&lt;' word word";
     376                $output[] = "word&lt;&#8217; word word";
     377
     378                $input[]  = "word{' word word";
     379                $output[] = "word{&#8216; word word";
     380
     381                $input[]  = "word\"' word word";
     382                $output[] = "word&#8221;&#8216; word word"; // Closing quote, then opening quote
     383
     384                // Double quote after a number becomes &#8243; (double_prime)
     385
     386                $input[]  = 'word 99" word';
     387                $output[] = 'word 99&#8243; word';
     388
     389                $input[]  = 'word 99"word';
     390                $output[] = 'word 99&#8243;word';
     391
     392                $input[]  = 'word99" word';
     393                $output[] = 'word99&#8243; word';
     394
     395                $input[]  = 'word99"word';
     396                $output[] = 'word99&#8243;word';
     397
     398                // Apostrophe after a number becomes &#8242; (prime)
     399
     400                $input[]  = "word 99' word";
     401                $output[] = "word 99&#8242; word";
     402
     403                $input[]  = "word 99'word";
     404                $output[] = "word 99&#8242;word";
     405
     406                $input[]  = "word99' word";
     407                $output[] = "word99&#8242; word";
     408
     409                $input[]  = "word99'word";
     410                $output[] = "word99&#8242;word";
     411
     412                // Apostrophe "in a word" becomes &#8217; (apos)
     413
     414                $input[]  = "word word's word";
     415                $output[] = "word word&#8217;s word";
     416
     417                $input[]  = "word word'. word"; // Quotes with outside punctuation could end with apostrophes instead of closing quotes (may affect i18n)
     418                $output[] = "word word&#8217;. word";
     419
     420                $input[]  = "word ]'. word";
     421                $output[] = "word ]&#8217;. word";
     422
     423                $input[]  = "word )'. word";
     424                $output[] = "word )&#8217;. word";
     425
     426                $input[]  = "word }'. word";
     427                $output[] = "word }&#8217;. word";
     428
     429                $input[]  = "word >'. word"; // Not tested
     430                $output[] = "word >&#8217;. word";
     431
     432                $input[]  = "word &gt;'. word";
     433                $output[] = "word &gt;&#8217;. word";
     434
     435                // Double quote after a space or ([{< becomes &#8220; (opening_quote) if not followed by spaces
     436
     437                $input[]  = 'word "word word';
     438                $output[] = 'word &#8220;word word';
     439
     440                $input[]  = 'word ("word word';
     441                $output[] = 'word (&#8220;word word';
     442
     443                $input[]  = 'word ["word word';
     444                $output[] = 'word [&#8220;word word';
     445
     446                $input[]  = 'word <"word word'; // Invalid HTML input?
     447                $output[] = 'word <&#8220;word word';
     448
     449                $input[]  = 'word &lt;"word word'; // Valid HTML input triggers the closing quote pattern
     450                $output[] = 'word &lt;&#8221;word word';
     451
     452                $input[]  = 'word {"word word';
     453                $output[] = 'word {&#8220;word word';
     454
     455                $input[]  = '"word word';
     456                $output[] = '&#8220;word word';
     457
     458                $input[]  = 'word("word word';
     459                $output[] = 'word(&#8220;word word';
     460
     461                $input[]  = 'word["word word';
     462                $output[] = 'word[&#8220;word word';
     463
     464                $input[]  = 'word<"word word'; // Invalid HTML input?
     465                $output[] = 'word<&#8220;word word';
     466
     467                $input[]  = 'word&lt;"word word'; // Valid HTML input triggers the closing quote pattern
     468                $output[] = 'word&lt;&#8221;word word';
     469
     470                $input[]  = 'word{"word word';
     471                $output[] = 'word{&#8220;word word';
     472
     473                $input[]  = 'word "99 word';
     474                $output[] = 'word &#8220;99 word';
     475
     476                // Double quote becomes &#8221; (closing_quote) unless it is already converted to double_prime or opening_quote.
     477
     478                $input[]  = 'word word" word';
     479                $output[] = 'word word&#8221; word';
     480
     481                $input[]  = 'word word") word';
     482                $output[] = 'word word&#8221;) word';
     483
     484                $input[]  = 'word word"] word';
     485                $output[] = 'word word&#8221;] word';
     486
     487                $input[]  = 'word word"} word';
     488                $output[] = 'word word&#8221;} word';
     489
     490                $input[]  = 'word word"> word'; // Invalid HTML input?
     491                $output[] = 'word word&#8221;> word';
     492
     493                $input[]  = 'word word"&gt; word'; // Valid HTML should work
     494                $output[] = 'word word&#8221;&gt; word';
     495
     496                $input[]  = 'word word"';
     497                $output[] = 'word word&#8221;';
     498
     499                $input[]  = 'word word"word';
     500                $output[] = 'word word&#8221;word';
     501
     502                $input[]  = 'word"word"word';
     503                $output[] = 'word&#8221;word&#8221;word';
     504
     505                $input[]  = 'test sentence".';
     506                $output[] = 'test sentence&#8221;.';
     507
     508                $input[]  = 'test sentence."';
     509                $output[] = 'test sentence.&#8221;';
     510
     511                $input[]  = 'test sentence". word';
     512                $output[] = 'test sentence&#8221;. word';
     513
     514                $input[]  = 'test sentence." word';
     515                $output[] = 'test sentence.&#8221; word';
     516
     517                // Single quote followed by a space or a period becomes &#8217; (closing_single_quote)
     518
     519                $input[]  = "word word' word";
     520                $output[] = "word word&#8217; word";
     521
     522                $input[]  = "word word'. word";
     523                $output[] = "word word&#8217;. word";
     524
     525                $input[]  = "word word'.word";
     526                $output[] = "word word&#8217;.word";
     527
     528                $input[]  = "word word'";
     529                $output[] = "word word&#8217;";
     530
     531                $input[]  = "test sentence'.";
     532                $output[] = "test sentence&#8217;.";
     533
     534                $input[]  = "test sentence.'";
     535                $output[] = "test sentence.&#8217;";
     536
     537                $input[]  = "test sentence'. word";
     538                $output[] = "test sentence&#8217;. word";
     539
     540                $input[]  = "test sentence.' word";
     541                $output[] = "test sentence.&#8217; word";
     542
     543                // 9x9 becomes 9&#215;9
     544
     545                $input[]  = "9x9";
     546                $output[] = "9&#215;9";
     547
     548                $input[]  = "12x34";
     549                $output[] = "12&#215;34";
     550
     551                $input[]  = "9 x 9";
     552                $output[] = "9 x 9";
     553
     554                // & always becomes &#038; unless it is followed by # or ;
     555
     556                $input[]  = "word & word";
     557                $output[] = "word &#038; word";
     558
     559                $input[]  = "word&word";
     560                $output[] = "word&#038;word";
     561
     562                $input[]  = "word &nbsp; word";
     563                $output[] = "word &nbsp; word";
     564
     565                $input[]  = "word &#038; word";
     566                $output[] = "word &#038; word";
     567
     568                $input[]  = "word &# word";
     569                $output[] = "word &# word"; // invalid output?
     570
     571                $input[]  = "word &44; word";
     572                $output[] = "word &44; word";
     573
     574
     575                foreach($input as $key => $in) {
     576                        $this->assertEquals( $output[$key], wptexturize( $in ) );
     577                }
     578        }
     579
     580
     581
     582        /**
     583         * Check all baseline patterns.  If anything ever changes in wptexturize(), these tests may fail.
     584         *
     585         * @ticket 22692
     586         */
     587        function test_all_static_behaviors() {
     588                $input  = array();
     589                $output = array();
     590
     591                // "cockney" phrases begin with apos instead of opening_single_quote.
     592
     593                $input[]  = "word 'tain't word";
     594                $output[] = "word &#8217;tain&#8217;t word";
     595
     596                $input[]  = "word 'twere word";
     597                $output[] = "word &#8217;twere word";
     598
     599                $input[]  = "word 'twas word";
     600                $output[] = "word &#8217;twas word";
     601
     602                $input[]  = "word 'tis word";
     603                $output[] = "word &#8217;tis word";
     604
     605                $input[]  = "word 'twill word";
     606                $output[] = "word &#8217;twill word";
     607
     608                $input[]  = "word 'til word";
     609                $output[] = "word &#8217;til word";
     610
     611                $input[]  = "word 'bout word";
     612                $output[] = "word &#8217;bout word";
     613
     614                $input[]  = "word 'nuff word";
     615                $output[] = "word &#8217;nuff word";
     616
     617                $input[]  = "word 'round word";
     618                $output[] = "word &#8217;round word";
     619
     620                $input[]  = "word 'cause word";
     621                $output[] = "word &#8217;cause word";
     622
     623                $input[]  = "word 'em word";
     624                $output[] = "word &#8216;em word";
     625
     626                // Smart dashes, etc
     627
     628                $input[]  = "word --- word";
     629                $output[] = "word &#8212; word";
     630
     631                $input[]  = "word---word";
     632                $output[] = "word&#8212;word";
     633
     634                $input[]  = "word -- word";
     635                $output[] = "word &#8212; word";
     636
     637                $input[]  = "word--word";
     638                $output[] = "word&#8211;word";
     639
     640                $input[]  = "word - word";
     641                $output[] = "word &#8211; word";
     642
     643                $input[]  = "word-word";
     644                $output[] = "word-word";
     645
     646                $input[]  = "word xn&#8211; word";
     647                $output[] = "word xn-- word";
     648
     649                $input[]  = "wordxn&#8211;word";
     650                $output[] = "wordxn--word";
     651
     652                $input[]  = "word ... word";
     653                $output[] = "word &#8230; word";
     654
     655                $input[]  = "word...word";
     656                $output[] = "word&#8230;word";
     657
     658                $input[]  = "word `` word";
     659                $output[] = "word &#8220; word";
     660
     661                $input[]  = "word``word";
     662                $output[] = "word&#8220;word";
     663
     664                $input[]  = "word '' word";
     665                $output[] = "word &#8221; word";
     666
     667                $input[]  = "word''word";
     668                $output[] = "word&#8221;word";
     669
     670                $input[]  = "word (tm) word";
     671                $output[] = "word &#8482; word";
     672
     673                $input[]  = "word (tm)word";
     674                $output[] = "word &#8482;word";
     675
     676                $input[]  = "word(tm) word";
     677                $output[] = "word(tm) word";
     678
     679                $input[]  = "word(tm)word";
     680                $output[] = "word(tm)word";
     681
     682                foreach($input as $key => $in) {
     683                        $this->assertEquals( $output[$key], wptexturize( $in ) );
     684                }
     685        }
     686
     687
     688        /**
     689         * All of these tests fail against 3.8 but were not yet listed above.
     690         *
     691         * @ticket 22692
     692         */
     693        function test_more_bugs() {
     694                $input  = array();
     695                $output = array();
     696
     697                // Tests derived from, and contrary to, the baseline patterns above, where output seemed unusual
     698
     699                $input[]  = "according to our source, '33% of all students scored less than 50' on the test.";
     700                $output[] = "according to our source, &#8216;33% of all students scored less than 50&#8217; on the test.";
     701
     702                $input[]  = 'according to our source, "33% of all students scored less than 50" on the test.';
     703                $output[] = 'according to our source, &#8220;33% of all students scored less than 50&#8221; on the test.';
     704
     705                $input[]  = "word &lt;'test quote'&rt; word";
     706                $output[] = "word &lt;&#8216;test quote&#8217;&rt; word";
     707
     708                $input[]  = 'word &lt;"test quote"&rt; word';
     709                $output[] = 'word &lt;&#8220;test quote&#8221;&rt; word';
     710
     711                $input[]  = "word 'em word";
     712                $output[] = "word &#8217;em word";
     713
     714                $input[]  = "word xn&#8211; word";
     715                $output[] = "word xn&#8211; word";
     716
     717                $input[]  = "wordxn&#8211;word";
     718                $output[] = "wordxn&#8211;word";
     719
     720                // ticket #4116
     721
     722                $input[]  = "www.4x3.com";
     723                $output[] = "www.4x3.com";
     724
     725                $input[]  = "4x3.domain.com";
     726                $output[] = "4x3.domain.com";
     727
     728                $input[]  = "<a href='http://www.24x7.com/'>http://www.24x7.com/</a>";
     729                $output[] = "<a href='http://www.24x7.com/'>http://www.24x7.com/</a>";
     730
     731                $input[]  = "<a href='http://www.domain.com/24x7/'>http://www.domain.com/24x7/</a>";
     732                $output[] = "<a href='http://www.domain.com/24x7/'>http://www.domain.com/24x7/</a>";
     733
     734                // ticket #6969 -- Some of these appear to be fixed already.
     735
     736                $input[]  = '[caption]<img src="http://localhost/Great_Wave.jpg" alt="Great Wave" title="Great Wave" width="300" height="205" /> The Great Wave[/caption]';
     737                $output[] = '[caption]<img src="http://localhost/Great_Wave.jpg" alt="Great Wave" title="Great Wave" width="300" height="205" /> The Great Wave[/caption]';
     738
     739                $input[]  = '[code lang="php"]$foo = \'bar\';[/code]';
     740                $output[] = '[code lang="php"]$foo = \'bar\';[/code]';
     741
     742                $input[]  = '[foobar]This is how you "quote" things.[/foobar]';
     743                $output[] = '[foobar]This is how you "quote" things.[/foobar]';
     744
     745                $input[]  = "<pre>\n[[php foo=\"bar\"]\necho \"foo\" . 'bar';\n[/php]]\n</pre>";
     746                $output[] = "<pre>\n[[php foo=\"bar\"]\necho \"foo\" . 'bar';\n[/php]]\n</pre>";
     747
     748                $input[]  = "foo[shortcode]\n\"bar\"\n[/shortcode]foo";
     749                $output[] = "foo[shortcode]\n\"bar\"\n[/shortcode]foo";
     750
     751                // ticket #20342
     752
     753                $input[]  = 'word---"quote"';
     754                $output[] = 'word&#8212;&#8220;quote&#8221;';
     755
     756                $input[]  = 'word--"quote"';
     757                $output[] = 'word&#8211;&#8220;quote&#8221;';
     758
     759                $input[]  = 'word-"quote"';
     760                $output[] = 'word-&#8220;quote&#8221;';
     761
     762                // ticket #26850
     763
     764                $input[]  = "in '4 years, 3 months,' Obama cut the deficit";
     765                $output[] = "in &#8216;4 years, 3 months,&#8217; Obama cut the deficit";
     766
     767                $input[]  = "in '40 years, 3 months,' Obama cut the deficit";
     768                $output[] = "in &#8216;40 years, 3 months,&#8217; Obama cut the deficit";
     769
     770                $input[]  = "in '400 years, 3 months,' Obama cut the deficit";
     771                $output[] = "in &#8216;400 years, 3 months,&#8217; Obama cut the deficit";
     772
     773                foreach($input as $key => $in) {
     774                        $this->assertEquals( $output[$key], wptexturize( $in ) );
     775                }
     776        }
    197777}