12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- <?php
- class Elgg_Ecml_TokenizerTest extends UnitTestCase {
- /**
- * @var Elgg_Ecml_Tokenizer
- */
- protected $tk;
- function setUp() {
- $this->tk = new Elgg_Ecml_Tokenizer();
- parent::setUp();
- }
- function testValidTokens() {
- $valids = array(
- '[bar/baz foo="234" bool bool2=true f-.2 pow=\'pow\']' => array(
- 'keyword' => 'bar/baz',
- 'attrs' => array(
- 'foo' => '234',
- 'bool' => true,
- 'bool2' => true,
- 'f-.2' => true,
- 'pow' => 'pow',
- ),
- ),
- '[bar.123 cat="fig\\"ht"]' => array(
- 'keyword' => 'bar.123',
- 'attrs' => array(
- 'cat' => 'fig"ht',
- ),
- ),
- );
- foreach ($valids as $text => $test) {
- $tokens = $this->tk->getTokens($text);
- $this->assertTrue(isset($tokens[0]));
- $token = $tokens[0];
- $this->assertIsA($token, 'Elgg_Ecml_Token');
- /* @var Elgg_Ecml_Token $token */
- $this->assertFalse($token->isText);
- $this->assertEqual($token->keyword, $test['keyword']);
- $this->assertIdentical($token->attrs, $test['attrs']);
- }
- }
- function testMultibyteToken() {
- $tokens = $this->tk->getTokens('[foo 日本語="日本\\"語"]');
- $this->assertTrue(
- isset($tokens[0])
- && $tokens[0]->keyword == 'foo'
- && $tokens[0]->attrs == array('日本語' => '日本"語'));
- }
- function testInvalidTokens() {
- $invalids = array(
- '[foo a="b]',
- '[foo a="b\\"]',
- );
- foreach ($invalids as $text) {
- $tokens = $this->tk->getTokens($text);
- $this->assertTrue(isset($tokens[0]));
- $token = $tokens[0];
- $this->assertIsA($token, 'Elgg_Ecml_Token');
- /* @var Elgg_Ecml_Token $token */
- $this->assertTrue($token->isText);
- }
- }
- function testMultipleTokens() {
- $tokens = $this->tk->getTokens('Hello [foo bar="bar"], this [cat do="g] is [/foo].');
- $expected = array(
- 'Hello ',
- array('foo', array('bar' => 'bar')),
- ', this ',
- '[cat do="g]',
- ' is ',
- array('/foo', array()),
- '.'
- );
- if ($this->assertEqual(count($tokens), count($expected))) {
- foreach ($expected as $i => $data) {
- if (is_array($data)) {
- $this->assertFalse($tokens[$i]->isText);
- $this->assertEqual($tokens[$i]->keyword, $data[0]);
- $this->assertEqual($tokens[$i]->attrs, $data[1]);
- }
- }
- }
- }
- }
|