<commit_before><?php

namespace Test;

use DJEM\Crosslinks\Tokenizer;

class TokenizerTest extends \PHPUNIT_Framework_Testcase
{
    public function testTokinizer()
    {
        $tokenizer = Tokenizer::parse('text<a href="link" single=\'quote\'>link---?text</a>more text');

        $tokens = [
            ['type' => 'Text', 'text' => 'text'],
            ['type' => 'Html', 'text' => '<a href="link" single=\'quote\'>'],
            ['type' => 'Text', 'text' => 'link'],
            ['type' => 'TextPunct', 'text' => '---?'],
            ['type' => 'Text', 'text' => 'text'],
            ['type' => 'Html', 'text' => '</a>'],
            ['type' => 'Text', 'text' => 'more'],
            ['type' => 'TextSpace', 'text' => ' '],
            ['type' => 'Text', 'text' => 'text'],
        ];

        $this->assertEquals($tokens, $tokenizer);
    }

    public function testTokinizerPunct()
    {
        $tokenizer = Tokenizer::parse('! !<a>!!</a>');
        $tokens = [
            ['type' => 'TextPunct', 'text' => '!'],
            ['type' => 'TextSpace', 'text' => ' '],
            ['type' => 'TextPunct', 'text' => '!'],
            ['type' => 'Html', 'text' => '<a>'],
            ['type' => 'TextPunct', 'text' => '!!'],
            ['type' => 'Html', 'text' => '</a>'],
        ];
        $this->assertEquals($tokens, $tokenizer);
    }

    public function testTokinizerSpace()
    {
        $tokenizer = Tokenizer::parse(" <a> \r\n!</a>");
        $tokens = [
            ['type' => 'TextSpace', 'text' => ' '],
            ['type' => 'Html', 'text' => '<a>'],
            ['type' => 'TextSpace', 'text' => " \r\n"],
            ['type' => 'TextPunct', 'text' => '!'],
            ['type' => 'Html', 'text' => '</a>'],
        ];
        $this->assertEquals($tokens, $tokenizer);
    }

    public function testTokinizerAmp()
    {
        $tokenizer = Tokenizer::parse("&nbsp;&nbsp; <a> \r\n&nbsp;!&nbsp;&amp;</a>&nbsp;<hr>&amp;<hr>");
        $tokens = [
            ['type' => 'TextAmp', 'text' => '&nbsp;'],
            ['type' => 'TextAmp', 'text' => '&nbsp;'],
            ['type' => 'TextSpace', 'text' => ' '],
            ['type' => 'Html', 'text' => '<a>'],
            ['type' => 'TextSpace', 'text' => " \r\n"],
            ['type' => 'TextAmp', 'text' => '&nbsp;'],
            ['type' => 'TextPunct', 'text' => '!'],
            ['type' => 'TextAmp', 'text' => '&nbsp;'],
            ['type' => 'TextAmp', 'text' => '&amp;'],
            ['type' => 'Html', 'text' => '</a>'],
            ['type' => 'TextAmp', 'text' => '&nbsp;'],
            ['type' => 'Html', 'text' => '<hr>'],
            ['type' => 'TextAmp', 'text' => '&amp;'],
            ['type' => 'Html', 'text' => '<hr>'],
        ];
        $this->assertEquals($tokens, $tokenizer);

        $tokenizer = Tokenizer::parse('&amp;!!&amp; text');
        $tokens = [
            ['type' => 'TextAmp', 'text' => '&amp;'],
            ['type' => 'TextPunct', 'text' => '!!'],
            ['type' => 'TextAmp', 'text' => '&amp;'],
            ['type' => 'TextSpace', 'text' => ' '],
            ['type' => 'Text', 'text' => 'text'],
        ];
        $this->assertEquals($tokens, $tokenizer);
    }

