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

<?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);
}
}