Сводка, собранная из reference/OneScript/tests/*.os (186 файлов, формат
xUnitFor1C). Ориентир для задач T3–T19 — что обязаны поддержать лексер/парсер/
рантайм/stdlib.
Полный справочник реализованных функций и объектов (с параметрами, возвращаемыми значениями, полями и методами) —
reference.md. Здесь — поверхность языка по эталонным тестам, а не по текущей реализации.
- Модульная переменная:
Перем юТест; - Структура модуля:
#Использовать→Перем→ процедуры/функции → исполняемый код; импорт после кода — ошибка, локальныеПерем— в начале метода. Объявления после кода и вложенные методы — ошибка разбора.Возврат— только в методе (функция — со значением, процедура — без),Прервать/Продолжить— только в цикле,ВызватьИсключение;— только вИсключение. - Присваивание:
имя = "Никита";(в выражении=— сравнение на равенство). - Функции/процедуры:
Функция Имя(Парам) Экспорт … Возврат X; КонецФункции,Процедура Имя() … КонецПроцедуры. - Условия:
Если X Тогда … ИначеЕсли Y Тогда … Иначе … КонецЕсли; - Циклы:
Для Сч = 0 По N Цикл … КонецЦикла;,Для Каждого Эл Из Коллекция Цикл … КонецЦикла;,Пока Условие Цикл … КонецЦикла;,Прервать;,Продолжить; - Исключения:
Попытка … Исключение … КонецПопытки;,ВызватьИсключение "текст"; - Объекты:
Новый Массив,Новый Массив(2,4), индексацияМ[0]/М[1][2], методыМ.Добавить(...). - Препроцессор:
#Использовать asserts(встроенная библиотека, no-op) и#Использовать "lib/Модуль.osjs"— импорт файла: модуль или класс (ПриСозданииОбъекта). Путь — относительно текущего файла или от/(корень ФС в Node, корень сервера в браузере). - Строки:
"…"(экранирование""), многострочные|…. - Литералы:
Истина/Ложь,Неопределено,Null, числа, даты'20260101'.
Число/Number, Строка/String, Булево/Boolean, Дата/Date,
Неопределено/Undefined, Null, Массив/Array, Сценарий/Script,
Обещание/Promise и др.
Тип("Булево") и Тип("Boolean") — один тип; ТипЗнч(значение) — тип значения;
Строка(значение) — строковое представление.
Сообщить/Message (2-й аргумент — СтатусСообщения.*), Тип, ТипЗнч,
Строка, Число, Pow, Мин/Макс, Окр, Найти, Сред,
СтрНачинаетсяС/StrStartsWith, СтрЗаканчиваетсяНа, СтрРазделить,
СтрСоединить, СтрШаблон, СтрЗаменить, СтрЧислоВхождений, СтрЧислоСтрок,
СтрПолучитьСтроку, НСтр, Символ, КодСимвола, ОписаниеОшибки,
ИнформацияОбОшибке(), КраткоеПредставлениеОшибки, ПодробноеПредставлениеОшибки,
ЗагрузитьСценарийИзСтроки (резолвит #Использовать относительно имени сценария), ЗагрузитьСценарий (файл, только Node; импорты — относительно файла), XMLСтрока/XMLЗначение, Base64, ТекущаяДата, Приостановить/Sleep (кооперативная пауза) и др.
Массив: Добавить, Удалить, Найти (индекс или Неопределено), Количество,
ВГраница; многомерные через Новый Массив(2,4,…). Также Структура,
Соответствие, ТаблицаЗначений, СписокЗначений, ДеревоЗначений.
HTTPСоединение/HTTPConnection: Получить/Get, ОтправитьДляОбработки/Post,
Записать/Put, Удалить/Delete, Изменить/Patch, ПолучитьЗаголовки/Head,
ВызватьHTTPМетод/CallHTTPMethod; свойства Сервер, Порт, Пользователь, Пароль,
Таймаут, РазрешитьАвтоматическоеПеренаправление.
HTTPЗапрос/HTTPRequest: АдресРесурса, Заголовки,
УстановитьТелоИзСтроки/SetBodyFromString, УстановитьТелоИзДвоичныхДанных,
ПолучитьТелоКакСтроку/GetBodyAsString, ПолучитьТелоКакДвоичныеДанные.
HTTPОтвет/HTTPResponse: КодСостояния/StatusCode, Заголовки/Headers,
ПолучитьТелоКакСтроку, ПолучитьТелоКакДвоичныеДанные, Закрыть/Close.
Вызовы синхронные (как в эталоне); в браузере — CORS и запрещённые заголовки,
прокси/SSL-сертификаты/файловое тело/потоки не поддерживаются.
ФоновыеЗадания/BackgroundJobs (единственный МенеджерФоновыхЗаданий):
Выполнить/Execute(Объект, ИмяМетода, Параметры?, Длительное?),
Очистить/Clear, ОжидатьВсе/WaitAll(Задания, Таймаут?),
ОжидатьЛюбое/WaitAny(Задания, Таймаут?), ОжидатьЗавершенияЗадач/WaitCompletionOfTasks,
ПолучитьФоновыеЗадания/GetBackgroundJobs(Фильтр?), ПолучитьТекущее/GetCurrent.
ФоновоеЗадание/BackgroundTask: свойства УникальныйИдентификатор/UUID,
ИмяМетода/MethodName, Объект/Object, Состояние/State,
Параметры/Parameters, Результат/Result, ИнформацияОбОшибке/ExceptionInfo;
метод ОжидатьЗавершения/Wait(Таймаут?).
СостояниеФоновогоЗадания/BackgroundJobState: НеВыполнялось/NotRunned,
Активно/Active, Завершено/Completed, ЗавершеноАварийно/Failed.
Модель кооперативная: задания разделяют состояние модуля, настоящего параллелизма нет;
ТекущийПоток, БлокировкаРесурса и асинхронность языка (Асинх/Ждать) — вне scope.
Асинх/Async — модификатор перед Процедура/Функция; Ждать/Await — унарный
оператор в async-методе и в исполняемом теле модуля (расширение; вне async-контекста
Ждать/Асинх — обычные идентификаторы). Вызов async-метода сразу возвращает
Обещание/Promise; Ждать даёт результат (для процедуры — Неопределено) или бросает
исходную ошибку, ловимую Попыткой; повторное ожидание кэшируется, ожидание не-Обещания
возвращает значение как есть. Параметры async-методов передаются по значению. Обещание
непрозрачно: без конструктора и публичных методов/свойств; Строка(Обещание) = "Обещание".
Необработанные ошибки async-процедур идут в console.error/stderr, сценарий продолжается.
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
юТест = ЮнитТестирование;
ВсеТесты = Новый Массив;
ВсеТесты.Добавить("ТестДолжен_ПроверитьВерсию");
Возврат ВсеТесты;
КонецФункции
Процедура ТестДолжен_ПроверитьВерсию() Экспорт
юТест.ПроверитьРавенство("0.1", Версия(), "Версия()");
КонецПроцедурыУтверждения: юТест.ПроверитьРавенство(ожид, факт, msg),
юТест.ПроверитьНеРавенство(...), юТест.Проверить(условие). Библиотека asserts
(#Использовать asserts) — флюент: Ожидаем.Что(факт).Равно(ожид).