mirror of
https://github.com/godotengine/godot-question2answer.git
synced 2026-01-01 01:48:37 +03:00
This project lived only on the server without version control. This is now the starting point for the repository.
158 lines
4.2 KiB
PHP
158 lines
4.2 KiB
PHP
<?php
|
|
require_once QA_INCLUDE_DIR.'util/string.php';
|
|
|
|
class UtilStringTest extends PHPUnit_Framework_TestCase
|
|
{
|
|
private $strBasic = 'So I tied an onion to my belt, which was the style at the time.';
|
|
private $strAccents = 'Țĥé qũīçĶ ßřǭŴƞ Ƒöŧ ǰÙƢƥş ØƲĘŕ ƮĦȨ ĿÆƶȳ Ƌơǥ';
|
|
private $blockWordString = 't*d o*n b*t style';
|
|
|
|
public function test__qa_string_to_words()
|
|
{
|
|
$test1 = qa_string_to_words($this->strBasic);
|
|
$expected1 = array('so', 'i', 'tied', 'an', 'onion', 'to', 'my', 'belt', 'which', 'was', 'the', 'style', 'at', 'the', 'time');
|
|
|
|
$test2 = qa_string_to_words($this->strBasic, false);
|
|
$expected2 = array('So', 'I', 'tied', 'an', 'onion', 'to', 'my', 'belt', 'which', 'was', 'the', 'style', 'at', 'the', 'time');
|
|
|
|
$this->assertEquals($expected1, $test1);
|
|
$this->assertEquals($expected2, $test2);
|
|
}
|
|
|
|
public function test__qa_string_remove_accents()
|
|
{
|
|
$test = qa_string_remove_accents($this->strAccents);
|
|
$expected = 'The quicK ssroWn Fot jUOIps OVEr THE LAEzy Dog';
|
|
|
|
$this->assertEquals($expected, $test);
|
|
}
|
|
|
|
public function test__qa_tags_to_tagstring()
|
|
{
|
|
$test = qa_tags_to_tagstring( array('Hello', 'World') );
|
|
$expected = 'Hello,World';
|
|
|
|
$this->assertEquals($expected, $test);
|
|
}
|
|
|
|
public function test__qa_tagstring_to_tags()
|
|
{
|
|
$test = qa_tagstring_to_tags('hello,world');
|
|
$expected = array('hello', 'world');
|
|
|
|
$this->assertEquals($expected, $test);
|
|
}
|
|
|
|
public function test__qa_shorten_string_line()
|
|
{
|
|
// qa_shorten_string_line ($string, $length)
|
|
|
|
$test = qa_shorten_string_line($this->strBasic, 30);
|
|
|
|
$this->assertStringStartsWith('So I tied', $test);
|
|
$this->assertStringEndsWith('time.', $test);
|
|
$this->assertNotFalse(strpos($test, '...'));
|
|
}
|
|
|
|
public function test__qa_block_words_explode()
|
|
{
|
|
$test = qa_block_words_explode($this->blockWordString);
|
|
$expected = array('t*d', 'o*n', 'b*t', 'style');
|
|
|
|
$this->assertEquals($expected, $test);
|
|
}
|
|
|
|
public function test__qa_block_words_to_preg()
|
|
{
|
|
$test = qa_block_words_to_preg($this->blockWordString);
|
|
$expected = '(?<= )t[^ ]*d(?= )|(?<= )o[^ ]*n(?= )|(?<= )b[^ ]*t(?= )|(?<= )style(?= )';
|
|
|
|
$this->assertEquals($expected, $test);
|
|
}
|
|
|
|
public function test__qa_block_words_match_all()
|
|
{
|
|
$test1 = qa_block_words_match_all('onion belt', '');
|
|
|
|
$wordpreg = qa_block_words_to_preg($this->blockWordString);
|
|
$test2 = qa_block_words_match_all('tried an ocean boat', $wordpreg);
|
|
// matches are returned as array of [offset] => [length]
|
|
$expected = array(
|
|
0 => 5, // tried
|
|
9 => 5, // ocean
|
|
15 => 4, // boat
|
|
);
|
|
|
|
$this->assertEmpty($test1);
|
|
$this->assertEquals($expected, $test2);
|
|
}
|
|
|
|
public function test__qa_block_words_replace()
|
|
{
|
|
$wordpreg = qa_block_words_to_preg($this->blockWordString);
|
|
$test = qa_block_words_replace('tired of my ocean boat style', $wordpreg);
|
|
$expected = '***** of my ***** **** *****';
|
|
|
|
$this->assertEquals($expected, $test);
|
|
}
|
|
|
|
public function test__qa_random_alphanum()
|
|
{
|
|
$len = 50;
|
|
$test = qa_random_alphanum($len);
|
|
|
|
$this->assertEquals(strlen($test), $len);
|
|
}
|
|
|
|
public function test__qa_email_validate()
|
|
{
|
|
$goodEmails = array(
|
|
'hello@example.com',
|
|
'q.a@question2answer.org',
|
|
'example@newdomain.app'
|
|
);
|
|
$badEmails = array(
|
|
'nobody@nowhere',
|
|
'pokémon@example.com',
|
|
'email @ with spaces',
|
|
'some random string',
|
|
);
|
|
|
|
foreach ($goodEmails as $email) {
|
|
$this->assertTrue( qa_email_validate($email) );
|
|
}
|
|
foreach ($badEmails as $email)
|
|
$this->assertFalse( qa_email_validate($email) );
|
|
}
|
|
|
|
public function test__qa_strlen()
|
|
{
|
|
$test = qa_strlen($this->strAccents);
|
|
|
|
$this->assertEquals($test, 43);
|
|
}
|
|
|
|
public function test__qa_strtolower()
|
|
{
|
|
$test = qa_strtolower('hElLo WoRld');
|
|
|
|
$this->assertEquals($test, 'hello world');
|
|
}
|
|
|
|
public function test__qa_substr()
|
|
{
|
|
$test = qa_substr($this->strBasic, 5, 24);
|
|
|
|
$this->assertEquals($test, 'tied an onion to my belt');
|
|
}
|
|
|
|
public function test__qa_string_matches_one()
|
|
{
|
|
$matches = array( 'dyed', 'shallot', 'belt', 'fashion' );
|
|
$nonMatches = array( 'dyed', 'shallot', 'buckle', 'fashion' );
|
|
|
|
$this->assertTrue( qa_string_matches_one($this->strBasic, $matches) );
|
|
$this->assertFalse( qa_string_matches_one($this->strBasic, $nonMatches) );
|
|
}
|
|
}
|