Passed
Pull Request — master (#311)
by William
12:43
created

TokenTest   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 81
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 41
c 1
b 0
f 0
dl 0
loc 81
rs 10
wmc 7

7 Methods

Rating   Name   Duplication   Size   Complexity  
A testExtractString() 0 13 1
A testExtractNumber() 0 16 1
A testExtractSymbol() 0 16 1
A testExtractKeyword() 0 7 1
A testExtractBool() 0 7 1
A testExtractWhitespace() 0 4 1
A testInlineToken() 0 4 1
1
<?php
2
3
namespace PhpMyAdmin\SqlParser\Tests\Lexer;
4
5
use PhpMyAdmin\SqlParser\Tests\TestCase;
6
use PhpMyAdmin\SqlParser\Token;
7
8
class TokenTest extends TestCase
9
{
10
    public function testExtractKeyword()
11
    {
12
        $tok = new Token('SelecT', Token::TYPE_KEYWORD, Token::FLAG_KEYWORD_RESERVED);
13
        $this->assertEquals($tok->value, 'SELECT');
14
15
        $tok = new Token('aS', Token::TYPE_KEYWORD, Token::FLAG_KEYWORD_RESERVED);
16
        $this->assertEquals($tok->value, 'AS');
17
    }
18
19
    public function testExtractWhitespace()
20
    {
21
        $tok = new Token(" \t \r \n ", Token::TYPE_WHITESPACE);
22
        $this->assertEquals($tok->value, ' ');
23
    }
24
25
    public function testExtractBool()
26
    {
27
        $tok = new Token('false', Token::TYPE_BOOL);
28
        $this->assertFalse($tok->value);
29
30
        $tok = new Token('True', Token::TYPE_BOOL);
31
        $this->assertTrue($tok->value);
32
    }
33
34
    public function testExtractNumber()
35
    {
36
        $tok = new Token('--42', Token::TYPE_NUMBER, Token::FLAG_NUMBER_NEGATIVE);
37
        $this->assertEquals($tok->value, 42);
38
39
        $tok = new Token('---42', Token::TYPE_NUMBER, Token::FLAG_NUMBER_NEGATIVE);
40
        $this->assertEquals($tok->value, -42);
41
42
        $tok = new Token('0xFE', Token::TYPE_NUMBER, Token::FLAG_NUMBER_HEX);
43
        $this->assertEquals($tok->value, 0xFE);
44
45
        $tok = new Token('-0xEF', Token::TYPE_NUMBER, Token::FLAG_NUMBER_NEGATIVE | Token::FLAG_NUMBER_HEX);
46
        $this->assertEquals($tok->value, -0xEF);
47
48
        $tok = new Token('3.14', Token::TYPE_NUMBER, Token::FLAG_NUMBER_FLOAT);
49
        $this->assertEquals($tok->value, 3.14);
50
    }
51
52
    public function testExtractString()
53
    {
54
        $tok = new Token('"foo bar "', Token::TYPE_STRING);
55
        $this->assertEquals($tok->value, 'foo bar ');
56
57
        $tok = new Token("' bar foo '", Token::TYPE_STRING);
58
        $this->assertEquals($tok->value, ' bar foo ');
59
60
        $tok = new Token("'\''", Token::TYPE_STRING);
61
        $this->assertEquals($tok->value, '\'');
62
63
        $tok = new Token('"\c\d\e\f\g\h\i\j\k\l\m\p\q\s\u\v\w\x\y\z"', Token::TYPE_STRING);
64
        $this->assertEquals($tok->value, 'cdefghijklmpqsuvwxyz');
65
    }
66
67
    public function testExtractSymbol()
68
    {
69
        $tok = new Token('@foo', Token::TYPE_SYMBOL, Token::FLAG_SYMBOL_VARIABLE);
70
        $this->assertEquals($tok->value, 'foo');
71
72
        $tok = new Token('`foo`', Token::TYPE_SYMBOL, Token::FLAG_SYMBOL_BACKTICK);
73
        $this->assertEquals($tok->value, 'foo');
74
75
        $tok = new Token('@`foo`', Token::TYPE_SYMBOL, Token::FLAG_SYMBOL_VARIABLE);
76
        $this->assertEquals($tok->value, 'foo');
77
78
        $tok = new Token(':foo', Token::TYPE_SYMBOL, Token::FLAG_SYMBOL_PARAMETER);
79
        $this->assertEquals($tok->value, 'foo');
80
81
        $tok = new Token('?', Token::TYPE_SYMBOL, Token::FLAG_SYMBOL_PARAMETER);
82
        $this->assertEquals($tok->value, '?');
83
    }
84
85
    public function testInlineToken()
86
    {
87
        $token = new Token(" \r \n \t ");
88
        $this->assertEquals($token->getInlineToken(), ' \r \n \t ');
89
    }
90
}
91