    public function testTokinizerComment()
    {
        $tokenizer = Tokenizer::parse('text<!--a href="link" single=\'quote\'>link---?text</a-->more text');
<commit_msg>add amp+html test<commit_after><?php

namespace Test;

use DJEM\Crosslinks\Tokenizer;

class TokenizerTest extends \PHPUNIT_Framework_Testcase
{
    public function testTokinizer()
    {
        $tokenizer = Tokenizer::parse('text<a href="link" single=\'quote\'>link---?text</a>more text');

        $tokens = [
            ['type' => 'Text', 'text' => 'text'],
            ['type' => 'Html', 'text' => '<a href="link" single=\'quote\'>'],
            ['type' => 'Text', 'text' => 'link'],
            ['type' => 'TextPunct', 'text' => '---?'],
            ['type' => 'Text', 'text' => 'text'],
            ['type' => 'Html', 'text' => '</a>'],
            ['type' => 'Text', 'text' => 'more'],
            ['type' => 'TextSpace', 'text' => ' '],
            ['type' => 'Text', 'text' => 'text'],
        ];

        $this->assertEquals($tokens, $tokenizer);
    }

    public function testTokinizerPunct()
    {
        $tokenizer = Tokenizer::parse('! !<a>!!</a>');
        $tokens = [
            ['type' => 'TextPunct', 'text' => '!'],
            ['type' => 'TextSpace', 'text' => ' '],
            ['type' => 'TextPunct', 'text' => '!'],
            ['type' => 'Html', 'text' => '<a>'],
            ['type' => 'TextPunct', 'text' => '!!'],
            ['type' => 'Html', 'text' => '</a>'],
        ];
        $this->assertEquals($tokens, $tokenizer);
    }

    public function testTokinizerSpace()
    {
        $tokenizer = Tokenizer::parse(" <a> \r\n!</a>");
        $tokens = [
            ['type' => 'TextSpace', 'text' => ' '],
            ['type' => 'Html', 'text' => '<a>'],
            ['type' => 'TextSpace', 'text' => " \r\n"],
            ['type' => 'TextPunct', 'text' => '!'],
            ['type' => 'Html', 'text' => '</a>'],
        ];
        $this->assertEquals($tokens, $tokenizer);
    }

    public function testTokinizerAmp()
    {
        $tokenizer = Tokenizer::parse("&nbsp;&nbsp; <a> \r\n&nbsp;!&nbsp;&amp;</a>&nbsp;<hr>&amp;<hr>");
        $tokens = [
            ['type' => 'TextAmp', 'text' => '&nbsp;'],
            ['type' => 'TextAmp', 'text' => '&nbsp;'],
            ['type' => 'TextSpace', 'text' => ' '],
            ['type' => 'Html', 'text' => '<a>'],
            ['type' => 'TextSpace', 'text' => " \r\n"],
            ['type' => 'TextAmp', 'text' => '&nbsp;'],
            ['type' => 'TextPunct', 'text' => '!'],
            ['type' => 'TextAmp', 'text' => '&nbsp;'],
            ['type' => 'TextAmp', 'text' => '&amp;'],
            ['type' => 'Html', 'text' => '</a>'],
            ['type' => 'TextAmp', 'text' => '&nbsp;'],
            ['type' => 'Html', 'text' => '<hr>'],
            ['type' => 'TextAmp', 'text' => '&amp;'],
            ['type' => 'Html', 'text' => '<hr>'],
        ];
        $this->assertEquals($tokens, $tokenizer);

        $tokenizer = Tokenizer::parse('&amp;!!&amp<hr>; text');
        $tokens = [
            ['type' => 'TextAmp', 'text' => '&amp;'],
            ['type' => 'TextPunct', 'text' => '!!'],
            ['type' => 'TextAmp', 'text' => '&amp'],
            ['type' => 'Html', 'text' => '<hr>'],
            ['type' => 'TextPunct', 'text' => ';'],
            ['type' => 'TextSpace', 'text' => ' '],
            ['type' => 'Text', 'text' => 'text'],
        ];
        $this->assertEquals($tokens, $tokenizer);
    }

    public function testTokinizerComment()
    {
        $tokenizer = Tokenizer::parse('text<!--a href="link" single=\'quote\'>link---?text</a-->more text');

{'fraction_non_alphanumeric': 0.2788616693560217, 'fraction_numerical': 0.0, 'mean_word_length': 2.092063492063492, 'pattern_counts': {'":': 0, '<': 51, '<?xml version=': 0, '>': 219, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '736942', 'n_tokens_mistral': 2288, 'n_tokens_neox': 2270, 'n_words': 427}