2009-02-12 10:38:43 +01:00
< ? php
/**
2012-04-12 08:02:46 +02:00
* @ package framework
2009-02-12 10:38:43 +01:00
* @ subpackage tests
*/
class HTMLTextTest extends SapphireTest {
/**
2009-02-12 10:40:14 +01:00
* Test { @ link HTMLText -> LimitCharacters ()}
2009-02-12 10:38:43 +01:00
*/
2012-09-19 12:07:39 +02:00
public function testLimitCharacters () {
2009-02-12 10:38:43 +01:00
$cases = array (
'The little brown fox jumped over the lazy cow.' => 'The little brown fox...' ,
2010-11-29 04:18:02 +01:00
'<p>This is some text in a paragraph.</p>' => 'This is some text in...' ,
'This text contains & in it' => 'This text contains &...'
2009-02-12 10:38:43 +01:00
);
foreach ( $cases as $originalValue => $expectedValue ) {
$textObj = new HTMLText ( 'Test' );
$textObj -> setValue ( $originalValue );
$this -> assertEquals ( $expectedValue , $textObj -> LimitCharacters ());
}
}
2012-09-19 12:07:39 +02:00
public function testSummaryBasics () {
2009-06-17 13:36:49 +02:00
$cases = array (
'<h1>Should not take header</h1><p>Should take paragraph</p>' => 'Should take paragraph' ,
'<p>Should strip <b>tags, but leave</b> text</p>' => 'Should strip tags, but leave text' ,
'<p>Unclosed tags <br>should not phase it</p>' => 'Unclosed tags should not phase it' ,
2011-03-21 22:29:48 +01:00
'<p>Second paragraph</p><p>should not cause errors or appear in output</p>' => 'Second paragraph' ,
2012-09-26 23:34:00 +02:00
'<img src="hello" /><p>Second paragraph</p><p>should not cause errors or appear in output</p>'
=> 'Second paragraph' ,
' <img src="hello" /><p>Second paragraph</p><p>should not cause errors or appear in output</p>'
=> 'Second paragraph' ,
'<p><img src="remove me">example <img src="include me">text words hello<img src="hello"></p>'
=> 'example text words hello' ,
2009-06-17 13:36:49 +02:00
);
foreach ( $cases as $originalValue => $expectedValue ) {
$textObj = new HTMLText ( 'Test' );
$textObj -> setValue ( $originalValue );
$this -> assertEquals ( $expectedValue , $textObj -> Summary ());
}
}
2012-09-19 12:07:39 +02:00
public function testSummaryLimits () {
2009-06-17 13:36:49 +02:00
$cases = array (
'<p>A long paragraph should be cut off if limit is set</p>' => 'A long paragraph should be...' ,
'<p>No matter <i>how many <b>tags</b></i> are in it</p>' => 'No matter how many tags...' ,
'<p>A sentence is. nicer than hard limits</p>' => 'A sentence is.' ,
'<p>But not. If it\'s too short</p>' => 'But not. If it\'s too...'
);
foreach ( $cases as $originalValue => $expectedValue ) {
$textObj = new HTMLText ( 'Test' );
$textObj -> setValue ( $originalValue );
$this -> assertEquals ( $expectedValue , $textObj -> Summary ( 5 , 3 , '...' ));
}
}
2012-09-19 12:07:39 +02:00
public function testSummaryEndings () {
2009-06-17 13:36:49 +02:00
$cases = array (
'...' , ' -> more' , ''
);
$orig = '<p>Cut it off, cut it off</p>' ;
$match = 'Cut it off, cut' ;
foreach ( $cases as $add ) {
$textObj = new HTMLText ();
$textObj -> setValue ( $orig );
$this -> assertEquals ( $match . $add , $textObj -> Summary ( 4 , 0 , $add ));
}
}
2012-09-19 12:07:39 +02:00
public function testSummaryFlexTooBigShouldNotCauseError () {
2009-06-17 13:36:49 +02:00
$orig = '<p>Cut it off, cut it off</p>' ;
$match = 'Cut it off, cut' ;
$textObj = new HTMLText ();
$textObj -> setValue ( $orig );
$this -> assertEquals ( $match , $textObj -> Summary ( 4 , 10 , '' ));
}
2012-09-19 12:07:39 +02:00
public function testSummaryInvalidHTML () {
2009-06-17 13:36:49 +02:00
$cases = array (
2012-09-26 23:34:00 +02:00
'It\'s got a <p<> tag, but<p junk true>This doesn\'t <a id="boo">make</b class="wa"> < ><any< sense</p>'
=> 'This doesn\'t make any' ,
2009-06-17 13:36:49 +02:00
'This doesn\'t <a style="much horray= true>even</b> < ><have< a <i>p tag' => 'This doesn\'t even have'
);
foreach ( $cases as $orig => $match ) {
$textObj = new HTMLText ();
$textObj -> setValue ( $orig );
$this -> assertEquals ( $match , $textObj -> Summary ( 4 , 0 , '' ));
}
}
2012-09-19 12:07:39 +02:00
public function testFirstSentence () {
2009-06-17 13:36:49 +02:00
$many = str_repeat ( 'many ' , 100 );
$cases = array (
'<h1>should ignore</h1><p>First sentence. Second sentence.</p>' => 'First sentence.' ,
'<h1>should ignore</h1><p>First Mr. sentence. Second sentence.</p>' => 'First Mr. sentence.' ,
2012-09-26 23:34:00 +02:00
" <h1>should ignore</h1><p>Sentence with { $many } words. Second sentence.</p> "
=> " Sentence with { $many } words. " ,
2013-05-01 06:03:58 +02:00
'<p>This classic picture book features a repetitive format that lends itself to audience interaction. Illustrator Eric Carle submitted new, bolder artwork for the 25th anniversary edition.</p>'
=> 'This classic picture book features a repetitive format that lends itself to audience interaction.'
2009-06-17 13:36:49 +02:00
);
foreach ( $cases as $orig => $match ) {
$textObj = new HTMLText ();
$textObj -> setValue ( $orig );
$this -> assertEquals ( $match , $textObj -> FirstSentence ());
}
}
2012-01-31 01:07:24 +01:00
public function testRAW () {
2012-03-27 06:57:42 +02:00
$data = DBField :: create_field ( 'HTMLText' , 'This & This' );
2012-01-31 01:07:24 +01:00
$this -> assertEquals ( $data -> RAW (), 'This & This' );
2012-03-27 06:57:42 +02:00
$data = DBField :: create_field ( 'HTMLText' , 'This & This' );
2012-01-31 01:07:24 +01:00
$this -> assertEquals ( $data -> RAW (), 'This & This' );
}
public function testXML () {
2012-03-27 06:57:42 +02:00
$data = DBField :: create_field ( 'HTMLText' , 'This & This' );
2012-01-31 01:07:24 +01:00
$this -> assertEquals ( $data -> XML (), 'This & This' );
}
public function testHTML () {
2012-03-27 06:57:42 +02:00
$data = DBField :: create_field ( 'HTMLText' , 'This & This' );
2012-01-31 01:07:24 +01:00
$this -> assertEquals ( $data -> HTML (), 'This & This' );
}
public function testJS () {
2012-03-27 06:57:42 +02:00
$data = DBField :: create_field ( 'HTMLText' , '"this is a test"' );
2012-01-31 01:07:24 +01:00
$this -> assertEquals ( $data -> JS (), '\"this is a test\"' );
}
public function testATT () {
2012-03-27 06:57:42 +02:00
$data = DBField :: create_field ( 'HTMLText' , '"this is a test"' );
2012-01-31 01:07:24 +01:00
$this -> assertEquals ( $data -> ATT (), '"this is a test"' );
}
2011-12-12 06:44:47 +01:00
function testExists () {
$h = new HTMLText ;
$h -> setValue ( " " );
$this -> assertFalse ( $h -> exists ());
$h -> setValue ( " <p></p> " );
$this -> assertFalse ( $h -> exists ());
$h -> setValue ( " <p> </p> " );
$this -> assertFalse ( $h -> exists ());
$h -> setValue ( " <h2/> " );
$this -> assertFalse ( $h -> exists ());
$h -> setValue ( " <h2></h2> " );
$this -> assertFalse ( $h -> exists ());
$h -> setValue ( " something " );
$this -> assertTrue ( $h -> exists ());
$h -> setValue ( " <img src= \" dummy.png \" > " );
$this -> assertTrue ( $h -> exists ());
$h -> setValue ( " <img src= \" dummy.png \" ><img src= \" dummy.png \" > " );
$this -> assertTrue ( $h -> exists ());
$h -> setValue ( " <p><img src= \" dummy.png \" ></p> " );
$this -> assertTrue ( $h -> exists ());
$h -> setValue ( " <iframe src= \" http://www.google.com \" ></iframe> " );
$this -> assertTrue ( $h -> exists ());
$h -> setValue ( " <embed src= \" test.swf \" > " );
$this -> assertTrue ( $h -> exists ());
$h -> setValue ( " <object width= \" 400 \" height= \" 400 \" data= \" test.swf \" ></object> " );
$this -> assertTrue ( $h -> exists ());
$h -> setValue ( " <p>test</p> " );
$this -> assertTrue ( $h -> exists ());
}
2009-02-12 10:38:43 +01:00
}