2007-04-13 14:27:59 +00:00
< ? php
/* SVN FILE: $Id$ */
/**
* Short description for file .
*
* Long description for file
*
* PHP versions 4 and 5
*
* CakePHP ( tm ) Tests < https :// trac . cakephp . org / wiki / Developement / TestSuite >
2008-01-01 22:18:17 +00:00
* Copyright 2005 - 2008 , Cake Software Foundation , Inc .
2007-04-13 14:27:59 +00:00
* 1785 E . Sahara Avenue , Suite 490 - 204
* Las Vegas , Nevada 89104
*
* Licensed under The Open Group Test Suite License
* Redistributions of files must retain the above copyright notice .
*
* @ filesource
2008-01-01 22:18:17 +00:00
* @ copyright Copyright 2005 - 2008 , Cake Software Foundation , Inc .
2007-04-13 14:27:59 +00:00
* @ link https :// trac . cakephp . org / wiki / Developement / TestSuite CakePHP ( tm ) Tests
* @ package cake . tests
* @ subpackage cake . tests . cases . libs . view . helpers
* @ since CakePHP ( tm ) v 1.2 . 0.4206
* @ version $Revision $
* @ modifiedby $LastChangedBy $
* @ lastmodified $Date $
* @ license http :// www . opensource . org / licenses / opengroup . php The Open Group Test Suite License
*/
2008-05-06 20:44:47 +00:00
App :: import ( 'Core' , array ( 'Helper' , 'AppHelper' ));
App :: import ( 'Helper' , 'Text' );
2007-04-13 14:27:59 +00:00
/**
* Short description for class .
*
* @ package cake . tests
* @ subpackage cake . tests . cases . libs . view . helpers
*/
class TextTest extends UnitTestCase {
var $helper = null ;
2007-07-08 01:17:57 +00:00
2007-04-13 14:27:59 +00:00
function setUp () {
2007-07-08 01:17:57 +00:00
$this -> Text = new TextHelper ();
2007-04-13 14:27:59 +00:00
}
2008-04-23 13:23:12 +00:00
function testTruncate () {
2008-05-12 07:05:33 +00:00
if ( ! isset ( $this -> method )) {
$this -> method = 'truncate' ;
}
$m = $this -> method ;
2008-04-23 13:23:12 +00:00
$text1 = 'The quick brown fox jumps over the lazy dog' ;
$text2 = 'Heizölrückstoßabdämpfung' ;
$text3 = '<b>© 2005-2007, Cake Software Foundation, Inc.</b><br />written by Alexander Wegener' ;
$text4 = '<img src="mypic.jpg"> This image tag is not XHTML conform!<br><hr/><b>But the following image tag should be conform <img src="mypic.jpg" alt="Me, myself and I" /></b><br />Great, or?' ;
$text5 = '0<b>1<i>2<span class="myclass">3</span>4<u>5</u>6</i>7</b>8<b>9</b>0' ;
2008-05-12 07:05:33 +00:00
$this -> assertIdentical ( $this -> Text -> { $m }( $text1 , 15 ), 'The quick br...' );
$this -> assertIdentical ( $this -> Text -> { $m }( $text1 , 15 , '...' , false ), 'The quick...' );
$this -> assertIdentical ( $this -> Text -> { $m }( $text1 , 100 ), 'The quick brown fox jumps over the lazy dog' );
$this -> assertIdentical ( $this -> Text -> { $m }( $text2 , 10 , '...' ), 'Heiz&ou...' );
$this -> assertIdentical ( $this -> Text -> { $m }( $text2 , 10 , '...' , false ), '...' );
$this -> assertIdentical ( $this -> Text -> { $m }( $text3 , 20 ), '<b>© 2005-20...' );
$this -> assertIdentical ( $this -> Text -> { $m }( $text4 , 15 ), '<img src="my...' );
$this -> assertIdentical ( $this -> Text -> { $m }( $text5 , 6 , '' ), '0<b>1<' );
$this -> assertIdentical ( $this -> Text -> { $m }( $text1 , 15 , array ( 'ending' => '...' , 'exact' => true , 'considerHtml' => true )), 'The quick br...' );
$this -> assertIdentical ( $this -> Text -> { $m }( $text1 , 15 , '...' , true , true ), 'The quick br...' );
$this -> assertIdentical ( $this -> Text -> { $m }( $text1 , 15 , '...' , false , true ), 'The quick...' );
$this -> assertIdentical ( $this -> Text -> { $m }( $text2 , 10 , '...' , true , true ), 'Heizölr...' );
$this -> assertIdentical ( $this -> Text -> { $m }( $text2 , 10 , '...' , false , true ), '...' );
$this -> assertIdentical ( $this -> Text -> { $m }( $text3 , 20 , '...' , true , true ), '<b>© 2005-2007, Cake...</b>' );
$this -> assertIdentical ( $this -> Text -> { $m }( $text4 , 15 , '...' , true , true ), '<img src="mypic.jpg"> This image ...' );
$this -> assertIdentical ( $this -> Text -> { $m }( $text4 , 45 , '...' , true , true ), '<img src="mypic.jpg"> This image tag is not XHTML conform!<br><hr/><b>But t...</b>' );
$this -> assertIdentical ( $this -> Text -> { $m }( $text4 , 90 , '...' , true , true ), '<img src="mypic.jpg"> This image tag is not XHTML conform!<br><hr/><b>But the following image tag should be conform <img src="mypic.jpg" alt="Me, myself and I" /></b><br />Grea...' );
$this -> assertIdentical ( $this -> Text -> { $m }( $text5 , 6 , '' , true , true ), '0<b>1<i>2<span class="myclass">3</span>4<u>5</u></i></b>' );
$this -> assertIdentical ( $this -> Text -> { $m }( $text5 , 20 , '' , true , true ), $text5 );
if ( $this -> method == 'truncate' ) {
$this -> method = 'trim' ;
$this -> testTruncate ();
}
2008-04-23 13:23:12 +00:00
}
2007-04-13 14:27:59 +00:00
function testHighlight () {
$text = 'This is a test text' ;
$phrases = array ( 'This' , 'text' );
2007-07-08 01:17:57 +00:00
$result = $this -> Text -> highlight ( $text , $phrases , '<b>\1</b>' );
2007-04-13 14:27:59 +00:00
$expected = '<b>This</b> is a test <b>text</b>' ;
$this -> assertEqual ( $expected , $result );
2008-05-12 07:05:33 +00:00
$text = 'This is a test text' ;
$phrases = null ;
$result = $this -> Text -> highlight ( $text , $phrases , '<b>\1</b>' );
$this -> assertEqual ( $result , $text );
2007-04-13 14:27:59 +00:00
}
2007-07-08 01:17:57 +00:00
2007-09-06 05:28:36 +00:00
function testStripLinks () {
$text = 'This is a test text' ;
$expected = 'This is a test text' ;
$result = $this -> Text -> stripLinks ( $text );
$this -> assertEqual ( $expected , $result );
$text = 'This is a <a href="#">test</a> text' ;
$expected = 'This is a test text' ;
$result = $this -> Text -> stripLinks ( $text );
$this -> assertEqual ( $expected , $result );
$text = 'This <strong>is</strong> a <a href="#">test</a> <a href="#">text</a>' ;
$expected = 'This <strong>is</strong> a test text' ;
$result = $this -> Text -> stripLinks ( $text );
$this -> assertEqual ( $expected , $result );
$text = 'This <strong>is</strong> a <a href="#">test</a> and <abbr>some</abbr> other <a href="#">text</a>' ;
$expected = 'This <strong>is</strong> a test and <abbr>some</abbr> other text' ;
$result = $this -> Text -> stripLinks ( $text );
$this -> assertEqual ( $expected , $result );
}
2008-05-12 07:05:33 +00:00
function testAutoLink () {
$text = 'This is a test text' ;
$expected = 'This is a test text' ;
$result = $this -> Text -> autoLink ( $text );
$this -> assertEqual ( $expected , $result );
$text = 'Text with a partial www.cakephp.org URL and test@cakephp.org email address' ;
$result = $this -> Text -> autoLink ( $text );
$expected = 'Text with a partial <a href="http://www.cakephp.org">www.cakephp.org</a> URL and <a href="mailto:test@cakephp\.org">test@cakephp\.org</a> email address' ;
$this -> assertPattern ( '#^' . $expected . '$#' , $result );
}
2007-09-06 05:28:36 +00:00
function testAutoLinkUrls () {
$text = 'This is a test text' ;
$expected = 'This is a test text' ;
$result = $this -> Text -> autoLinkUrls ( $text );
$this -> assertEqual ( $expected , $result );
2008-05-13 03:53:26 +00:00
$text = 'This is a test that includes (www.cakephp.org)' ;
$expected = 'This is a test that includes (<a href="http://www.cakephp.org">www.cakephp.org</a>)' ;
$result = $this -> Text -> autoLinkUrls ( $text );
$this -> assertEqual ( $expected , $result );
2007-09-06 05:28:36 +00:00
$text = 'Text with a partial www.cakephp.org URL' ;
$expected = 'Text with a partial <a href="http://www.cakephp.org"\s*>www.cakephp.org</a> URL' ;
$result = $this -> Text -> autoLinkUrls ( $text );
$this -> assertPattern ( '#^' . $expected . '$#' , $result );
$text = 'Text with a partial www.cakephp.org URL' ;
$expected = 'Text with a partial <a href="http://www.cakephp.org" \s*class="link">www.cakephp.org</a> URL' ;
$result = $this -> Text -> autoLinkUrls ( $text , array ( 'class' => 'link' ));
$this -> assertPattern ( '#^' . $expected . '$#' , $result );
$text = 'Text with a partial WWW.cakephp.org URL' ;
$expected = 'Text with a partial <a href="http://www.cakephp.org"\s*>WWW.cakephp.org</a> URL' ;
$result = $this -> Text -> autoLinkUrls ( $text );
$this -> assertPattern ( '#^' . $expected . '$#' , $result );
2007-11-22 05:36:20 +00:00
$text = 'Text with a partial WWW.cakephp.org © URL' ;
$expected = 'Text with a partial <a href="http://www.cakephp.org"\s*>WWW.cakephp.org</a> © URL' ;
$result = $this -> Text -> autoLinkUrls ( $text , array ( 'escape' => false ));
$this -> assertPattern ( '#^' . $expected . '$#' , $result );
2007-09-06 05:28:36 +00:00
}
function testAutoLinkEmails () {
$text = 'This is a test text' ;
$expected = 'This is a test text' ;
$result = $this -> Text -> autoLinkUrls ( $text );
$this -> assertEqual ( $expected , $result );
$text = 'Text with email@example.com address' ;
$expected = 'Text with <a href="mailto:email@example.com"\s*>email@example.com</a> address' ;
$result = $this -> Text -> autoLinkEmails ( $text );
$this -> assertPattern ( '#^' . $expected . '$#' , $result );
$text = 'Text with email@example.com address' ;
$expected = 'Text with <a href="mailto:email@example.com" \s*class="link">email@example.com</a> address' ;
$result = $this -> Text -> autoLinkEmails ( $text , array ( 'class' => 'link' ));
$this -> assertPattern ( '#^' . $expected . '$#' , $result );
}
2007-04-21 16:55:09 +00:00
function testHighlightCaseInsensitivity () {
$text = 'This is a Test text' ;
$expected = 'This is a <b>Test</b> text' ;
2007-07-08 01:17:57 +00:00
$result = $this -> Text -> highlight ( $text , 'test' , '<b>\1</b>' );
2007-04-21 16:55:09 +00:00
$this -> assertEqual ( $expected , $result );
2007-07-08 01:17:57 +00:00
$result = $this -> Text -> highlight ( $text , array ( 'test' ), '<b>\1</b>' );
2007-04-21 16:55:09 +00:00
$this -> assertEqual ( $expected , $result );
}
2007-04-13 14:27:59 +00:00
2007-09-06 05:28:36 +00:00
function testExcerpt () {
$text = 'This is a phrase with test text to play with' ;
$expected = '...with test text...' ;
$result = $this -> Text -> excerpt ( $text , 'test' , 9 , '...' );
$this -> assertEqual ( $expected , $result );
$expected = 'This is a...' ;
$result = $this -> Text -> excerpt ( $text , 'not_found' , 9 , '...' );
$this -> assertEqual ( $expected , $result );
2008-05-12 07:05:33 +00:00
$expected = 'This is a phras...' ;
$result = $this -> Text -> excerpt ( $text , null , 9 , '...' );
$this -> assertEqual ( $expected , $result );
$expected = $text ;
$result = $this -> Text -> excerpt ( $text , null , 200 , '...' );
$this -> assertEqual ( $expected , $result );
$expected = '...phrase...' ;
$result = $this -> Text -> excerpt ( $text , 'phrase' , 2 , '...' );
$this -> assertEqual ( $expected , $result );
2007-09-06 05:28:36 +00:00
}
function testExcerptCaseInsensitivity () {
$text = 'This is a phrase with test text to play with' ;
$expected = '...with test text...' ;
$result = $this -> Text -> excerpt ( $text , 'TEST' , 9 , '...' );
$this -> assertEqual ( $expected , $result );
$expected = 'This is a...' ;
$result = $this -> Text -> excerpt ( $text , 'NOT_FOUND' , 9 , '...' );
$this -> assertEqual ( $expected , $result );
}
2008-05-12 07:05:33 +00:00
function testListGeneration () {
$result = $this -> Text -> toList ( array ( 'Larry' , 'Curly' , 'Moe' ));
$this -> assertEqual ( $result , 'Larry, Curly and Moe' );
2008-05-06 20:44:47 +00:00
2008-05-12 07:05:33 +00:00
$result = $this -> Text -> toList ( array ( 'Dusty' , 'Lucky' , 'Ned' ), 'y' );
$this -> assertEqual ( $result , 'Dusty, Lucky y Ned' );
}
2008-05-06 20:44:47 +00:00
2007-04-13 14:27:59 +00:00
function tearDown () {
2007-07-08 01:17:57 +00:00
unset ( $this -> Text );
2007-04-13 14:27:59 +00:00
}
}
?>