feat: базовая структура проекта; docs: грамматика формы бэкуса-наура
This commit is contained in:
25
tests/integration_tests.rs
Normal file
25
tests/integration_tests.rs
Normal file
@@ -0,0 +1,25 @@
|
||||
//! Интеграционные тесты для токенизатора языка Ъ+.
|
||||
|
||||
// TODO: Добавить интеграционные тесты
|
||||
// - Тест полного цикла токенизации простого примера
|
||||
// - Тест обработки различных типов токенов в одном файле
|
||||
// - Тест обработки больших файлов
|
||||
// - Тест производительности токенизации
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
// use tverd_plus_tokenizer::*;
|
||||
|
||||
#[test]
|
||||
fn test_integration_basic() {
|
||||
// TODO: Реализовать базовый интеграционный тест
|
||||
// Пример: токенизация простого кода с несколькими типами токенов
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_integration_complex() {
|
||||
// TODO: Реализовать сложный интеграционный тест
|
||||
// Пример: токенизация кода с вложенными комментариями и различными идентификаторами
|
||||
}
|
||||
}
|
||||
|
||||
51
tests/test_comments.rs
Normal file
51
tests/test_comments.rs
Normal file
@@ -0,0 +1,51 @@
|
||||
//! Тесты для вложенных комментариев.
|
||||
|
||||
// TODO: Добавить тесты для комментариев
|
||||
// - Тест простого комментария (<[ комментарий ]>)
|
||||
// - Тест вложенных комментариев (<[ внешний <[ внутренний ]> внешний ]>)
|
||||
// - Тест многоуровневой вложенности
|
||||
// - Тест комментариев с различным содержимым
|
||||
// - Тест ошибок несоответствия комментариев
|
||||
// - Тест комментариев в различных позициях кода
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
// use tverd_plus_tokenizer::*;
|
||||
|
||||
#[test]
|
||||
fn test_simple_comment() {
|
||||
// TODO: Тест простого комментария
|
||||
// Пример: "<[ комментарий ]>"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_nested_comments() {
|
||||
// TODO: Тест вложенных комментариев
|
||||
// Пример: "<[ внешний <[ внутренний ]> внешний ]>"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_multiple_nesting_levels() {
|
||||
// TODO: Тест многоуровневой вложенности
|
||||
// Пример: "<[ 1 <[ 2 <[ 3 ]> 2 ]> 1 ]>"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_comments_with_content() {
|
||||
// TODO: Тест комментариев с различным содержимым
|
||||
// Пример: "<[ комментарий с @символами и операторами |> ]>"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_unmatched_comment_close() {
|
||||
// TODO: Тест ошибки несоответствия комментариев
|
||||
// Пример: "]> без открытия"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_comments_in_code() {
|
||||
// TODO: Тест комментариев в различных позициях кода
|
||||
// Пример: "Ъ+ <[ комментарий ]> @переменная"
|
||||
}
|
||||
}
|
||||
|
||||
50
tests/test_cyrillic.rs
Normal file
50
tests/test_cyrillic.rs
Normal file
@@ -0,0 +1,50 @@
|
||||
//! Тесты для верификации кириллических идентификаторов.
|
||||
|
||||
// TODO: Добавить тесты для кириллических идентификаторов
|
||||
// - Тест идентификаторов переменных с кириллицей (@переменная)
|
||||
// - Тест идентификаторов меток с кириллицей (:метка)
|
||||
// - Тест предикатов с кириллицей (?предикат)
|
||||
// - Тест смешанных идентификаторов (кириллица + латиница)
|
||||
// - Тест различных регистров кириллицы (заглавные, строчные, ё/Ё)
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
// use tverd_plus_tokenizer::*;
|
||||
|
||||
#[test]
|
||||
fn test_cyrillic_variable_identifier() {
|
||||
// TODO: Тест идентификатора переменной с кириллицей
|
||||
// Пример: "@переменная"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_cyrillic_label_identifier() {
|
||||
// TODO: Тест идентификатора метки с кириллицей
|
||||
// Пример: ":метка"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_cyrillic_predicate_identifier() {
|
||||
// TODO: Тест предиката с кириллицей
|
||||
// Пример: "?предикат"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_mixed_cyrillic_latin() {
|
||||
// TODO: Тест смешанных идентификаторов
|
||||
// Пример: "@переменнаяVar"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_cyrillic_case_sensitivity() {
|
||||
// TODO: Тест различных регистров кириллицы
|
||||
// Пример: "@Переменная", "@ПЕРЕМЕННАЯ", "@переменная"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_cyrillic_yo_letter() {
|
||||
// TODO: Тест буквы ё/Ё
|
||||
// Пример: "@пёс", "@ПЁС"
|
||||
}
|
||||
}
|
||||
|
||||
50
tests/test_latin.rs
Normal file
50
tests/test_latin.rs
Normal file
@@ -0,0 +1,50 @@
|
||||
//! Тесты для верификации латинских идентификаторов.
|
||||
|
||||
// TODO: Добавить тесты для латинских идентификаторов
|
||||
// - Тест идентификаторов переменных с латиницей (@variable)
|
||||
// - Тест идентификаторов меток с латиницей (:label)
|
||||
// - Тест предикатов с латиницей (?predicate)
|
||||
// - Тест смешанного регистра (camelCase, snake_case)
|
||||
// - Тест цифр в идентификаторах (после первого символа)
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
// use tverd_plus_tokenizer::*;
|
||||
|
||||
#[test]
|
||||
fn test_latin_variable_identifier() {
|
||||
// TODO: Тест идентификатора переменной с латиницей
|
||||
// Пример: "@variable"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_latin_label_identifier() {
|
||||
// TODO: Тест идентификатора метки с латиницей
|
||||
// Пример: ":label"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_latin_predicate_identifier() {
|
||||
// TODO: Тест предиката с латиницей
|
||||
// Пример: "?predicate"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_camel_case() {
|
||||
// TODO: Тест camelCase идентификаторов
|
||||
// Пример: "@camelCase"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_snake_case() {
|
||||
// TODO: Тест snake_case идентификаторов
|
||||
// Пример: "@snake_case"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_identifier_with_digits() {
|
||||
// TODO: Тест идентификаторов с цифрами
|
||||
// Пример: "@var123", "@var1_2"
|
||||
}
|
||||
}
|
||||
|
||||
51
tests/test_operators.rs
Normal file
51
tests/test_operators.rs
Normal file
@@ -0,0 +1,51 @@
|
||||
//! Тесты для операторов языка Ъ+.
|
||||
|
||||
// TODO: Добавить тесты для операторов
|
||||
// - Тест оператора начала блока (Ъ+)
|
||||
// - Тест оператора конца блока (Ъ-)
|
||||
// - Тест оператора конвейера (|>)
|
||||
// - Тест оператора записи (<<)
|
||||
// - Тест позиций операторов
|
||||
// - Тест комбинаций операторов
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
// use tverd_plus_tokenizer::*;
|
||||
|
||||
#[test]
|
||||
fn test_block_start_operator() {
|
||||
// TODO: Тест оператора начала блока
|
||||
// Пример: "Ъ+"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_block_end_operator() {
|
||||
// TODO: Тест оператора конца блока
|
||||
// Пример: "Ъ-"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_pipeline_operator() {
|
||||
// TODO: Тест оператора конвейера
|
||||
// Пример: "|>"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_write_operator() {
|
||||
// TODO: Тест оператора записи
|
||||
// Пример: "<<"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_operator_combinations() {
|
||||
// TODO: Тест комбинаций операторов
|
||||
// Пример: "Ъ+ @var |> <<"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_operator_positions() {
|
||||
// TODO: Тест отслеживания позиций операторов
|
||||
// Проверить, что позиции операторов корректно отслеживаются
|
||||
}
|
||||
}
|
||||
|
||||
51
tests/test_positions.rs
Normal file
51
tests/test_positions.rs
Normal file
@@ -0,0 +1,51 @@
|
||||
//! Тесты для отслеживания позиций токенов.
|
||||
|
||||
// TODO: Добавить тесты для отслеживания позиций
|
||||
// - Тест позиции первого токена
|
||||
// - Тест позиции после пробелов
|
||||
// - Тест позиции после новой строки
|
||||
// - Тест позиции в многострочном коде
|
||||
// - Тест позиции в комментариях
|
||||
// - Тест позиции ошибок
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
// use tverd_plus_tokenizer::*;
|
||||
|
||||
#[test]
|
||||
fn test_first_token_position() {
|
||||
// TODO: Тест позиции первого токена
|
||||
// Проверить, что первый токен имеет позицию (1, 1)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_position_after_whitespace() {
|
||||
// TODO: Тест позиции после пробелов
|
||||
// Пример: " @var" - проверить позицию @var
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_position_after_newline() {
|
||||
// TODO: Тест позиции после новой строки
|
||||
// Пример: "\n@var" - проверить, что @var на строке 2
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_multiline_positions() {
|
||||
// TODO: Тест позиций в многострочном коде
|
||||
// Пример: "Ъ+\n @var\n :метка"
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_comment_positions() {
|
||||
// TODO: Тест позиций комментариев
|
||||
// Проверить, что комментарии имеют корректные позиции
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_error_positions() {
|
||||
// TODO: Тест позиций ошибок
|
||||
// Проверить, что ошибки содержат корректные позиции
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user