1
0
mirror of https://github.com/Nivanchenko/tokenizer.git synced 2024-11-21 17:17:13 +02:00

Тест на парсинг ЖР

This commit is contained in:
Nikita Ivanchenko 2024-07-06 18:50:57 +03:00
parent 6cca545c28
commit 4247cce1bb
2 changed files with 40 additions and 1 deletions

View File

@ -95,7 +95,7 @@
`ПарсерСкобки.os`
```bsl
Перем __Токенайзер;
Перем _Токенайзер;
Перем ПрошлиЗаголовок;
Процедура ПриСозданииОбъекта(Токенайзер)

39
tests/logevent.os Normal file
View File

@ -0,0 +1,39 @@
#Использовать ".."
#Использовать asserts
#Использовать "features"
&Тест
Процедура Тест_Токенайзер1() Экспорт
// Дано
Спека = Новый Массив();
Спека.Добавить(Новый СпецификацияТокенПробелы(Истина));
Спека.Добавить(Новый СпецификацияТокенСимвол("{", "Открыть"));
Спека.Добавить(Новый СпецификацияТокенСимвол("}", "Закрыть"));
Спека.Добавить(Новый СпецификацияТокенСимвол(",", "Запятая"));
Спека.Добавить(Новый СпецификацияТокенРегулярноеВыражение(Новый РегулярноеВыражение("(1CV8LOG)|(\(\w+ \d.\d\))"), "Версия"));
Спека.Добавить(Новый СпецификацияТокенРегулярноеВыражение(Новый РегулярноеВыражение("[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$"), "Гуид"));
Спека.Добавить(Новый СпецификацияТокенРегулярноеВыражение(Новый РегулярноеВыражение("[\da-z]+"), "Идентификатор"));
Спека.Добавить(Новый СпецификацияТокенСтрока());
Спека.Добавить(Новый СпецификацияТокенЧисло());
Спека.Добавить(Новый СпецификацияТокенСимвол(Символы.ПС, "ПереносСтроки"));
Токенайзер = Новый Токенайзер(Спека);
ЧтениеТекста = Новый ЧтениеТекста("tests/features/small.lgp");
Текст = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();
// Когда
Токенайзер.Инит(Текст);
Скобарь = Новый ПарсерСкобки(Токенайзер);
Результат = Скобарь.Распарсить();
// Тогда
Ожидаем.Что(Результат.Количество()).Равно(2);
Ожидаем.Что(Результат[0].Количество()).Равно(19);
Ожидаем.Что(Результат[1].Количество()).Равно(19);
Ожидаем.Что(Результат[0][2].Количество()).Равно(2);
Ожидаем.Что(Результат[1][2].Количество()).Равно(2);
КонецПроцедуры