diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000000..d3fffc6936
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,4 @@
+---
+language: php
+php: 5.6
+install: composer install
diff --git a/phpunit.xml b/phpunit.xml
new file mode 100644
index 0000000000..6a275ad3fc
--- /dev/null
+++ b/phpunit.xml
@@ -0,0 +1,8 @@
+
+
+
+
+ tests/
+
+
+
diff --git a/tests/BaseObjectTest.php b/tests/BaseObjectTest.php
new file mode 100644
index 0000000000..73eb4720ba
--- /dev/null
+++ b/tests/BaseObjectTest.php
@@ -0,0 +1,45 @@
+baseObject = new BaseObject();
+ }
+
+ /**
+ * Test the getApp() function.
+ * @return void
+ */
+ public function testGetApp()
+ {
+ $this->assertInstanceOf(App::class, $this->baseObject->getApp());
+ }
+
+ /**
+ * Test the setApp() function.
+ * @return void
+ */
+ public function testSetApp()
+ {
+ $app = new App(__DIR__.'/../');
+ $this->assertNull($this->baseObject->setApp($app));
+ $this->assertEquals($app, $this->baseObject->getApp());
+ }
+}
diff --git a/tests/TextTest.php b/tests/TextTest.php
new file mode 100644
index 0000000000..3a15b97665
--- /dev/null
+++ b/tests/TextTest.php
@@ -0,0 +1,301 @@
+assertNotEquals($autoname1, $autoname2);
+ }
+
+ /**
+ *autonames should be random, odd length
+ */
+ public function testAutonameOdd()
+ {
+ $autoname1=autoname(9);
+ $autoname2=autoname(9);
+
+ $this->assertNotEquals($autoname1, $autoname2);
+ }
+
+ /**
+ * try to fail autonames
+ */
+ public function testAutonameNoLength()
+ {
+ $autoname1=autoname(0);
+ $this->assertEquals(0, strlen($autoname1));
+ }
+
+ /**
+ * try to fail it with invalid input
+ *
+ * @todo What's corect behaviour here? An exception?
+ */
+ public function testAutonameNegativeLength()
+ {
+ $autoname1=autoname(-23);
+ $this->assertEquals(0, strlen($autoname1));
+ }
+
+ /**
+ * test with a length, that may be too short
+ */
+ public function testAutonameLength1()
+ {
+ $autoname1=autoname(1);
+ $this->assertEquals(1, count($autoname1));
+
+ $autoname2=autoname(1);
+ $this->assertEquals(1, count($autoname2));
+ }
+
+ /**
+ * test attribute contains
+ */
+ public function testAttributeContains1()
+ {
+ $testAttr="class1 notclass2 class3";
+ $this->assertTrue(attribute_contains($testAttr, "class3"));
+ $this->assertFalse(attribute_contains($testAttr, "class2"));
+ }
+
+ /**
+ * test attribute contains
+ */
+ public function testAttributeContains2()
+ {
+ $testAttr="class1 not-class2 class3";
+ $this->assertTrue(attribute_contains($testAttr, "class3"));
+ $this->assertFalse(attribute_contains($testAttr, "class2"));
+ }
+
+ /**
+ * test with empty input
+ */
+ public function testAttributeContainsEmpty()
+ {
+ $testAttr="";
+ $this->assertFalse(attribute_contains($testAttr, "class2"));
+ }
+
+ /**
+ * test input with special chars
+ */
+ public function testAttributeContainsSpecialChars()
+ {
+ $testAttr="--... %\$ä() /(=?}";
+ $this->assertFalse(attribute_contains($testAttr, "class2"));
+ }
+
+ /**
+ * test expand_acl, perfect input
+ */
+ public function testExpandAclNormal()
+ {
+ $text='<1><2><3>';
+ $this->assertEquals(array(1, 2, 3), expand_acl($text));
+ }
+
+ /**
+ * test with a big number
+ */
+ public function testExpandAclBigNumber()
+ {
+ $text='<1><'.PHP_INT_MAX.'><15>';
+ $this->assertEquals(array(1, PHP_INT_MAX, 15), expand_acl($text));
+ }
+
+ /**
+ * test with a string in it.
+ *
+ * @todo is this valid input? Otherwise: should there be an exception?
+ */
+ public function testExpandAclString()
+ {
+ $text="<1><279012>";
+ $this->assertEquals(array(1, 279012), expand_acl($text));
+ }
+
+ /**
+ * test with a ' ' in it.
+ *
+ * @todo is this valid input? Otherwise: should there be an exception?
+ */
+ public function testExpandAclSpace()
+ {
+ $text="<1><279 012><32>";
+ $this->assertEquals(array(1, "279", "32"), expand_acl($text));
+ }
+
+ /**
+ * test empty input
+ */
+ public function testExpandAclEmpty()
+ {
+ $text="";
+ $this->assertEquals(array(), expand_acl($text));
+ }
+
+ /**
+ * test invalid input, no < at all
+ *
+ * @todo should there be an exception?
+ */
+ public function testExpandAclNoBrackets()
+ {
+ $text="According to documentation, that's invalid. "; //should be invalid
+ $this->assertEquals(array(), expand_acl($text));
+ }
+
+ /**
+ * test invalid input, just open <
+ *
+ * @todo should there be an exception?
+ */
+ public function testExpandAclJustOneBracket1()
+ {
+ $text="assertEquals(array(), expand_acl($text));
+ }
+
+ /**
+ * test invalid input, just close >
+ *
+ * @todo should there be an exception?
+ */
+ public function testExpandAclJustOneBracket2()
+ {
+ $text="Another invalid> string"; //should be invalid
+ $this->assertEquals(array(), expand_acl($text));
+ }
+
+ /**
+ * test invalid input, just close >
+ *
+ * @todo should there be an exception?
+ */
+ public function testExpandAclCloseOnly()
+ {
+ $text="Another> invalid> string>"; //should be invalid
+ $this->assertEquals(array(), expand_acl($text));
+ }
+
+ /**
+ * test invalid input, just open <
+ *
+ * @todo should there be an exception?
+ */
+ public function testExpandAclOpenOnly()
+ {
+ $text="assertEquals(array(), expand_acl($text));
+ }
+
+ /**
+ * test invalid input, open and close do not match
+ *
+ * @todo should there be an exception?
+ */
+ public function testExpandAclNoMatching1()
+ {
+ $text=" invalid "; //should be invalid
+ $this->assertEquals(array(), expand_acl($text));
+ }
+
+ /**
+ * test invalid input, empty <>
+ *
+ * @todo should there be an exception? Or array(1, 3)
+ * (This should be array(1,3) - mike)
+ */
+ public function testExpandAclEmptyMatch()
+ {
+ $text="<1><><3>";
+ $this->assertEquals(array(1,3), expand_acl($text));
+ }
+
+ /**
+ * test, that tags are escaped
+ */
+ public function testEscapeTags()
+ {
+ $invalidstring='';
+
+ $validstring=notags($invalidstring);
+ $escapedString=escape_tags($invalidstring);
+
+ $this->assertEquals('[submit type="button" onclick="alert(\'failed!\');" /]', $validstring);
+ $this->assertEquals(
+ "<submit type="button" onclick="alert('failed!');" />",
+ $escapedString
+ );
+ }
+
+ /**
+ *xmlify and unxmlify
+ */
+ public function testXmlify()
+ {
+ $text="I want to break\n this!11!";
+ $xml=xmlify($text);
+ $retext=unxmlify($text);
+
+ $this->assertEquals($text, $retext);
+ }
+
+ /**
+ * xmlify and put in a document
+ */
+ public function testXmlifyDocument()
+ {
+ $tag="I want to break";
+ $xml=xmlify($tag);
+ $text=''.$xml.'';
+
+ $xml_parser=xml_parser_create();
+ //should be possible to parse it
+ $values=array();
+ $index=array();
+ $this->assertEquals(1, xml_parse_into_struct($xml_parser, $text, $values, $index));
+
+ $this->assertEquals(
+ array('TEXT'=>array(0)),
+ $index
+ );
+ $this->assertEquals(
+ array(array('tag'=>'TEXT', 'type'=>'complete', 'level'=>1, 'value'=>$tag)),
+ $values
+ );
+
+ xml_parser_free($xml_parser);
+ }
+
+ /**
+ * test hex2bin and reverse
+ */
+ public function testHex2Bin()
+ {
+ $this->assertEquals(-3, hex2bin(bin2hex(-3)));
+ $this->assertEquals(0, hex2bin(bin2hex(0)));
+ $this->assertEquals(12, hex2bin(bin2hex(12)));
+ $this->assertEquals(PHP_INT_MAX, hex2bin(bin2hex(PHP_INT_MAX)));
+ }
+}
diff --git a/tests/autoname_test.php b/tests/autoname_test.php
deleted file mode 100644
index 03a7ebfe96..0000000000
--- a/tests/autoname_test.php
+++ /dev/null
@@ -1,76 +0,0 @@
-assertNotEquals($autoname1, $autoname2);
- }
-
- /**
- *autonames should be random, odd length
- */
- public function testAutonameOdd() {
- $autoname1=autoname(9);
- $autoname2=autoname(9);
-
- $this->assertNotEquals($autoname1, $autoname2);
- }
-
- /**
- * try to fail autonames
- */
- public function testAutonameNoLength() {
- $autoname1=autoname(0);
- $this->assertEquals(0, strlen($autoname1));
- }
-
- /**
- * try to fail it with invalid input
- *
- * TODO: What's corect behaviour here? An exception?
- */
- public function testAutonameNegativeLength() {
- $autoname1=autoname(-23);
- $this->assertEquals(0, strlen($autoname1));
- }
-
- // public function testAutonameMaxLength() {
- // $autoname2=autoname(PHP_INT_MAX);
- // $this->assertEquals(PHP_INT_MAX, count($autoname2));
- // }
-
- /**
- * test with a length, that may be too short
- */
- public function testAutonameLength1() {
- $autoname1=autoname(1);
- $this->assertEquals(1, count($autoname1));
-
- $autoname2=autoname(1);
- $this->assertEquals(1, count($autoname2));
-
- // The following test is problematic, with only 26 possibilities
- // generating the same thing twice happens often aka
- // birthday paradox
-// $this->assertFalse($autoname1==$autoname2);
- }
-}
\ No newline at end of file
diff --git a/tests/contains_attribute_test.php b/tests/contains_attribute_test.php
deleted file mode 100644
index b0bb06acfa..0000000000
--- a/tests/contains_attribute_test.php
+++ /dev/null
@@ -1,51 +0,0 @@
-assertTrue(attribute_contains($testAttr, "class3"));
- $this->assertFalse(attribute_contains($testAttr, "class2"));
- }
-
- /**
- * test attribute contains
- */
- public function testAttributeContains2() {
- $testAttr="class1 not-class2 class3";
- $this->assertTrue(attribute_contains($testAttr, "class3"));
- $this->assertFalse(attribute_contains($testAttr, "class2"));
- }
-
- /**
- * test with empty input
- */
- public function testAttributeContainsEmpty() {
- $testAttr="";
- $this->assertFalse(attribute_contains($testAttr, "class2"));
- }
-
- /**
- * test input with special chars
- */
- public function testAttributeContainsSpecialChars() {
- $testAttr="--... %\$ä() /(=?}";
- $this->assertFalse(attribute_contains($testAttr, "class2"));
- }
-}
\ No newline at end of file
diff --git a/tests/expand_acl_test.php b/tests/expand_acl_test.php
deleted file mode 100644
index 154bc921db..0000000000
--- a/tests/expand_acl_test.php
+++ /dev/null
@@ -1,148 +0,0 @@
-<2><3>';
- $this->assertEquals(array(1, 2, 3), expand_acl($text));
- }
-
- /**
- * test with a big number
- */
- public function testExpandAclBigNumber() {
- $text='<1><'.PHP_INT_MAX.'><15>';
- $this->assertEquals(array(1, PHP_INT_MAX, 15), expand_acl($text));
- }
-
- /**
- * test with a string in it.
- *
- * TODO: is this valid input? Otherwise: should there be an exception?
- */
- public function testExpandAclString() {
- $text="<1><279012>";
- $this->assertEquals(array(1, 279012), expand_acl($text));
- }
-
- /**
- * test with a ' ' in it.
- *
- * TODO: is this valid input? Otherwise: should there be an exception?
- */
- public function testExpandAclSpace() {
- $text="<1><279 012><32>";
- $this->assertEquals(array(1, "279", "32"), expand_acl($text));
- }
-
- /**
- * test empty input
- */
- public function testExpandAclEmpty() {
- $text="";
- $this->assertEquals(array(), expand_acl($text));
- }
-
- /**
- * test invalid input, no < at all
- *
- * TODO: should there be an exception?
- */
- public function testExpandAclNoBrackets() {
- $text="According to documentation, that's invalid. "; //should be invalid
- $this->assertEquals(array(), expand_acl($text));
- }
-
- /**
- * test invalid input, just open <
- *
- * TODO: should there be an exception?
- */
- public function testExpandAclJustOneBracket1() {
- $text="assertEquals(array(), expand_acl($text));
- }
-
- /**
- * test invalid input, just close >
- *
- * TODO: should there be an exception?
- */
- public function testExpandAclJustOneBracket2() {
- $text="Another invalid> string"; //should be invalid
- $this->assertEquals(array(), expand_acl($text));
- }
-
- /**
- * test invalid input, just close >
- *
- * TODO: should there be an exception?
- */
- public function testExpandAclCloseOnly() {
- $text="Another> invalid> string>"; //should be invalid
- $this->assertEquals(array(), expand_acl($text));
- }
-
- /**
- * test invalid input, just open <
- *
- * TODO: should there be an exception?
- */
- public function testExpandAclOpenOnly() {
- $text="assertEquals(array(), expand_acl($text));
- }
-
- /**
- * test invalid input, open and close do not match
- *
- * TODO: should there be an exception?
- */
- public function testExpandAclNoMatching1() {
- $text=" invalid "; //should be invalid
- $this->assertEquals(array(), expand_acl($text));
- }
-
- /**
- * test invalid input, open and close do not match
- *
- * TODO: should there be an exception?
- */
- public function testExpandAclNoMatching2() {
- $text="<1>2><3>";
-// The angles are delimiters which aren't important
-// the important thing is the numeric content, this returns array(1,2,3) currently
-// we may wish to eliminate 2 from the results, though it isn't harmful
-// It would be a better test to figure out if there is any ACL input which can
-// produce this $text and fix that instead.
-// $this->assertEquals(array(), expand_acl($text));
- }
-
- /**
- * test invalid input, empty <>
- *
- * TODO: should there be an exception? Or array(1, 3)
- * (This should be array(1,3) - mike)
- */
- public function testExpandAclEmptyMatch() {
- $text="<1><><3>";
- $this->assertEquals(array(1,3), expand_acl($text));
- }
-}
\ No newline at end of file
diff --git a/tests/get_tags_test.php b/tests/get_tags_test.php
deleted file mode 100644
index 79dcb36a7f..0000000000
--- a/tests/get_tags_test.php
+++ /dev/null
@@ -1,326 +0,0 @@
-15,
- 'attag'=>'', 'network'=>'dfrn',
- 'name'=>'Mike Lastname', 'alias'=>'Mike',
- 'nick'=>'Mike', 'url'=>"http://justatest.de"));
-
- $args=func_get_args();
-
- //last parameter is always (in this test) uid, so, it should be 11
- if($args[count($args)-1]!=11) {
- return;
- }
-
-
- if(3==count($args)) {
- //first call in handle_body, id only
- if($result[0]['id']==$args[1]) {
- return $result;
- }
- //second call in handle_body, name
- if($result[0]['name']===$args[1]) {
- return $result;
- }
- }
- //third call in handle_body, nick or attag
- if($result[0]['nick']===$args[2] || $result[0]['attag']===$args[1]) {
- return $result;
- }
-}
-
-/**
- * replacement for dbesc.
- * I don't want to test dbesc here, so
- * I just return the input. It won't be a problem, because
- * the test does not use a real database.
- *
- * DON'T USE HAT FUNCTION OUTSIDE A TEST!
- *
- * @param string $str
- * @return input
- */
-function dbesc($str) {
- return $str;
-}
-
-/**
- * TestCase for tag handling.
- *
- * @author alexander
- * @package test.util
- */
-class GetTagsTest extends PHPUnit_Framework_TestCase {
- /** the mock to use as app */
- private $a;
-
- /**
- * initialize the test. That's a phpUnit function,
- * don't change its name.
- */
- public function setUp() {
- $this->a=new MockApp();
- }
-
- /**
- * test with one Person tag
- */
- public function testGetTagsShortPerson() {
- $text="hi @Mike";
-
- $tags=get_tags($text);
-
- $inform='';
- $str_tags='';
- foreach($tags as $tag) {
- handle_tag($this->a, $text, $inform, $str_tags, 11, $tag);
- }
-
- //correct tags found?
- $this->assertEquals(1, count($tags));
- $this->assertTrue(in_array("@Mike", $tags));
-
- //correct output from handle_tag?
- $this->assertEquals("cid:15", $inform);
- $this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url]", $str_tags);
- $this->assertEquals("hi @[url=http://justatest.de]Mike Lastname[/url]", $text);
- }
-
- /**
- * test with one Person tag.
- * There's a minor spelling mistake...
- */
- public function testGetTagsShortPersonSpelling() {
- $text="hi @Mike.because";
-
- $tags=get_tags($text);
-
- //correct tags found?
- $this->assertEquals(1, count($tags));
- $this->assertTrue(in_array("@Mike.because", $tags));
-
- $inform='';
- $str_tags='';
- handle_tag($this->a, $text, $inform, $str_tags, 11, $tags[0]);
-
- // (mike) - This is a tricky case.
- // we support mentions as in @mike@example.com - which contains a period.
- // This shouldn't match anything unless you have a contact named "Mike.because".
- // We may need another test for "@Mike. because" - which should return the contact
- // as we ignore trailing periods in tags.
-
-// $this->assertEquals("cid:15", $inform);
-// $this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url]", $str_tags);
-// $this->assertEquals("hi @[url=http://justatest.de]Mike Lastname[/url].because", $text);
-
- $this->assertEquals("", $inform);
- $this->assertEquals("", $str_tags);
-
- }
-
- /**
- * test with two Person tags.
- * There's a minor spelling mistake...
- */
-
- public function testGetTagsPerson2Spelling() {
- $text="hi @Mike@campino@friendica.eu";
-
- $tags=get_tags($text);
-
-// This construct is not supported. Results are indeterminate
-// $this->assertEquals(2, count($tags));
-// $this->assertTrue(in_array("@Mike", $tags));
-// $this->assertTrue(in_array("@campino@friendica.eu", $tags));
- }
-
- /**
- * Test with one hash tag.
- */
- public function testGetTagsShortTag() {
- $text="This is a #test_case";
-
- $tags=get_tags($text);
-
- $this->assertEquals(1, count($tags));
- $this->assertTrue(in_array("#test_case", $tags));
- }
-
- /**
- * test with a person and a hash tag
- */
- public function testGetTagsShortTagAndPerson() {
- $text="hi @Mike This is a #test_case";
-
- $tags=get_tags($text);
-
- $this->assertEquals(3, count($tags));
- $this->assertTrue(in_array("@Mike", $tags));
- $this->assertTrue(in_array("@Mike This", $tags));
- $this->assertTrue(in_array("#test_case", $tags));
-
- $inform='';
- $str_tags='';
- foreach($tags as $tag) {
- handle_tag($this->a, $text, $inform, $str_tags, 11, $tag);
- }
-
- $this->assertEquals("cid:15", $inform);
- $this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url],#[url=baseurl/search?tag=test%20case]test case[/url]", $str_tags);
- $this->assertEquals("hi @[url=http://justatest.de]Mike Lastname[/url] This is a #[url=baseurl/search?tag=test%20case]test case[/url]", $text);
-
- }
-
- /**
- * test with a person, a hash tag and some special chars.
- */
- public function testGetTagsShortTagAndPersonSpecialChars() {
- $text="hi @Mike, This is a #test_case.";
-
- $tags=get_tags($text);
-
- $this->assertEquals(2, count($tags));
- $this->assertTrue(in_array("@Mike", $tags));
- $this->assertTrue(in_array("#test_case", $tags));
- }
-
- /**
- * Test with a person tag and text behind it.
- */
- public function testGetTagsPersonOnly() {
- $text="@Test I saw the Theme Dev group was created.";
-
- $tags=get_tags($text);
-
- $this->assertEquals(2, count($tags));
- $this->assertTrue(in_array("@Test I", $tags));
- $this->assertTrue(in_array("@Test", $tags));
- }
-
- /**
- * this test demonstrates strange behaviour by intval.
- * It makes the next test fail.
- */
- public function testIntval() {
- $this->assertEquals(15, intval("15 it"));
- }
-
- /**
- * test a tag with an id in it
- */
- public function testIdTag() {
- $text="Test with @mike+15 id tag";
-
- $tags=get_tags($text);
-
- $this->assertEquals(2, count($tags));
- $this->assertTrue(in_array("@mike+15", $tags));
-
- //happens right now, but it shouldn't be necessary
- $this->assertTrue(in_array("@mike+15 id", $tags));
-
- $inform='';
- $str_tags='';
- foreach($tags as $tag) {
- handle_tag($this->a, $text, $inform, $str_tags, 11, $tag);
- }
-
- $this->assertEquals("Test with @[url=http://justatest.de]Mike Lastname[/url] id tag", $text);
- $this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url]", $str_tags);
- // this test may produce two cid:15 entries - which is OK because duplicates are pruned before delivery
- $this->assertContains("cid:15",$inform);
- }
-
- /**
- * test with two persons and one special tag.
- */
- public function testGetTags2Persons1TagSpecialChars() {
- $text="hi @Mike, I'm just writing #test_cases, so"
- ." so @somebody@friendica.com may change #things.";
-
- $tags=get_tags($text);
-
- $this->assertEquals(5, count($tags));
- $this->assertTrue(in_array("@Mike", $tags));
- $this->assertTrue(in_array("#test_cases", $tags));
- $this->assertTrue(in_array("@somebody@friendica.com", $tags));
- $this->assertTrue(in_array("@somebody@friendica.com may", $tags));
- $this->assertTrue(in_array("#things", $tags));
- }
-
- /**
- * test with a long text.
- */
- public function testGetTags() {
- $text="hi @Mike, I'm just writing #test_cases, "
- ." so @somebody@friendica.com may change #things. Of course I "
- ."look for a lot of #pitfalls, like #tags at the end of a sentence "
- ."@comment. I hope noone forgets about @fullstops.because that might"
- ." break #things. @Mike@campino@friendica.eu is also #nice, isn't it? "
- ."Now, add a @first_last tag. ";
-
- $tags=get_tags($text);
-
- $this->assertTrue(in_array("@Mike", $tags));
- $this->assertTrue(in_array("#test_cases", $tags));
- $this->assertTrue(in_array("@somebody@friendica.com", $tags));
- $this->assertTrue(in_array("#things", $tags));
- $this->assertTrue(in_array("#pitfalls", $tags));
- $this->assertTrue(in_array("#tags", $tags));
- $this->assertTrue(in_array("@comment", $tags));
- $this->assertTrue(in_array("@fullstops.because", $tags));
- $this->assertTrue(in_array("#things", $tags));
- $this->assertTrue(in_array("@Mike", $tags));
- $this->assertTrue(in_array("#nice", $tags));
- $this->assertTrue(in_array("@first_last", $tags));
-
- //right now, none of the is matched (unsupported)
-// $this->assertFalse(in_array("@Mike@campino@friendica.eu", $tags));
-// $this->assertTrue(in_array("@campino@friendica.eu", $tags));
-// $this->assertTrue(in_array("@campino@friendica.eu is", $tags));
- }
-
- /**
- * test with an empty string
- */
- public function testGetTagsEmpty() {
- $tags=get_tags("");
- $this->assertEquals(0, count($tags));
- }
-}
diff --git a/tests/template_test.php b/tests/template_test.php
deleted file mode 100644
index 1f9f805313..0000000000
--- a/tests/template_test.php
+++ /dev/null
@@ -1,224 +0,0 @@
-assertTrue(is_null($second));
- }
-
- public function testSimpleVariableString() {
- $tpl='Hello $name!';
-
- $text=replace_macros($tpl, array('$name'=>'Anna'));
-
- $this->assertEquals('Hello Anna!', $text);
- }
-
- public function testSimpleVariableInt() {
- $tpl='There are $num new messages!';
-
- $text=replace_macros($tpl, array('$num'=>172));
-
- $this->assertEquals('There are 172 new messages!', $text);
- }
-
- public function testConditionalElse() {
- $tpl='There{{ if $num!=1 }} are $num new messages{{ else }} is 1 new message{{ endif }}!';
-
- $text1=replace_macros($tpl, array('$num'=>1));
- $text22=replace_macros($tpl, array('$num'=>22));
-
- $this->assertEquals('There is 1 new message!', $text1);
- $this->assertEquals('There are 22 new messages!', $text22);
- }
-
- public function testConditionalNoElse() {
- $tpl='{{ if $num!=0 }}There are $num new messages!{{ endif }}';
-
- $text0=replace_macros($tpl, array('$num'=>0));
- $text22=replace_macros($tpl, array('$num'=>22));
-
- $this->assertEquals('', $text0);
- $this->assertEquals('There are 22 new messages!', $text22);
- }
-
- public function testConditionalFail() {
- $tpl='There {{ if $num!=1 }} are $num new messages{{ else }} is 1 new message{{ endif }}!';
-
- $text1=replace_macros($tpl, array());
-
- //$this->assertEquals('There is 1 new message!', $text1);
- }
-
- public function testSimpleFor() {
- $tpl='{{ for $messages as $message }} $message {{ endfor }}';
-
- $text=replace_macros($tpl, array('$messages'=>array('message 1', 'message 2')));
-
- $this->assertEquals(' message 1 message 2 ', $text);
- }
-
- public function testFor() {
- $tpl='{{ for $messages as $message }} from: $message.from to $message.to {{ endfor }}';
-
- $text=replace_macros($tpl, array('$messages'=>array(array('from'=>'Mike', 'to'=>'Alex'), array('from'=>'Alex', 'to'=>'Mike'))));
-
- $this->assertEquals(' from: Mike to Alex from: Alex to Mike ', $text);
- }
-
- public function testKeyedFor() {
- $tpl='{{ for $messages as $from=>$to }} from: $from to $to {{ endfor }}';
-
- $text=replace_macros($tpl, array('$messages'=>array('Mike'=>'Alex', 'Sven'=>'Mike')));
-
- $this->assertEquals(' from: Mike to Alex from: Sven to Mike ', $text);
- }
-
- public function testForEmpty() {
- $tpl='messages: {{for $messages as $message}} from: $message.from to $message.to {{ endfor }}';
-
- $text=replace_macros($tpl, array('$messages'=>array()));
-
- $this->assertEquals('messages: ', $text);
- }
-
- public function testForWrongType() {
- $tpl='messages: {{for $messages as $message}} from: $message.from to $message.to {{ endfor }}';
-
- $text=replace_macros($tpl, array('$messages'=>11));
-
- $this->assertEquals('messages: ', $text);
- }
-
- public function testForConditional() {
- $tpl='new messages: {{for $messages as $message}}{{ if $message.new }} $message.text{{endif}}{{ endfor }}';
-
- $text=replace_macros($tpl, array('$messages'=>array(
- array('new'=>true, 'text'=>'new message'),
- array('new'=>false, 'text'=>'old message'))));
-
- $this->assertEquals('new messages: new message', $text);
- }
-
- public function testConditionalFor() {
- $tpl='{{ if $enabled }}new messages:{{for $messages as $message}} $message.text{{ endfor }}{{endif}}';
-
- $text=replace_macros($tpl, array('$enabled'=>true,
- '$messages'=>array(
- array('new'=>true, 'text'=>'new message'),
- array('new'=>false, 'text'=>'old message'))));
-
- $this->assertEquals('new messages: new message old message', $text);
- }
-
- public function testFantasy() {
- $tpl='Fantasy: {{fantasy $messages}}';
-
- $text=replace_macros($tpl, array('$messages'=>'no no'));
-
- $this->assertEquals('Fantasy: {{fantasy no no}}', $text);
- }
-
- public function testInc() {
- $tpl='{{inc field_input.tpl with $field=$myvar}}{{ endinc }}';
-
- $text=replace_macros($tpl, array('$myvar'=>array('myfield', 'label', 'value', 'help')));
-
- $this->assertEquals(" \n"
- ."