summaryrefslogtreecommitdiff
path: root/tests/NicknameTest.php
blob: 95af94098d904f7454ea0508ff0d4083fed13d69 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php

if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
    print "This script must be run from the command line\n";
    exit();
}

define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
define('STATUSNET', true);
define('LACONICA', true);

require_once INSTALLDIR . '/lib/common.php';

/**
 * Test cases for nickname validity and normalization.
 */
class NicknameTest extends PHPUnit_Framework_TestCase
{
    /**
     * @dataProvider provider
     *
     */
    public function testBasic($input, $expected)
    {
        $matches = array();
        // First problem: this is all manual, wtf!
        if (preg_match('/^([' . NICKNAME_FMT . ']{1,64})$/', $input, $matches)) {
            $norm = common_canonical_nickname($matches[1]);
            $this->assertEquals($expected, $norm, "normalized input nickname: $input -> $norm");
        } else {
            $this->assertEquals($expected, false, "invalid input nickname: $input");
        }
    }

    static public function provider()
    {
        return array(
                     array('evan', 'evan'),
                     array('Evan', 'evan'),
                     array('EVAN', 'evan'),
                     array('ev_an', 'evan'),
                     array('ev.an', 'evan'),
                     array('ev/an', false),
                     array('ev an', false),
                     array('ev-an', false),
                     array('évan', false), // so far...
                     array('Évan', false), // so far...
                     array('evan1', 'evan1'),
                     array('evan_1', 'evan1'),
                     );
    }
}