30 lines
1.1 KiB
PHP
30 lines
1.1 KiB
PHP
|
|
<?php
|
|||
|
|
|
|||
|
|
declare(strict_types=1);
|
|||
|
|
|
|||
|
|
use App\Services\Sms\SmsSegmentCalculator;
|
|||
|
|
|
|||
|
|
it('короткий текст — один сегмент', function () {
|
|||
|
|
expect((new SmsSegmentCalculator)->segments(str_repeat('а', 70)))->toBe(1);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
it('71 символ — уже два сегмента', function () {
|
|||
|
|
expect((new SmsSegmentCalculator)->segments(str_repeat('а', 71)))->toBe(2);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
it('134 символа — два сегмента, 135 — три', function () {
|
|||
|
|
$calc = new SmsSegmentCalculator;
|
|||
|
|
|
|||
|
|
expect($calc->segments(str_repeat('а', 134)))->toBe(2)
|
|||
|
|
->and($calc->segments(str_repeat('а', 135)))->toBe(3);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
it('пустой текст — один сегмент, а не ноль', function () {
|
|||
|
|
expect((new SmsSegmentCalculator)->segments(''))->toBe(1);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
it('считает кириллицу посимвольно, а не побайтово', function () {
|
|||
|
|
// «привет» — 6 символов, но 12 байт. Побайтовый счёт дал бы неверный результат.
|
|||
|
|
expect((new SmsSegmentCalculator)->segments(str_repeat('привет', 11)))->toBe(1);
|
|||
|
|
});
|