You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
1.3 KiB
33 lines
1.3 KiB
|
21 hours ago
|
<?php
|
||
|
|
|
||
|
|
namespace Tests\Unit;
|
||
|
|
|
||
|
|
use App\Services\Crawl\ArxivListUrlParser;
|
||
|
|
use App\Services\Crawl\CrawlKeywordParser;
|
||
|
|
use PHPUnit\Framework\TestCase;
|
||
|
|
|
||
|
|
class ArxivListUrlParserTest extends TestCase
|
||
|
|
{
|
||
|
|
public function test_parses_category_list_urls(): void
|
||
|
|
{
|
||
|
|
$parsed = ArxivListUrlParser::parse('https://arxiv.org/list/cs/new');
|
||
|
|
$this->assertSame(['category' => 'cs', 'slice' => 'new'], $parsed);
|
||
|
|
$this->assertSame('cat:cs*', ArxivListUrlParser::buildCategorySearchQuery('https://arxiv.org/list/cs/new'));
|
||
|
|
$this->assertSame('cat:cs.AI', ArxivListUrlParser::buildCategorySearchQuery('https://arxiv.org/list/cs.AI/new'));
|
||
|
|
$this->assertSame('cat:astro-ph*', ArxivListUrlParser::buildCategorySearchQuery('https://arxiv.org/list/astro-ph/new'));
|
||
|
|
}
|
||
|
|
|
||
|
|
public function test_builds_list_page_url_with_paging(): void
|
||
|
|
{
|
||
|
|
$url = ArxivListUrlParser::buildListPageUrl('https://arxiv.org/list/math/new', 50, 100);
|
||
|
|
$this->assertStringContainsString('skip=50', $url);
|
||
|
|
$this->assertStringContainsString('show=100', $url);
|
||
|
|
}
|
||
|
|
|
||
|
|
public function test_combines_category_and_keyword_queries(): void
|
||
|
|
{
|
||
|
|
$query = CrawlKeywordParser::combineArxivSearchQueries('cat:math*', 'graph neural');
|
||
|
|
$this->assertSame('(cat:math*) AND ((all:graph AND all:neural))', $query);
|
||
|
|
}
|
||
|
|
}
|