mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-04-28 06:42:14 +09:00
Merge pull request #385 from kijin/pr/more-framework-classes
Rhymix Framework 각종 기능 추가
This commit is contained in:
commit
321015e050
269 changed files with 38164 additions and 616 deletions
52
tests/unit/framework/CalendarTest.php
Normal file
52
tests/unit/framework/CalendarTest.php
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
<?php
|
||||
|
||||
class CalendarTest extends \Codeception\TestCase\Test
|
||||
{
|
||||
public function testGetMonthName()
|
||||
{
|
||||
$this->assertEquals('January', Rhymix\Framework\Calendar::getMonthName('01'));
|
||||
$this->assertEquals('October', Rhymix\Framework\Calendar::getMonthName('10'));
|
||||
$this->assertEquals('Nov', Rhymix\Framework\Calendar::getMonthName(11, false));
|
||||
$this->assertEquals('Dec', Rhymix\Framework\Calendar::getMonthName(12, false));
|
||||
}
|
||||
|
||||
public function testGetMonthStartDayOfWeek()
|
||||
{
|
||||
$this->assertEquals(5, Rhymix\Framework\Calendar::getMonthStartDayOfWeek(1, 2016));
|
||||
$this->assertEquals(1, Rhymix\Framework\Calendar::getMonthStartDayOfWeek(2, 2016));
|
||||
$this->assertEquals(2, Rhymix\Framework\Calendar::getMonthStartDayOfWeek(3, 2016));
|
||||
$this->assertEquals(5, Rhymix\Framework\Calendar::getMonthStartDayOfWeek(4, 2016));
|
||||
}
|
||||
|
||||
public function testGetMonthDays()
|
||||
{
|
||||
$this->assertEquals(30, Rhymix\Framework\Calendar::getMonthDays(11, 2015));
|
||||
$this->assertEquals(31, Rhymix\Framework\Calendar::getMonthDays(12, 2015));
|
||||
$this->assertEquals(31, Rhymix\Framework\Calendar::getMonthDays(1, 2016));
|
||||
$this->assertEquals(29, Rhymix\Framework\Calendar::getMonthDays(2, 2016));
|
||||
}
|
||||
|
||||
public function testGetMonthCalendar()
|
||||
{
|
||||
$target_201508 = array(
|
||||
array(null, null, null, null, null, null, 1),
|
||||
array(2, 3, 4, 5, 6, 7, 8),
|
||||
array(9, 10, 11, 12, 13, 14, 15),
|
||||
array(16, 17, 18, 19, 20, 21, 22),
|
||||
array(23, 24, 25, 26, 27, 28, 29),
|
||||
array(30, 31, null, null, null, null, null),
|
||||
);
|
||||
|
||||
$target_201603 = array(
|
||||
array(null, null, 1, 2, 3, 4, 5),
|
||||
array(6, 7, 8, 9, 10, 11, 12),
|
||||
array(13, 14, 15, 16, 17, 18, 19),
|
||||
array(20, 21, 22, 23, 24, 25, 26),
|
||||
array(27, 28, 29, 30, 31, null, null),
|
||||
array(null, null, null, null, null, null, null),
|
||||
);
|
||||
|
||||
$this->assertEquals($target_201508, Rhymix\Framework\Calendar::getMonthCalendar(8, 2015));
|
||||
$this->assertEquals($target_201603, Rhymix\Framework\Calendar::getMonthCalendar(3, 2016));
|
||||
}
|
||||
}
|
||||
134
tests/unit/framework/FormatterTest.php
Normal file
134
tests/unit/framework/FormatterTest.php
Normal file
|
|
@ -0,0 +1,134 @@
|
|||
<?php
|
||||
|
||||
class FormatterTest extends \Codeception\TestCase\Test
|
||||
{
|
||||
public function testText2HTML()
|
||||
{
|
||||
$text = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/text2html.source.txt');
|
||||
$html1 = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/text2html.target1.html');
|
||||
$html2 = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/text2html.target2.html');
|
||||
$html3 = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/text2html.target3.html');
|
||||
|
||||
$this->assertEquals($html1, Rhymix\Framework\Formatter::text2html($text));
|
||||
$this->assertEquals($html2, Rhymix\Framework\Formatter::text2html($text, Rhymix\Framework\Formatter::TEXT_NEWLINE_AS_P));
|
||||
$this->assertEquals($html3, Rhymix\Framework\Formatter::text2html($text, Rhymix\Framework\Formatter::TEXT_DOUBLE_NEWLINE_AS_P));
|
||||
}
|
||||
|
||||
public function testHTML2Text()
|
||||
{
|
||||
$html = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/html2text.source.html');
|
||||
$text = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/html2text.target.txt');
|
||||
|
||||
$this->assertEquals($text, Rhymix\Framework\Formatter::html2text($html));
|
||||
}
|
||||
|
||||
public function testMarkdown2HTML()
|
||||
{
|
||||
$markdown = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/markdown2html.source.md');
|
||||
$html1 = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/markdown2html.target1.html');
|
||||
$html2 = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/markdown2html.target2.html');
|
||||
$html3 = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/markdown2html.target3.html');
|
||||
|
||||
$this->assertEquals($html1, Rhymix\Framework\Formatter::markdown2html($markdown));
|
||||
$this->assertEquals($html2, Rhymix\Framework\Formatter::markdown2html($markdown, Rhymix\Framework\Formatter::MD_NEWLINE_AS_BR));
|
||||
$this->assertEquals($html3, Rhymix\Framework\Formatter::markdown2html($markdown, Rhymix\Framework\Formatter::MD_NEWLINE_AS_BR | Rhymix\Framework\Formatter::MD_ENABLE_EXTRA));
|
||||
}
|
||||
|
||||
public function testHTML2Markdown()
|
||||
{
|
||||
$html = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/html2markdown.source.html');
|
||||
$markdown = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/html2markdown.target.md');
|
||||
|
||||
$this->assertEquals($markdown, Rhymix\Framework\Formatter::html2markdown($html));
|
||||
}
|
||||
|
||||
public function testBBCode()
|
||||
{
|
||||
$bbcode = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/bbcode.source.txt');
|
||||
$html = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/bbcode.target.html');
|
||||
|
||||
$this->assertEquals($html, Rhymix\Framework\Formatter::bbcode($bbcode));
|
||||
}
|
||||
|
||||
public function testApplySmartQuotes()
|
||||
{
|
||||
$before = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/smartypants.source.html');
|
||||
$after = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/smartypants.target.html');
|
||||
|
||||
$this->assertEquals($after, Rhymix\Framework\Formatter::applySmartQuotes($before));
|
||||
}
|
||||
|
||||
public function testCompileLESS()
|
||||
{
|
||||
$sources = array(
|
||||
\RX_BASEDIR . 'tests/_data/formatter/less.source1.less',
|
||||
\RX_BASEDIR . 'tests/_data/formatter/less.source2.less',
|
||||
);
|
||||
$variables = array(
|
||||
'foo' => '#123456',
|
||||
'bar' => '320px',
|
||||
);
|
||||
|
||||
$real_target1 = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/less.target1.css');
|
||||
$real_target2 = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/less.target2.css');
|
||||
$test_target1 = \RX_BASEDIR . 'tests/_output/less.target1.css';
|
||||
$test_target2 = \RX_BASEDIR . 'tests/_output/less.target2.css';
|
||||
|
||||
$this->assertTrue(Rhymix\Framework\Formatter::compileLESS($sources, $test_target1, $variables));
|
||||
$this->assertEquals($real_target1, file_get_contents($test_target1));
|
||||
$this->assertTrue(Rhymix\Framework\Formatter::compileLESS($sources, $test_target2, $variables, true));
|
||||
$this->assertEquals($real_target2, file_get_contents($test_target2));
|
||||
|
||||
unlink($test_target1);
|
||||
unlink($test_target2);
|
||||
}
|
||||
|
||||
public function testCompileSCSS()
|
||||
{
|
||||
$sources = array(
|
||||
\RX_BASEDIR . 'tests/_data/formatter/scss.source1.scss',
|
||||
\RX_BASEDIR . 'tests/_data/formatter/scss.source2.scss',
|
||||
);
|
||||
$variables = array(
|
||||
'foo' => '#123456',
|
||||
'bar' => '320px',
|
||||
);
|
||||
|
||||
$real_target1 = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/scss.target1.css');
|
||||
$real_target2 = file_get_contents(\RX_BASEDIR . 'tests/_data/formatter/scss.target2.css');
|
||||
$test_target1 = \RX_BASEDIR . 'tests/_output/scss.target1.css';
|
||||
$test_target2 = \RX_BASEDIR . 'tests/_output/scss.target2.css';
|
||||
|
||||
$this->assertTrue(Rhymix\Framework\Formatter::compileSCSS($sources, $test_target1, $variables));
|
||||
$this->assertEquals($real_target1, file_get_contents($test_target1));
|
||||
$this->assertTrue(Rhymix\Framework\Formatter::compileSCSS($sources, $test_target2, $variables, true));
|
||||
$this->assertEquals($real_target2, file_get_contents($test_target2));
|
||||
|
||||
unlink($test_target1);
|
||||
unlink($test_target2);
|
||||
}
|
||||
|
||||
public function testMinifyCSS()
|
||||
{
|
||||
$source = \RX_BASEDIR . 'tests/_data/formatter/minify.source.css';
|
||||
$real_target = \RX_BASEDIR . 'tests/_data/formatter/minify.target.css';
|
||||
$test_target = \RX_BASEDIR . 'tests/_output/minify.target.css';
|
||||
|
||||
$this->assertTrue(Rhymix\Framework\Formatter::minifyCSS($source, $test_target));
|
||||
$this->assertEquals(file_get_contents($real_target), file_get_contents($test_target));
|
||||
|
||||
unlink($test_target);
|
||||
}
|
||||
|
||||
public function testMinifyJS()
|
||||
{
|
||||
$source = \RX_BASEDIR . 'tests/_data/formatter/minify.source.js';
|
||||
$real_target = \RX_BASEDIR . 'tests/_data/formatter/minify.target.js';
|
||||
$test_target = \RX_BASEDIR . 'tests/_output/minify.target.js';
|
||||
|
||||
$this->assertTrue(Rhymix\Framework\Formatter::minifyJS($source, $test_target));
|
||||
$this->assertEquals(file_get_contents($real_target), file_get_contents($test_target));
|
||||
|
||||
unlink($test_target);
|
||||
}
|
||||
}
|
||||
107
tests/unit/framework/KoreaTest.php
Normal file
107
tests/unit/framework/KoreaTest.php
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
<?php
|
||||
|
||||
class KoreaTest extends \Codeception\TestCase\Test
|
||||
{
|
||||
public function testFormatPhoneNumber()
|
||||
{
|
||||
$this->assertEquals('1588-0000', Rhymix\Framework\Korea::formatPhoneNumber('1588-0000'));
|
||||
$this->assertEquals('02-345-6789', Rhymix\Framework\Korea::formatPhoneNumber('+82 23456789'));
|
||||
$this->assertEquals('02-3000-5000', Rhymix\Framework\Korea::formatPhoneNumber('0230005000'));
|
||||
$this->assertEquals('031-222-3333', Rhymix\Framework\Korea::formatPhoneNumber('82-0312-2233-33'));
|
||||
$this->assertEquals('031-2222-3333', Rhymix\Framework\Korea::formatPhoneNumber('03122223333'));
|
||||
$this->assertEquals('011-444-5555', Rhymix\Framework\Korea::formatPhoneNumber('011 444 5555'));
|
||||
$this->assertEquals('010-6666-7777', Rhymix\Framework\Korea::formatPhoneNumber('82+1066667777'));
|
||||
$this->assertEquals('0303-456-7890', Rhymix\Framework\Korea::formatPhoneNumber('03034567890'));
|
||||
$this->assertEquals('0505-987-6543', Rhymix\Framework\Korea::formatPhoneNumber('050-5987-6543'));
|
||||
$this->assertEquals('070-7432-1000', Rhymix\Framework\Korea::formatPhoneNumber('0707-432-1000'));
|
||||
}
|
||||
|
||||
public function testIsValidPhoneNumber()
|
||||
{
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isValidPhoneNumber('1588-0000'));
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isValidPhoneNumber('02-345-6789'));
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isValidPhoneNumber('+82-2-345-6789'));
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isValidPhoneNumber('+82-02-2345-6789'));
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isValidPhoneNumber('053-444-5555'));
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isValidPhoneNumber('053-4444-5555'));
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isValidPhoneNumber('011-444-5555'));
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isValidPhoneNumber('010-4444-5555'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isValidPhoneNumber('010-4444-55555'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isValidPhoneNumber('010-1234-5678'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isValidPhoneNumber('02-123-4567'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isValidPhoneNumber('02-123456'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isValidPhoneNumber('03-456-7890'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isValidPhoneNumber('090-9876-5432'));
|
||||
}
|
||||
|
||||
public function testIsValidMobilePhoneNumber()
|
||||
{
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isValidMobilePhoneNumber('011-345-6789'));
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isValidMobilePhoneNumber('010-2345-6789'));
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isValidMobilePhoneNumber('+82-11-345-6789'));
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isValidMobilePhoneNumber('82 010-2345-6789'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isValidMobilePhoneNumber('010-1111-1111'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isValidMobilePhoneNumber('02-345-6789'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isValidMobilePhoneNumber('063-9876-5432'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isValidMobilePhoneNumber('070-7654-3210'));
|
||||
}
|
||||
|
||||
public function testIsValidJuminNumber()
|
||||
{
|
||||
// These numbers are fake.
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isValidJuminNumber('123456-3456787'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isValidJuminNumber('123456-3456788'));
|
||||
}
|
||||
|
||||
public function testIsValidCorporationNumber()
|
||||
{
|
||||
// These numbers are fake.
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isValidCorporationNumber('123456-0123453'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isValidCorporationNumber('123456-0123454'));
|
||||
}
|
||||
|
||||
public function testIsValidBusinessNumber()
|
||||
{
|
||||
// These numbers are fake.
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isValidBusinessNumber('123-45-67891'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isValidBusinessNumber('123-45-67892'));
|
||||
}
|
||||
|
||||
public function testIsKoreanIP()
|
||||
{
|
||||
// Private IP ranges.
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isKoreanIP('10.12.34.210'));
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isKoreanIP('127.0.123.45'));
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isKoreanIP('192.168.10.1'));
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isKoreanIP('::1'));
|
||||
|
||||
// Korean IP ranges.
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isKoreanIP('115.71.233.0'));
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isKoreanIP('114.207.12.3'));
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isKoreanIP('2001:0320::1'));
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isKoreanIP('2407:B800::F'));
|
||||
|
||||
// Foreign IP ranges.
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isKoreanIP('216.58.197.0'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isKoreanIP('170.14.168.0'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isKoreanIP('2001:41d0:8:e8ad::1'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isKoreanIP('2404:6800:4005:802::200e'));
|
||||
}
|
||||
|
||||
public function testIsKoreanEmailAddress()
|
||||
{
|
||||
// Test Korean portals.
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isKoreanEmailAddress('test@naver.com'));
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isKoreanEmailAddress('test@hanmail.net'));
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isKoreanEmailAddress('test@worksmobile.com'));
|
||||
|
||||
// Test foreign portals.
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isKoreanEmailAddress('test@gmail.com'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isKoreanEmailAddress('test@hotmail.com'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isKoreanEmailAddress('test@yahoo.com'));
|
||||
|
||||
// Test third-party MX services.
|
||||
$this->assertTrue(Rhymix\Framework\Korea::isKoreanEmailAddress('test@woorimail.com'));
|
||||
$this->assertFalse(Rhymix\Framework\Korea::isKoreanEmailAddress('test@rhymix.org'));
|
||||
}
|
||||
}
|
||||
22
tests/unit/framework/MIMETest.php
Normal file
22
tests/unit/framework/MIMETest.php
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
|
||||
class MIMETest extends \Codeception\TestCase\Test
|
||||
{
|
||||
public function testMIME()
|
||||
{
|
||||
$this->assertEquals('audio/ogg', Rhymix\Framework\MIME::getTypeByExtension('ogg'));
|
||||
$this->assertEquals('image/gif', Rhymix\Framework\MIME::getTypeByExtension('gif'));
|
||||
$this->assertEquals('text/html', Rhymix\Framework\MIME::getTypeByExtension('htm'));
|
||||
|
||||
$this->assertEquals('application/msword', Rhymix\Framework\MIME::getTypeByFilename('attachment.doc'));
|
||||
$this->assertEquals('application/pdf', Rhymix\Framework\MIME::getTypeByFilename('라이믹스.pdf'));
|
||||
$this->assertEquals('application/postscript', Rhymix\Framework\MIME::getTypeByFilename('MyGraphics.v2.eps'));
|
||||
$this->assertEquals('application/vnd.ms-excel', Mail::returnMIMEType('MySpreadsheet.xls'));
|
||||
$this->assertEquals('application/octet-stream', Mail::returnMIMEType('Untitled File'));
|
||||
|
||||
$this->assertEquals('odt', Rhymix\Framework\MIME::getExtensionByType('application/vnd.oasis.opendocument.text'));
|
||||
$this->assertEquals('jpg', Rhymix\Framework\MIME::getExtensionByType('image/jpeg'));
|
||||
$this->assertEquals('mpeg', Rhymix\Framework\MIME::getExtensionByType('video/mpeg'));
|
||||
$this->assertFalse(Rhymix\Framework\MIME::getExtensionByType('application/octet-stream'));
|
||||
}
|
||||
}
|
||||
48
tests/unit/framework/PaginationTest.php
Normal file
48
tests/unit/framework/PaginationTest.php
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
<?php
|
||||
|
||||
class PaginationTest extends \Codeception\TestCase\Test
|
||||
{
|
||||
public function testCountPages()
|
||||
{
|
||||
$this->assertEquals(1, Rhymix\Framework\Pagination::countPages(0, 20));
|
||||
$this->assertEquals(1, Rhymix\Framework\Pagination::countPages(10, 20));
|
||||
$this->assertEquals(1, Rhymix\Framework\Pagination::countPages(20, 20));
|
||||
$this->assertEquals(2, Rhymix\Framework\Pagination::countPages(21, 20));
|
||||
}
|
||||
|
||||
public function testCreateLinks()
|
||||
{
|
||||
$links = Rhymix\Framework\Pagination::createLinks('index.php?page=', 27, 3);
|
||||
$this->assertContains('<div class="pagination">', $links);
|
||||
$this->assertContains('<a href="index.php?page=3">', $links);
|
||||
$this->assertContains('<span class="page_number">1</span>', $links);
|
||||
$this->assertContains('<span class="page_number">10</span>', $links);
|
||||
|
||||
$links = Rhymix\Framework\Pagination::createLinks('/foo/bar/page/', 27, 13);
|
||||
$this->assertContains('<div class="pagination">', $links);
|
||||
$this->assertContains('<a href="/foo/bar/page/13">', $links);
|
||||
$this->assertContains('<span class="page_number">11</span>', $links);
|
||||
$this->assertContains('<span class="page_number">20</span>', $links);
|
||||
|
||||
$links = Rhymix\Framework\Pagination::createLinks('/rhymix?page=$PAGE&foo=bar', 27, 25);
|
||||
$this->assertContains('<div class="pagination">', $links);
|
||||
$this->assertContains('<a href="/rhymix?page=27&foo=bar">', $links);
|
||||
$this->assertContains('<span class="page_number">21</span>', $links);
|
||||
$this->assertContains('<span class="page_number">27</span>', $links);
|
||||
|
||||
$links = Rhymix\Framework\Pagination::createLinks('p', 27, 3, 10, Rhymix\Framework\Pagination::COUNT_STYLE_CONTINUOUS);
|
||||
$this->assertContains('<div class="pagination">', $links);
|
||||
$this->assertContains('<span class="page_number">1</span>', $links);
|
||||
$this->assertContains('<span class="page_number">10</span>', $links);
|
||||
|
||||
$links = Rhymix\Framework\Pagination::createLinks('p', 27, 13, 10, Rhymix\Framework\Pagination::COUNT_STYLE_CONTINUOUS);
|
||||
$this->assertContains('<div class="pagination">', $links);
|
||||
$this->assertContains('<span class="page_number">9</span>', $links);
|
||||
$this->assertContains('<span class="page_number">18</span>', $links);
|
||||
|
||||
$links = Rhymix\Framework\Pagination::createLinks('p', 27, 25, 10, Rhymix\Framework\Pagination::COUNT_STYLE_CONTINUOUS);
|
||||
$this->assertContains('<div class="pagination">', $links);
|
||||
$this->assertContains('<span class="page_number">18</span>', $links);
|
||||
$this->assertContains('<span class="page_number">27</span>', $links);
|
||||
}
|
||||
}
|
||||
260
tests/unit/framework/StorageTest.php
Normal file
260
tests/unit/framework/StorageTest.php
Normal file
|
|
@ -0,0 +1,260 @@
|
|||
<?php
|
||||
|
||||
class StorageTest extends \Codeception\TestCase\Test
|
||||
{
|
||||
public function _before()
|
||||
{
|
||||
Rhymix\Framework\Storage::deleteDirectory(\RX_BASEDIR . 'tests/_output', false);
|
||||
}
|
||||
|
||||
public function _after()
|
||||
{
|
||||
Rhymix\Framework\Storage::deleteDirectory(\RX_BASEDIR . 'tests/_output', false);
|
||||
}
|
||||
|
||||
public function _failed()
|
||||
{
|
||||
Rhymix\Framework\Storage::deleteDirectory(\RX_BASEDIR . 'tests/_output', false);
|
||||
}
|
||||
|
||||
public function testExists()
|
||||
{
|
||||
$this->assertTrue(Rhymix\Framework\Storage::exists(__FILE__));
|
||||
$this->assertTrue(Rhymix\Framework\Storage::exists(__DIR__));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::exists(__FILE__ . '.nonexistent.suffix'));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::exists(__DIR__ . '/nonexistent.subdirectory'));
|
||||
}
|
||||
|
||||
public function testIsFile()
|
||||
{
|
||||
$this->assertTrue(Rhymix\Framework\Storage::isFile(__FILE__));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isFile(__DIR__));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isFile(__FILE__ . '.nonexistent.suffix'));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isFile(__DIR__ . '/nonexistent.subdirectory'));
|
||||
}
|
||||
|
||||
public function testIsEmptyFile()
|
||||
{
|
||||
$emptyfile = \RX_BASEDIR . 'tests/_output/emptyfile.txt';
|
||||
file_put_contents($emptyfile, '');
|
||||
|
||||
$this->assertTrue(Rhymix\Framework\Storage::isEmptyFile($emptyfile));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isEmptyFile($emptyfile . '.nonexistent.suffix'));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isEmptyFile(__FILE__));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isEmptyFile(__DIR__));
|
||||
}
|
||||
|
||||
public function testIsDirectory()
|
||||
{
|
||||
$this->assertTrue(Rhymix\Framework\Storage::isDirectory(__DIR__));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isDirectory(__FILE__));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isDirectory(__FILE__ . '.nonexistent.suffix'));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isDirectory(__DIR__ . '/nonexistent.subdirectory'));
|
||||
}
|
||||
|
||||
public function testIsEmptyDirectory()
|
||||
{
|
||||
$emptydir = \RX_BASEDIR . 'tests/_output/emptydir';
|
||||
mkdir($emptydir);
|
||||
|
||||
$this->assertTrue(Rhymix\Framework\Storage::isEmptyDirectory($emptydir));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isEmptyDirectory($emptydir . '/nonexistent.subdirectory'));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isEmptyDirectory(__FILE__));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isEmptyDirectory(__DIR__));
|
||||
}
|
||||
|
||||
public function testIsSymlink()
|
||||
{
|
||||
if (strncasecmp(\PHP_OS, 'Win', 3) === 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$symlink_source = \RX_BASEDIR . 'tests/_output/link.source.txt';
|
||||
$symlink_target = \RX_BASEDIR . 'tests/_output/link.target.txt';
|
||||
file_put_contents($symlink_target, 'foobar');
|
||||
symlink($symlink_target, $symlink_source);
|
||||
|
||||
$this->assertTrue(Rhymix\Framework\Storage::isSymlink($symlink_source));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isSymlink($symlink_target));
|
||||
unlink($symlink_target);
|
||||
|
||||
$this->assertTrue(Rhymix\Framework\Storage::isSymlink($symlink_source));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isValidSymlink($symlink_source));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isSymlink($symlink_target));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isValidSymlink($symlink_target));
|
||||
}
|
||||
|
||||
public function testIsReadable()
|
||||
{
|
||||
$this->assertTrue(Rhymix\Framework\Storage::isReadable(__FILE__));
|
||||
$this->assertTrue(Rhymix\Framework\Storage::isReadable(__DIR__));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isReadable(__FILE__ . '.nonexistent.suffix'));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isReadable('/dev/nonexistent'));
|
||||
}
|
||||
|
||||
public function testIsWritable()
|
||||
{
|
||||
$testfile = \RX_BASEDIR . 'tests/_output/testfile.txt';
|
||||
file_put_contents($testfile, 'foobar');
|
||||
|
||||
$this->assertTrue(Rhymix\Framework\Storage::isWritable(__FILE__));
|
||||
$this->assertTrue(Rhymix\Framework\Storage::isWritable(__DIR__));
|
||||
$this->assertTrue(Rhymix\Framework\Storage::isWritable($testfile));
|
||||
$this->assertTrue(Rhymix\Framework\Storage::isWritable(dirname($testfile)));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isWritable($testfile . '.nonexistent.suffix'));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::isWritable('/dev/nonexistent'));
|
||||
}
|
||||
|
||||
public function testGetSize()
|
||||
{
|
||||
$this->assertEquals(filesize(__FILE__), Rhymix\Framework\Storage::getSize(__FILE__));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::getSize(__DIR__));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::getSize(__FILE__ . '.nonexistent.suffix'));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::getSize('/dev/nonexistent'));
|
||||
}
|
||||
|
||||
public function testRead()
|
||||
{
|
||||
$this->assertEquals(file_get_contents(__FILE__), Rhymix\Framework\Storage::read(__FILE__));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::read(__FILE__ . '.nonexistent.suffix'));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::read(__DIR__));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::read('/dev/nonexistent'));
|
||||
}
|
||||
|
||||
public function testWrite()
|
||||
{
|
||||
$testfile = \RX_BASEDIR . 'tests/_output/subdirectory/testfile.txt';
|
||||
|
||||
$this->assertFalse(file_exists($testfile));
|
||||
$this->assertTrue(Rhymix\Framework\Storage::write($testfile, 'foobarbazzjazz'));
|
||||
$this->assertTrue(file_exists($testfile));
|
||||
$this->assertEquals('foobarbazzjazz', file_get_contents($testfile));
|
||||
}
|
||||
|
||||
public function testCopy()
|
||||
{
|
||||
$source = \RX_BASEDIR . 'tests/_output/copy.source.txt';
|
||||
$target = \RX_BASEDIR . 'tests/_output/copy.target.txt';
|
||||
file_put_contents($source, 'foobarbaz');
|
||||
chmod($source, 0646);
|
||||
|
||||
$this->assertTrue(Rhymix\Framework\Storage::copy($source, $target));
|
||||
$this->assertTrue(file_exists($target));
|
||||
$this->assertTrue(file_get_contents($target) === 'foobarbaz');
|
||||
|
||||
if (strncasecmp(\PHP_OS, 'Win', 3) !== 0)
|
||||
{
|
||||
$this->assertEquals(0646, fileperms($target) & 0777);
|
||||
$this->assertTrue(Rhymix\Framework\Storage::copy($source, $target, 0755));
|
||||
$this->assertEquals(0755, fileperms($target) & 0777);
|
||||
}
|
||||
}
|
||||
|
||||
public function testMove()
|
||||
{
|
||||
$source = \RX_BASEDIR . 'tests/_output/move.source.txt';
|
||||
$target = \RX_BASEDIR . 'tests/_output/move.target.txt';
|
||||
file_put_contents($source, 'foobarbaz');
|
||||
|
||||
$this->assertTrue(Rhymix\Framework\Storage::move($source, $target));
|
||||
$this->assertTrue(file_exists($target));
|
||||
$this->assertTrue(file_get_contents($target) === 'foobarbaz');
|
||||
$this->assertFalse(file_exists($source));
|
||||
}
|
||||
|
||||
public function testDelete()
|
||||
{
|
||||
$testfile = \RX_BASEDIR . 'tests/_output/testfile.txt';
|
||||
file_put_contents($testfile, 'foobar');
|
||||
|
||||
$this->assertTrue(Rhymix\Framework\Storage::delete($testfile));
|
||||
$this->assertFalse(file_exists($testfile));
|
||||
}
|
||||
|
||||
public function testCreateDirectory()
|
||||
{
|
||||
$emptydir = \RX_BASEDIR . 'tests/_output/emptydir';
|
||||
|
||||
$this->assertTrue(Rhymix\Framework\Storage::createDirectory($emptydir));
|
||||
$this->assertTrue(file_exists($emptydir) && is_dir($emptydir));
|
||||
}
|
||||
|
||||
public function testReadDirectory()
|
||||
{
|
||||
$testdir = \RX_BASEDIR . 'tests/_output/testdir';
|
||||
mkdir($testdir);
|
||||
mkdir($testdir . '/subdir');
|
||||
file_put_contents($testdir . '/.dotfile', '');
|
||||
file_put_contents($testdir . '/foo', 'foo');
|
||||
file_put_contents($testdir . '/bar', 'bar');
|
||||
file_put_contents($testdir . '/baz', 'baz');
|
||||
|
||||
$this->assertEquals(array($testdir . '/bar', $testdir . '/baz', $testdir . '/foo'), Rhymix\Framework\Storage::readDirectory($testdir));
|
||||
$this->assertEquals(array('bar', 'baz', 'foo'), Rhymix\Framework\Storage::readDirectory($testdir, false));
|
||||
$this->assertEquals(array('bar', 'baz', 'foo', 'subdir'), Rhymix\Framework\Storage::readDirectory($testdir, false, true, false));
|
||||
$this->assertEquals(array('.dotfile', 'bar', 'baz', 'foo'), Rhymix\Framework\Storage::readDirectory($testdir, false, false, true));
|
||||
$this->assertEquals(array('.dotfile', 'bar', 'baz', 'foo', 'subdir'), Rhymix\Framework\Storage::readDirectory($testdir, false, false, false));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::readDirectory('/opt/nonexistent.foobar'));
|
||||
}
|
||||
|
||||
public function testCopyDirectory()
|
||||
{
|
||||
$sourcedir = \RX_BASEDIR . 'tests/_output/sourcedir';
|
||||
mkdir($sourcedir);
|
||||
mkdir($sourcedir . '/subdir');
|
||||
file_put_contents($sourcedir . '/bar', 'bar');
|
||||
file_put_contents($sourcedir . '/subdir/baz', 'baz');
|
||||
$targetdir = \RX_BASEDIR . 'tests/_output/targetdir';
|
||||
|
||||
$this->assertTrue(Rhymix\Framework\Storage::copyDirectory($sourcedir, $targetdir));
|
||||
$this->assertTrue(file_exists($targetdir . '/bar'));
|
||||
$this->assertTrue(file_exists($targetdir . '/subdir/baz'));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::copyDirectory($sourcedir, '/opt/nonexistent.foobar'));
|
||||
}
|
||||
|
||||
public function testMoveDirectory()
|
||||
{
|
||||
$sourcedir = \RX_BASEDIR . 'tests/_output/sourcedir';
|
||||
mkdir($sourcedir);
|
||||
mkdir($sourcedir . '/subdir');
|
||||
file_put_contents($sourcedir . '/bar', 'bar');
|
||||
file_put_contents($sourcedir . '/subdir/baz', 'baz');
|
||||
$targetdir = \RX_BASEDIR . 'tests/_output/targetdir';
|
||||
|
||||
$this->assertTrue(Rhymix\Framework\Storage::moveDirectory($sourcedir, $targetdir));
|
||||
$this->assertTrue(file_exists($targetdir . '/bar'));
|
||||
$this->assertTrue(file_exists($targetdir . '/subdir/baz'));
|
||||
$this->assertFalse(file_exists($sourcedir));
|
||||
}
|
||||
|
||||
public function testDeleteDirectory()
|
||||
{
|
||||
$sourcedir = \RX_BASEDIR . 'tests/_output/sourcedir';
|
||||
mkdir($sourcedir);
|
||||
mkdir($sourcedir . '/subdir');
|
||||
file_put_contents($sourcedir . '/bar', 'bar');
|
||||
file_put_contents($sourcedir . '/subdir/baz', 'baz');
|
||||
$nonexistent = \RX_BASEDIR . 'tests/_output/targetdir';
|
||||
|
||||
$this->assertTrue(Rhymix\Framework\Storage::deleteDirectory($sourcedir));
|
||||
$this->assertFalse(file_exists($sourcedir . '/subdir/baz'));
|
||||
$this->assertFalse(file_exists($sourcedir));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::deleteDirectory($nonexistent));
|
||||
}
|
||||
|
||||
public function testDeleteDirectoryKeepRoot()
|
||||
{
|
||||
$sourcedir = \RX_BASEDIR . 'tests/_output/sourcedir';
|
||||
mkdir($sourcedir);
|
||||
mkdir($sourcedir . '/subdir');
|
||||
file_put_contents($sourcedir . '/bar', 'bar');
|
||||
file_put_contents($sourcedir . '/subdir/baz', 'baz');
|
||||
$nonexistent = \RX_BASEDIR . 'tests/_output/targetdir';
|
||||
|
||||
$this->assertTrue(Rhymix\Framework\Storage::deleteDirectory($sourcedir, false));
|
||||
$this->assertFalse(file_exists($sourcedir . '/subdir/baz'));
|
||||
$this->assertTrue(file_exists($sourcedir));
|
||||
$this->assertFalse(Rhymix\Framework\Storage::deleteDirectory($nonexistent));
|
||||
}
|
||||
}
|
||||
71
tests/unit/framework/TimerTest.php
Normal file
71
tests/unit/framework/TimerTest.php
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
|
||||
class TimerTest extends \Codeception\TestCase\Test
|
||||
{
|
||||
function testStartStop()
|
||||
{
|
||||
$t1 = microtime(true);
|
||||
usleep(1000);
|
||||
$started = Rhymix\Framework\Timer::start();
|
||||
usleep(1000);
|
||||
$t2 = microtime(true);
|
||||
usleep(1000);
|
||||
$elapsed = Rhymix\Framework\Timer::stop();
|
||||
usleep(1000);
|
||||
$t3 = microtime(true);
|
||||
|
||||
$this->assertGreaterThanOrEqual($t1, $started);
|
||||
$this->assertLessThanOrEqual($t2, $started);
|
||||
$this->assertGreaterThanOrEqual($t2 - $started, $elapsed);
|
||||
$this->assertLessThanOrEqual($t3 - $t1, $elapsed);
|
||||
$this->assertGreaterThan(0, $elapsed);
|
||||
}
|
||||
|
||||
function testNestedTimers()
|
||||
{
|
||||
$t1 = Rhymix\Framework\Timer::start();
|
||||
usleep(1000);
|
||||
$t2 = Rhymix\Framework\Timer::start();
|
||||
usleep(1000);
|
||||
$t3 = Rhymix\Framework\Timer::stop();
|
||||
usleep(1000);
|
||||
$t4 = Rhymix\Framework\Timer::stop();
|
||||
|
||||
$this->assertGreaterThanOrEqual($t1, $t2);
|
||||
$this->assertGreaterThan($t3, $t4);
|
||||
}
|
||||
|
||||
function testMultipleTimers()
|
||||
{
|
||||
$t1 = Rhymix\Framework\Timer::start('timer1');
|
||||
usleep(5000);
|
||||
$t2 = Rhymix\Framework\Timer::start('timer2');
|
||||
usleep(1000);
|
||||
$t3 = Rhymix\Framework\Timer::stop('timer1');
|
||||
usleep(2000);
|
||||
$t4 = Rhymix\Framework\Timer::stop('timer2');
|
||||
|
||||
$this->assertGreaterThanOrEqual($t1, $t2);
|
||||
$this->assertGreaterThanOrEqual($t4, $t3);
|
||||
}
|
||||
|
||||
function testTimerFormat()
|
||||
{
|
||||
$t1 = Rhymix\Framework\Timer::start();
|
||||
usleep(1000);
|
||||
$t2 = Rhymix\Framework\Timer::stopFormat();
|
||||
|
||||
$this->assertRegexp('/^[0-9\.,]+ms$/', $t2);
|
||||
}
|
||||
|
||||
function testTimerSinceStartup()
|
||||
{
|
||||
$t1 = Rhymix\Framework\Timer::sinceStartup();
|
||||
$t2 = Rhymix\Framework\Timer::sinceStartup();
|
||||
|
||||
$this->assertGreaterThanOrEqual($t1, $t2);
|
||||
|
||||
$t3 = Rhymix\Framework\Timer::sinceStartupFormat();
|
||||
$this->assertRegexp('/^[0-9\.,]+ms$/', $t3);
|
||||
}
|
||||
}
|
||||
104
tests/unit/framework/UATest.php
Normal file
104
tests/unit/framework/UATest.php
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
<?php
|
||||
|
||||
class UATest extends \Codeception\TestCase\Test
|
||||
{
|
||||
public function testIsMobile()
|
||||
{
|
||||
// Phones
|
||||
$this->assertTrue(Rhymix\Framework\UA::isMobile('Mozilla/5.0 (Linux; Android 5.0; Nexus 5 Build/LPX13D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36'));
|
||||
$this->assertTrue(Rhymix\Framework\UA::isMobile('Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25'));
|
||||
|
||||
// Tablets
|
||||
$this->assertTrue(Rhymix\Framework\UA::isMobile('Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25'));
|
||||
$this->assertTrue(Rhymix\Framework\UA::isMobile('Mozilla/5.0 (Linux; Android 4.4.2; SM-T530 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Safari/537.36'));
|
||||
|
||||
// Not mobile
|
||||
$this->assertFalse(Rhymix\Framework\UA::isMobile('Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko'));
|
||||
$this->assertFalse(Rhymix\Framework\UA::isMobile('Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'));
|
||||
$this->assertFalse(Rhymix\Framework\UA::isMobile('Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0'));
|
||||
$this->assertFalse(Rhymix\Framework\UA::isMobile('Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16'));
|
||||
}
|
||||
|
||||
public function testIsTablet()
|
||||
{
|
||||
// Phones
|
||||
$this->assertFalse(Rhymix\Framework\UA::isTablet('Mozilla/5.0 (Linux; Android 5.0; Nexus 5 Build/LPX13D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36'));
|
||||
$this->assertFalse(Rhymix\Framework\UA::isTablet('Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25'));
|
||||
|
||||
// Tablets
|
||||
$this->assertTrue(Rhymix\Framework\UA::isTablet('Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25'));
|
||||
$this->assertTrue(Rhymix\Framework\UA::isTablet('Mozilla/5.0 (Linux; Android 4.4.2; SM-T530 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Safari/537.36'));
|
||||
|
||||
// Not mobile
|
||||
$this->assertFalse(Rhymix\Framework\UA::isTablet('Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko'));
|
||||
$this->assertFalse(Rhymix\Framework\UA::isTablet('Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)'));
|
||||
}
|
||||
|
||||
public function testIsRobot()
|
||||
{
|
||||
// Robot
|
||||
$this->assertTrue(Rhymix\Framework\UA::isRobot('Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)'));
|
||||
$this->assertTrue(Rhymix\Framework\UA::isRobot('Googlebot/2.1 (+http://www.googlebot.com/bot.html)'));
|
||||
$this->assertTrue(Rhymix\Framework\UA::isRobot('Yeti/1.0 (NHN Corp.; http://help.naver.com/robots/)'));
|
||||
|
||||
// Not robot
|
||||
$this->assertFalse(Rhymix\Framework\UA::isRobot('Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25'));
|
||||
$this->assertFalse(Rhymix\Framework\UA::isRobot('Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25'));
|
||||
$this->assertFalse(Rhymix\Framework\UA::isRobot('Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko'));
|
||||
}
|
||||
|
||||
public function testGetBrowserInfo()
|
||||
{
|
||||
// Android default browser
|
||||
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/5.0 (Linux; U; Android 4.0.3; Device Name) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30');
|
||||
$this->assertEquals('Android', $browser->browser);
|
||||
$this->assertEquals('4.0', $browser->version);
|
||||
$this->assertEquals('Android', $browser->os);
|
||||
$this->assertTrue($browser->is_mobile);
|
||||
$this->assertTrue($browser->is_tablet);
|
||||
|
||||
// Mobile Chrome
|
||||
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/5.0 (Linux; Android 5.0; Nexus 5 Build/LPX13D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36');
|
||||
$this->assertEquals('Chrome', $browser->browser);
|
||||
$this->assertEquals('38.0', $browser->version);
|
||||
$this->assertEquals('Android', $browser->os);
|
||||
$this->assertTrue($browser->is_mobile);
|
||||
$this->assertFalse($browser->is_tablet);
|
||||
|
||||
// Edge
|
||||
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136');
|
||||
$this->assertEquals('Edge', $browser->browser);
|
||||
$this->assertEquals('12.0', $browser->version);
|
||||
$this->assertEquals('Windows', $browser->os);
|
||||
$this->assertFalse($browser->is_mobile);
|
||||
$this->assertFalse($browser->is_tablet);
|
||||
|
||||
// IE 11
|
||||
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko');
|
||||
$this->assertEquals('IE', $browser->browser);
|
||||
$this->assertEquals('11.0', $browser->version);
|
||||
$this->assertEquals('Windows', $browser->os);
|
||||
|
||||
// IE 10 in compatibility mode
|
||||
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/4.0 (Compatible; MSIE 8.0; Windows NT 5.2; Trident/6.0)');
|
||||
$this->assertEquals('IE', $browser->browser);
|
||||
$this->assertEquals('10.0', $browser->version);
|
||||
|
||||
// IE 8 in compatibility mode
|
||||
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0)');
|
||||
$this->assertEquals('IE', $browser->browser);
|
||||
$this->assertEquals('8.0', $browser->version);
|
||||
|
||||
// Linux Chrome
|
||||
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36');
|
||||
$this->assertEquals('Chrome', $browser->browser);
|
||||
$this->assertEquals('41.0', $browser->version);
|
||||
$this->assertEquals('Linux', $browser->os);
|
||||
|
||||
// OS X Firefox
|
||||
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10; rv:33.0) Gecko/20100101 Firefox/33.0');
|
||||
$this->assertEquals('Firefox', $browser->browser);
|
||||
$this->assertEquals('33.0', $browser->version);
|
||||
$this->assertEquals('OS X', $browser->os);
|
||||
}
|
||||
}
|
||||
41
tests/unit/framework/i18nTest.php
Normal file
41
tests/unit/framework/i18nTest.php
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
|
||||
class i18nTest extends \Codeception\TestCase\Test
|
||||
{
|
||||
public function testListCountries()
|
||||
{
|
||||
$sort_code_2 = Rhymix\Framework\i18n::listCountries(Rhymix\Framework\i18n::SORT_CODE_2);
|
||||
$this->assertEquals('AD', array_first($sort_code_2)->iso_3166_1_alpha2);
|
||||
$this->assertEquals('AND', array_first_key($sort_code_2));
|
||||
|
||||
$sort_code_3 = Rhymix\Framework\i18n::listCountries(Rhymix\Framework\i18n::SORT_CODE_3);
|
||||
$this->assertEquals('ABW', array_first($sort_code_3)->iso_3166_1_alpha3);
|
||||
$this->assertEquals('ABW', array_first_key($sort_code_3));
|
||||
|
||||
$sort_code_n = Rhymix\Framework\i18n::listCountries(Rhymix\Framework\i18n::SORT_CODE_NUMERIC);
|
||||
$this->assertEquals('004', array_first($sort_code_n)->iso_3166_1_numeric);
|
||||
$this->assertEquals('AFG', array_first_key($sort_code_n));
|
||||
|
||||
$sort_cctld = Rhymix\Framework\i18n::listCountries(Rhymix\Framework\i18n::SORT_CCTLD);
|
||||
$this->assertEquals('zw', array_last($sort_cctld)->cctld);
|
||||
$this->assertEquals('ZWE', array_last_key($sort_cctld));
|
||||
|
||||
$sort_english = Rhymix\Framework\i18n::listCountries(Rhymix\Framework\i18n::SORT_NAME_ENGLISH);
|
||||
$this->assertEquals('Afghanistan', array_first($sort_english)->name_english);
|
||||
$this->assertEquals('AFG', array_first_key($sort_english));
|
||||
$this->assertEquals('Åland Islands', array_last($sort_english)->name_english);
|
||||
$this->assertEquals('ALA', array_last_key($sort_english));
|
||||
|
||||
$sort_korean = Rhymix\Framework\i18n::listCountries(Rhymix\Framework\i18n::SORT_NAME_KOREAN);
|
||||
$this->assertEquals('가나', array_first($sort_korean)->name_korean);
|
||||
$this->assertEquals('GHA', array_first_key($sort_korean));
|
||||
$this->assertEquals('홍콩', array_last($sort_korean)->name_korean);
|
||||
$this->assertEquals('HKG', array_last_key($sort_korean));
|
||||
|
||||
$sort_native = Rhymix\Framework\i18n::listCountries(Rhymix\Framework\i18n::SORT_NAME_NATIVE);
|
||||
$this->assertEquals('Amerika Sāmoa', array_first($sort_native)->name_native);
|
||||
$this->assertEquals('대한민국', $sort_native['KOR']->name_korean);
|
||||
$this->assertEquals('United States of America', $sort_native['USA']->name_english);
|
||||
$this->assertEquals('nz', $sort_native['NZL']->cctld);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue