1
1
Fork 0
mirror of https://code.mensbeam.com/MensBeam/Arsse.git synced 2024-12-23 17:12:41 +00:00
Arsse/tests/cases/Misc/TestContext.php

83 lines
3.1 KiB
PHP
Raw Normal View History

<?php
/** @license MIT
* Copyright 2017 J. King, Dustin Wilson et al.
* See LICENSE and AUTHORS files for details */
declare(strict_types=1);
2017-12-22 03:47:19 +00:00
namespace JKingWeb\Arsse\TestCase\Misc;
2017-08-29 14:50:31 +00:00
use JKingWeb\Arsse\Misc\Context;
2017-07-20 22:36:03 +00:00
/** @covers \JKingWeb\Arsse\Misc\Context */
2017-12-22 03:47:19 +00:00
class TestContext extends \JKingWeb\Arsse\Test\AbstractTest {
2017-08-29 14:50:31 +00:00
public function testVerifyInitialState() {
$c = new Context;
2017-08-29 14:50:31 +00:00
foreach ((new \ReflectionObject($c))->getMethods(\ReflectionMethod::IS_PUBLIC) as $m) {
if ($m->isConstructor() || $m->isStatic()) {
2017-07-21 02:40:09 +00:00
continue;
}
$method = $m->name;
$this->assertFalse($c->$method(), "Context method $method did not initially return false");
$this->assertEquals(null, $c->$method, "Context property $method is not initially falsy");
}
}
2017-08-29 14:50:31 +00:00
public function testSetContextOptions() {
$v = [
'reverse' => true,
'limit' => 10,
'offset' => 5,
'folder' => 42,
'folderShallow' => 42,
'subscription' => 2112,
'article' => 255,
'edition' => 65535,
'latestArticle' => 47,
'oldestArticle' => 1337,
'latestEdition' => 47,
'oldestEdition' => 1337,
'unread' => true,
'starred' => true,
'modifiedSince' => new \DateTime(),
'notModifiedSince' => new \DateTime(),
'markedSince' => new \DateTime(),
'notMarkedSince' => new \DateTime(),
'editions' => [1,2],
'articles' => [1,2],
2017-10-13 04:04:26 +00:00
'label' => 2112,
'labelName' => "Rush",
'labelled' => true,
'annotated' => true,
];
$times = ['modifiedSince','notModifiedSince','markedSince','notMarkedSince'];
$c = new Context;
2017-08-29 14:50:31 +00:00
foreach ((new \ReflectionObject($c))->getMethods(\ReflectionMethod::IS_PUBLIC) as $m) {
if ($m->isConstructor() || $m->isStatic()) {
2017-07-21 02:40:09 +00:00
continue;
}
$method = $m->name;
$this->assertArrayHasKey($method, $v, "Context method $method not included in test");
$this->assertInstanceOf(Context::class, $c->$method($v[$method]));
$this->assertTrue($c->$method());
2017-08-29 14:50:31 +00:00
if (in_array($method, $times)) {
2017-09-28 14:16:24 +00:00
$this->assertTime($c->$method, $v[$method], "Context method $method did not return the expected results");
} else {
2017-09-28 14:16:24 +00:00
$this->assertSame($c->$method, $v[$method], "Context method $method did not return the expected results");
}
2018-12-05 17:54:19 +00:00
// clear the context option
$c->$method(null);
$this->assertFalse($c->$method());
}
}
2017-08-29 14:50:31 +00:00
public function testCleanArrayValues() {
$methods = ["articles", "editions"];
$in = [1, "2", 3.5, 3.0, "ook", 0, -20, true, false, null, new \DateTime(), -1.0];
$out = [1,2, 3];
$c = new Context;
2017-08-29 14:50:31 +00:00
foreach ($methods as $method) {
$this->assertSame($out, $c->$method($in)->$method, "Context method $method did not return the expected results");
}
}
2017-08-29 14:50:31 +00:00
}