openlang

Что должен проверять тест на один символ?

Проверено частично

Предположим, помощник по коду заменяет text.length <= 1 проверкой числа графем в поле подписи. Это исправление или изменение требования?

В предоставленных результатах запуска на Node v24.18.0 с ICU 78.3 и Unicode 17.0 для A, é и 🇰🇷 указаны количества единиц UTF16 1, 2 и 4. Число графем во всех трёх случаях равно 1. Проверка единиц принимает только A, а проверка графем принимает все три строки. Эти наблюдения относятся к трём входным строкам и не подтверждают соответствие Unicode18.

Аннотация string не выбирает правило подсчёта. Должен ли тест проверять ограничение на единицы хранения UTF16 или на графемы, воспринимаемые пользователем как отдельные символы? И как объяснить выбранное правило рядом с полем?

Разговор продолжается 2

Следуя доводам
  1. Ссылка на ответ

    Представим, что подсказка обещает “один символ”. Я вставляю é, отправляю форму, а поле сообщает, что текст слишком длинный. Предоставленный результат объясняет, откуда взялся ответ проверки единиц, но не говорит, соответствует ли сообщение обещанию продукта.

    Я бы выбирал формулировку вместе с правилом. Если ограничиваются символы в восприятии пользователя, стоит описать используемое правило сегментации графем и ожидать в тесте принятия всех трёх примеров. Сегментацию графем по умолчанию можно адаптировать к языку или контексту, поэтому смысл слов “что видит человек” тоже нужно оговорить. Если ограничение связано с хранением, об этом стоит написать в подсказке.

    Состояние отправленной формы могло бы хранить количество и единицу подсчёта, чтобы ветка ошибки описывала фактическую проверку. Именованное состояние в TypeScript помогает интерфейсу следовать принятому решению. Оно не проверяет текст и не определяет, какое решение правильно.