20 lines
923 B
PHP
20 lines
923 B
PHP
<?php
|
|
|
|
use AKSRT\Finance\BusinessNumber;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
final class BusinessNumberTest extends TestCase {
|
|
public function test_prefix_is_uppercased_filtered_and_limited(): void {
|
|
self::assertSame('AK', BusinessNumber::normalize_prefix('', 'AK'));
|
|
self::assertSame('TX_TEST-9', BusinessNumber::normalize_prefix(' tx_测test-9 ', 'TX'));
|
|
self::assertSame('ABCDEFGHIJKL', BusinessNumber::normalize_prefix('abcdefghijklmnop', 'AK'));
|
|
self::assertSame('TX', BusinessNumber::normalize_prefix('中文', 'TX'));
|
|
}
|
|
|
|
public function test_candidate_uses_supplied_site_time_and_six_digit_random_suffix(): void {
|
|
$time = new DateTimeImmutable('2026-08-25 13:14:15', new DateTimeZone('Asia/Shanghai'));
|
|
self::assertSame('AK20260825131415000007', BusinessNumber::candidate('ak', $time, 7));
|
|
self::assertMatchesRegularExpression('/^TX\d{14}\d{6}$/', BusinessNumber::candidate('TX', $time, 999999));
|
|
}
|
|
}
|