MustacheObjectSectionTest.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. require_once '../Mustache.php';
  3. class MustacheObjectSectionTest extends PHPUnit_Framework_TestCase {
  4. public function testBasicObject() {
  5. $alpha = new Alpha();
  6. $this->assertEquals('Foo', $alpha->render('{{#foo}}{{name}}{{/foo}}'));
  7. }
  8. public function testObjectWithGet() {
  9. $beta = new Beta();
  10. $this->assertEquals('Foo', $beta->render('{{#foo}}{{name}}{{/foo}}'));
  11. }
  12. public function testSectionObjectWithGet() {
  13. $gamma = new Gamma();
  14. $this->assertEquals('Foo', $gamma->render('{{#bar}}{{#foo}}{{name}}{{/foo}}{{/bar}}'));
  15. }
  16. public function testSectionObjectWithFunction() {
  17. $alpha = new Alpha();
  18. $alpha->foo = new Delta();
  19. $this->assertEquals('Foo', $alpha->render('{{#foo}}{{name}}{{/foo}}'));
  20. }
  21. }
  22. class Alpha extends Mustache {
  23. public $foo;
  24. public function __construct() {
  25. $this->foo = new StdClass();
  26. $this->foo->name = 'Foo';
  27. $this->foo->number = 1;
  28. }
  29. }
  30. class Beta extends Mustache {
  31. protected $_data = array();
  32. public function __construct() {
  33. $this->_data['foo'] = new StdClass();
  34. $this->_data['foo']->name = 'Foo';
  35. $this->_data['foo']->number = 1;
  36. }
  37. public function __isset($name) {
  38. return array_key_exists($name, $this->_data);
  39. }
  40. public function __get($name) {
  41. return $this->_data[$name];
  42. }
  43. }
  44. class Gamma extends Mustache {
  45. public $bar;
  46. public function __construct() {
  47. $this->bar = new Beta();
  48. }
  49. }
  50. class Delta extends Mustache {
  51. protected $_name = 'Foo';
  52. public function name() {
  53. return $this->_name;
  54. }
  55. }