TokenizerTest.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. /*
  3. * This file is part of Mustache.php.
  4. *
  5. * (c) 2012 Justin Hileman
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. /**
  11. * @group unit
  12. */
  13. class Mustache_Test_TokenizerTest extends PHPUnit_Framework_TestCase
  14. {
  15. /**
  16. * @dataProvider getTokens
  17. */
  18. public function testScan($text, $delimiters, $expected)
  19. {
  20. $tokenizer = new Mustache_Tokenizer;
  21. $this->assertSame($expected, $tokenizer->scan($text, $delimiters));
  22. }
  23. public function getTokens()
  24. {
  25. return array(
  26. array(
  27. 'text',
  28. null,
  29. array(
  30. array(
  31. Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT,
  32. Mustache_Tokenizer::VALUE => 'text',
  33. ),
  34. ),
  35. ),
  36. array(
  37. 'text',
  38. '<<< >>>',
  39. array(
  40. array(
  41. Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT,
  42. Mustache_Tokenizer::VALUE => 'text',
  43. ),
  44. ),
  45. ),
  46. array(
  47. '{{ name }}',
  48. null,
  49. array(
  50. array(
  51. Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED,
  52. Mustache_Tokenizer::NAME => 'name',
  53. Mustache_Tokenizer::OTAG => '{{',
  54. Mustache_Tokenizer::CTAG => '}}',
  55. Mustache_Tokenizer::INDEX => 10,
  56. )
  57. )
  58. ),
  59. array(
  60. '{{ name }}',
  61. '<<< >>>',
  62. array(
  63. array(
  64. Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT,
  65. Mustache_Tokenizer::VALUE => '{{ name }}',
  66. ),
  67. ),
  68. ),
  69. array(
  70. '<<< name >>>',
  71. '<<< >>>',
  72. array(
  73. array(
  74. Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED,
  75. Mustache_Tokenizer::NAME => 'name',
  76. Mustache_Tokenizer::OTAG => '<<<',
  77. Mustache_Tokenizer::CTAG => '>>>',
  78. Mustache_Tokenizer::INDEX => 12,
  79. )
  80. )
  81. ),
  82. array(
  83. "{{{ a }}}\n{{# b }} \n{{= | | =}}| c ||/ b |\n|{ d }|",
  84. null,
  85. array(
  86. array(
  87. Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_UNESCAPED,
  88. Mustache_Tokenizer::NAME => 'a',
  89. Mustache_Tokenizer::OTAG => '{{',
  90. Mustache_Tokenizer::CTAG => '}}',
  91. Mustache_Tokenizer::INDEX => 8,
  92. ),
  93. array(
  94. Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT,
  95. Mustache_Tokenizer::VALUE => "\n",
  96. ),
  97. array(
  98. Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_SECTION,
  99. Mustache_Tokenizer::NAME => 'b',
  100. Mustache_Tokenizer::OTAG => '{{',
  101. Mustache_Tokenizer::CTAG => '}}',
  102. Mustache_Tokenizer::INDEX => 18,
  103. ),
  104. null,
  105. array(
  106. Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED,
  107. Mustache_Tokenizer::NAME => 'c',
  108. Mustache_Tokenizer::OTAG => '|',
  109. Mustache_Tokenizer::CTAG => '|',
  110. Mustache_Tokenizer::INDEX => 37,
  111. ),
  112. array(
  113. Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION,
  114. Mustache_Tokenizer::NAME => 'b',
  115. Mustache_Tokenizer::OTAG => '|',
  116. Mustache_Tokenizer::CTAG => '|',
  117. Mustache_Tokenizer::INDEX => 37,
  118. ),
  119. array(
  120. Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT,
  121. Mustache_Tokenizer::VALUE => "\n",
  122. ),
  123. array(
  124. Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_UNESCAPED,
  125. Mustache_Tokenizer::NAME => 'd',
  126. Mustache_Tokenizer::OTAG => '|',
  127. Mustache_Tokenizer::CTAG => '|',
  128. Mustache_Tokenizer::INDEX => 51,
  129. ),
  130. )
  131. ),
  132. );
  133. }
  134. }