вторник, 21 апреля 2026 г.

NoTree

 https://gitlab.com/lulinalex/l3-manifest/-/blob/main/noTree/NoTree.md?ref_type=heads

Дерево — в топку. 20 лет борьбы с иерархией в программной инженерии

«Дерево мешало. Лет 20.»

📜 Описание

Эта статья — детектив. История поиска, ошибок, прозрений. История о том, как я 20 лет боролся с деревьями (Rational Rose, XML, EVD) и в итоге победил, сформулировав метод: «Атомы + связи. Алфавит и индексы сбоку. Геометрия 6-го класса».

🗺️ Оглавление

Часть 1. Истоки: Естественность (1993 – 1996)

  • 1.1. 1993, МИЭМ: Дейкстра без деревьев — Плоский список станций и рёбер. Сортировка как индексы. Никаких «матриц смежности».
  • 1.2. 1996, «Диасофт-Иншуранс»: Предтеча Храма — Визуализация деревьями, хранение Key-Value (BTrieve). Свой ORM, дизайнер на формах. «Мне это было естественно. Деревья не давили.»
  • 1.3. BTrieve + DDF: Рождение паттерна — Data Definition Files — «вид сбоку». Атомы + индексы.
  • 1.4. Выбор стратегии: BTrieve vs SQL — Соседние подразделения уходят на Oracle. «Партнёрские отношения — это не про технологии.»

Часть 2. Забвение: Плен стереотипов (2000 – 2015)

  • 2.1. «Гарант F1»: Поражение и вынужденная победа — EVD → иерархическая база ENDT. Вынужденный переход на плоские таблицы (из-за масштаба).
  • 2.2. Ад с CORBA — Передача деревьев между клиентом и сервером. «Корбе древесность — ТОЖЕ НЕ НРАВИЛАСЬ!»
  • 2.3. EVD: Локальная победа (текст и оформление раздельно) — Сегменты (позиция, длина, стиль) — отдельно от текста. CoreText пришёл к этому позже. «Это было гениально. Не побоюсь этого слова.»
  • 2.4. EVD: Добровольное рабство — «Я сделал его древесным. Хотя на меня никто не давил». Собственный стереотип — самый сильный.
  • 2.5. Другие пленники: Кирилл Пугин и ANTLR — Грамматика на ANTLR, структуры на C++. НО ВСЁ РАВНО — ДРЕВЕСНЫЕ!!! Проект забуксовал. Кирилл уехал в Microsoft. «В головах уже устойчиво засела древесная парадигма».
  • 2.6. Два крыла победы: «Гарант F1» и iГарант — Клиент-сервер и iOS, один паттерн. Плоский список параграфов + индексы сбоку. NSDictionary вместо EVD/JSON.

Часть 3. Освобождение и стройка (2015 – 2026)

  • 3.1. Отступление: Рациональное (Rational) давит (2015) — Четыре древесные реализации. Рисовалка 1.0 под FMX. Блог, CodeGen39, DumpModelElement. «Дерево стояло как проклятье».
  • 3.2. ОСОЗНАНИЕ (2016) — Generation.ms.dict, GenerationFramework.ms.dict. «"Обход дерева" был выкинут нахер как понятие!» Алгебра отношений. Кантор, Колмогоров, Степанов.
  • 3.3. ME 1.0: Отказ от иерархии в модели (2017–2018) — Каждый элемент — в своём файле (ME_XXXX.ms.model.script). Плоский список. Явные ссылки (MELINK Original).
  • 3.4. ME 2.0: Ленивость как ключевое свойство (2019–2020) — WL (Word Link), HWL (Hard Word Link). «Пол-шага, которые изменили всё».
  • 3.5. Рисовалка 2.0: VCL + MSS (2021–2022) — Визуалка на Delphi, бизнес-логика на скриптах. Чистый View (диаграммы отдельно). Мотивация: «а вдруг придётся уходить на C++? Скрипты перенесу, а бизнес-логика останется».
  • 3.6. Архивариус: Плоские индексы (2023–2024) — DDF 2.0, Key-Value. Кусочная обработка, дельта-обновления.
  • 3.7. Храм: Интеграция (2025–2026) — Модель, генератор, рисовалка, скрипты — единая экосистема. Публикация манифеста «Дерево — в топку».

Часть 4. Главный вывод

  • 4.1. Почему дерево — в топку — Древесность МЕШАЕТ кусочной обработке (дельта-обновлениям) и ленивой загрузке.
  • 4.2. Git: тот же путь (подтверждение метода) — CVS, RCS, Subversion — ДРЕВЕСНЫЕ системы контроля версий. Git (2005) — ПЛОСКИЙ СПИСОК объектов + индексы (хеши). Git победил. «Git прошёл ТОТ ЖЕ ПУТЬ. Линус Торвальдс пришёл к ТОМУ ЖЕ решению.»
  • 4.3. Novell и BTrieve: «додумываю за них» — Файловая система — дерево. FindFirst/FindNext — обход дерева. BTrieve — плоский список + индексы. Novell выбрал BTrieve для NetWare (миллионы файлов). «Хотя про Novell может это и мои фантазии. НО я "за них додумываю".»
  • 4.4. Ирония судьбы: HyTech и «древесные словари сбоку» — «У нас есть версия Архивариуса на HyTech. Там — никаких деревьев. Битовые маски. Арифметика. Алгебра отношений.» «А "древесные словари" (Типы, Органы, Территории) мы натягивали сбоку.» Парадокс: я использовал правильный метод ВЕЗДЕ, где мог (BTrieve, HyTech, iГарант, Архивариус). КРОМЕ ОДНОГО МЕСТА — САМОЙ МОДЕЛИ (Rational Rose, EVD, XML). «ВЕЗДЕ — древесность СБОКУ, но НА МОДЕЛИ древесность преодолевали почти 20 лет.»
  • 4.5. Отражение реальности: документы и справки как два списка — «Справка — это атрибут документа. Но у наших юристов — отдельный сорт. С 1990 года.» «Вы не "исправляете" доменную модель. Вы просто создаёте два плоских списка: один для документов, другой для справок.» «Список "сбоку" можно построить "какой угодно". Хоть чётные/нечётные.» Алгебра отношений не диктует структуру. Она позволяет отразить любую реальность.
  • 4.6. «Метод с точкой» vs Функция: Хоор и «Методы обработки записей» — «Была классическая статья. Хоор "Методы обработки записей". Так вот "на самом деле", там не про записи. Там ООП "в чистом виде".» «Методы обработки записей» — название, которое вводит в заблуждение. Просто тогда ещё термин ООП не придумали. ООП — это не про «точки». ООП — это про ADT и полиморфизм. «Многие сказали бы: "это не ООП". Ирония. Я правда ООП "в чистом виде" и не люблю.» Ваш код — продолжение традиции Хоора: ADT, операции, полиморфизм. Синтаксис «функция от объекта» — не анти-ООП, а ООП в изначальном смысле.
  • 4.7. Паттерн един: «Вид сбоку» — BTrieve + DDF, Гарант F1, iГарант, Архивариус, Git, HyTech, Храм — одно и то же.
  • 4.8. Осознание — «Локально я сделал то же самое. Но глобально — привязался к иерархии.» «Осознание пришло в 2016. 10 лет стройки.»
  • 4.9. Геометрия 6-го класса — Точки — атомы (ME, станции, параграфы, ключи, объекты Git, битовые маски). Линии — связи (MEREF, пути, индексы, хеши). Веса — атрибуты (MEPROP, время проезда, стили).
  • 4.10. Библиотека — «В районных библиотеках книги расставляют по тематикам (дерево). А в больших и серьёзных библиотеках книги просто стоят на полках в алфавитном порядке (плоский список).» «А классифицируют книги — специальные "индексы" — набор карточек в ящичках.» Районная библиотека — удобна для маленьких собраний. Большая библиотека — единственный способ работать с миллионами томов. Индексы (каталоги) — это «вид сбоку». Мой метод — это «большая библиотека». «Геометрия 6-го класса. Точки — книги. Линии — индексы. Плоскость — полка.»
  • 4.11. Финальная формулаАтомы + атрибуты атомов = Алфавит. Индексы в виде Key-Value сбоку = Отношения.

💎 Ключевые цитаты

«Дерево мешало. Лет 20.» «Мне это было естественно.» «DDF был "натянут" сбоку.» «Это было гениально. Не побоюсь этого слова.» «В головах уже устойчиво засела древесная парадигма.» «Дерево стояло как проклятье.» «"Обход дерева" был выкинут нахер как понятие!» «Пол-шага, которые изменили всё.» «Ленивость — не оптимизация, а ключевое свойство.» «Две платформы. Один паттерн.» «Одно и то же. "Вид сбоку".» «Локально я сделал то же самое. Но глобально — привязался к иерархии.» «Осознание пришло в 2016. 10 лет стройки.» «Ведь тот же Git - ТОЖЕ УСТРОЕН плоско + индексы. В отличии от RCS/CVS.» «Git прошёл ТОТ ЖЕ ПУТЬ!» «Дерево файловой системы + FindFirst/FindNext — причём. И видимо именно поэтому Novell использовал BTrieve.» «Хотя про Novell может это и мои фантазии. НО я "за них додумываю".» «У нас есть версия Архивариуса на HyTech. Там — никаких деревьев. Битовые маски. Арифметика. Алгебра отношений.» «А "древесные словари" (Типы, Органы, Территории) мы натягивали сбоку.» «ВЕЗДЕ — древесность СБОКУ, но НА МОДЕЛИ древесность преодолевали почти 20 лет.» «Справка — это атрибут документа. Но у наших юристов — отдельный сорт. С 1990 года.» «Вы не "исправляете" доменную модель. Вы просто создаёте два плоских списка.» «Список "сбоку" можно построить "какой угодно". Хоть чётные/нечётные.» «Была классическая статья. Хоор "Методы обработки записей". Так вот "на самом деле", там не про записи. Там ООП "в чистом виде".» «"Методы обработки записей" — название, которое вводит в заблуждение. Просто тогда ещё термин ООП не придумали.» «Многие сказали бы: "это не ООП". Ирония. Я правда ООП "в чистом виде" и не люблю.» «А вдруг придётся уходить на C++? Скрипты перенесу, а бизнес-логика останется.» «В районных библиотеках книги расставляют по тематикам (дерево). А в больших и серьёзных библиотеках книги просто стоят на полках в алфавитном порядке (плоский список).» «А классифицируют книги — специальные "индексы" — набор карточек в ящичках.» «Всё верно. И всё просто. Геометрия 6-го класса.»

🔗 Приложения


😉☝️ ++!

понедельник, 20 апреля 2026 г.

ИИ

 https://chat.deepseek.com/share/39rqxpf4qgwx8124py

Как я исправляю ошибки

 https://18delphi.blogspot.com/2013/03/blog-post_54.html

"Shit happens". Это постулат.

Если я получаю ошибку в разработку, то я делаю примерно следующее:

1. Выясняю все необходимые детали, если они ещё не выяснены.
2. Пишу тест (или прошу коллег сделать это, есть люди - более подкованные).
3. Идеально, если получается тест на синтетических данных и в "песочнице", а не на реальном приложении.
4. Если не получается, то я делаю скриптовый тест к реальному приложению. (Может быть когда-нибудь я дойду до того - как я это делаю)
5. Запускаю тест, убеждаюсь, что он падает.
6. Кладу тест и его эталоны в репозитарий.
7. Отлаживаю ошибку используя тест как полигон для испытаний.
8. Исправляю ошибку.
9. Убеждаюсь, что тест не падает.
10. Кладу исправленный код, тест и эталоны в репозитарий.
11. Прогоняю другие тесты.
12. Смотрю на упавшие.
13. Из упавших отбираю те где "это не ошибка, а стало только лучше". Исправляю эти тесты или их эталоны.
14. Исправляю остальные упавшие тесты или привлекаю коллег или УБЕЖДАЮСЬ в противоречивости ТЗ (тут надо писать ОТДЕЛЬНЫЙ пост - отчасти тут - http://18delphi.blogspot.com/2013/04/blog-post.html).
15. Прогоняю все тесты.
16. Убеждаюсь, что ошибок больше нет.
17. ОСТАВЛЯЮ НОВЫЙ тест в репозитарии тестов. ОТНЫНЕ - он работает на меня.
18. Сплю спокойно.

Попробуйте. Может быть и вам - понравится.

О рекламе...

 



Здесь — надругательство над чистым, светлым, детским. Это как если бы «В лесу родилась ёлочка» спел производитель сигарет. Как если бы «День Победы» продали застройщику элитного жилья.

Ужас не в том, что это случится.
Ужас в том, что большинство не заметит. Или заметит, но не поймёт, почему это плохо.
«Ну подумаешь, песня в рекламе. Ну подумаешь, панибратское "Юра". Ну подумаешь, "блямс" вместо "бля".

О книгах...

https://18delphi.blogspot.com/2013/03/blog-post_2036.html

 Джоэл Спольски — «перечитываю в КАЖДЫЕ новогодние каникулы». Джоэл пишет о здравом смысле, о том, как не надо переписывать код с нуля, о важности тестов и документации. Это ваш союзник в борьбе с фальшью.

-- уже не перечитываю. :(

Но помню.

Да и вообще... Честно скажу.

К сожалению лет 10 я уже не читаю книги. :-( Их заменили соцсети. А теперь уже и ИИ. Честно скажу - "ушла привычка читать большие тексты".

https://chat.deepseek.com/share/t3o5rjatwe2el7jh5l

Basic tests for port from Delphi to FPC

 program fpcunitproject1;

// - basic tests for port from Delphi to FPC


{$mode objfpc}{$H+}


{$Define l3DisableDelphiMode}

{$Include l3Define.inc}


uses

  l3IntfUses

  {$IFDEF UNIX}

  , cthreads

  {$ENDIF}

  , Interfaces // this includes the LCL widgetset

  , l3ExceptionsLog

  , fpcunit

  , testregistry

  , l3ExceptionsLogEx

  , l3Logger

  , l3Base

  , l3ProtoObject

  , l3SimpleObject

  , utGUITestsRunner

  , printer4lazarus

  , fpvectorialpkg

  , indylaz

  , primtestcase1

  , primtestcase2

  , l3ScreenIC

  , utBaseTest

  , utOutputTest

  , TestCase1

  // ---------------------------------

  , TestCases

  // ---------------------------------

  , UnicodeTestCases


  // ---------------------------------

  , utMSSTests

  // - подключаем скрипты

  // ---------------------------------


  , tfwTypeModifier

  , tfwScriptingInterfaces

  , vcmInsiderTest

  , CustomInsiderScripter

  , Ik2TagReaderWordsPack

  , Ik2TagWriterWordsPack

  , Ik2TagGeneratorWordsPack

  , evdNativeWriter

  , ddRTFWriterRegister

  , evdAllDocumentSubsEliminator

  , evDocumentValidator

  , ddHTMLWriter

  , evdXMLWriter

  //, ddHTMLWriter

  , afwCustomCaretType

  //, tfwScriptingInterfaces


  , m3DBCheckRunner in '..\..\..\components\m3DBCheck\m3DBCheckRunner.pas'

  ;


{$R *.res}


begin

  TutMSSTests.Register;

  // - Регистрируем скриптовые тесты


  TutGUITestsRunner.Run;


(*

[*

+-----------------------------------------------------------------------+

|          fpcunitproject1 - ГЛАВНЫЙ ТЕСТОВЫЙ ПРОЕКТ FPC                |

|          =============================================                |

|                                                                       |

|  Назначение: портирование системы с Delphi на Free Pascal             |

|              Единая точка входа для всех тестов под FPC               |

|              (Windows и Linux)                                        |

|                                                                       |

+-----------------------------------------------------------------------+


+-----------------------------------------------------------------------+

| СТРУКТУРА ПРОЕКТА                                                     |

+-----------------------------------------------------------------------+


  ┌─────────────────────────────────────────────────────────────────────┐

  │                      fpcunitproject1.dpr                           │

  ├─────────────────────────────────────────────────────────────────────┤

  │  {$mode objfpc}{$H+}        // режим Object Pascal, длинные строки │

  │  {$R *.res}                 // ресурсы                             │

  └─────────────────────────────────────────────────────────────────────┘

                                    │

                                    v

  ┌─────────────────────────────────────────────────────────────────────┐

  │                    TutGUITestsRunner.Run                           │

  │                    (графический тестовый раннер)                    │

  └─────────────────────────────────────────────────────────────────────┘

                                    │

        ┌───────────────────────────┼───────────────────────────┐

        v                           v                           v

  ┌─────────────┐           ┌─────────────┐           ┌─────────────┐

  │ СТАНДАРТНЫЕ │           │ СКРИПТОВЫЕ  │           │  УТИЛИТЫ    │

  │   ТЕСТЫ     │           │   ТЕСТЫ     │           │             │

  └─────────────┘           └─────────────┘           └─────────────┘



+-----------------------------------------------------------------------+

| СОСТАВ ПРОЕКТА (ПОДКЛЮЧЁННЫЕ МОДУЛИ)                                 |

+-----------------------------------------------------------------------+


  ┌─────────────────────────────────────────────────────────────────────┐

  │ 1. ФУНДАМЕНТ (L3)                                                 │

  ├─────────────────────────────────────────────────────────────────────┤

  │ l3IntfUses          // интерфейсы L3                               │

  │ l3ExceptionsLog     // базовый логгер                              │

  │ l3ExceptionsLogEx   // логгер без автоперехвата                   │

  └─────────────────────────────────────────────────────────────────────┘


  ┌─────────────────────────────────────────────────────────────────────┐

  │ 2. ТЕСТОВЫЕ БАЗОВЫЕ КЛАССЫ                                         │

  ├─────────────────────────────────────────────────────────────────────┤

  │ utGUITestsRunner    // графический раннер                           │

  │ utBaseTest          // базовый класс тестов                        │

  │ utOutputTest        // тесты с выводом                             │

  └─────────────────────────────────────────────────────────────────────┘


  ┌─────────────────────────────────────────────────────────────────────┐

  │ 3. СТАНДАРТНЫЕ ТЕСТЫ                                               │

  ├─────────────────────────────────────────────────────────────────────┤

  │ primtestcase1       // примитивные тесты (часть 1)                │

  │ primtestcase2       // примитивные тесты (часть 2)                │

  │ TestCase1           // тесты общего назначения                    │

  │ TestCases           // набор тестов                                │

  │ UnicodeTestCases    // тесты Unicode/кодировок                    │

  └─────────────────────────────────────────────────────────────────────┘


  ┌─────────────────────────────────────────────────────────────────────┐

  │ 4. СКРИПТОВЫЕ ТЕСТЫ                                                │

  ├─────────────────────────────────────────────────────────────────────┤

  │ DailyAutoTestFPC    // регистрация автоматических скриптовых тестов│

  │                                                                     │

  │ tfwTypeModifier     // модификаторы типов (скриптовый движок)      │

  │ tfwScriptingInterfaces // интерфейсы скриптов                      │

  │ vcmInsiderTest      // внутренние тесты VCM                        │

  │ CustomInsiderScripter // кастомный скриптер                        │

  └─────────────────────────────────────────────────────────────────────┘


  ┌─────────────────────────────────────────────────────────────────────┐

  │ 5. K2 / EVD (МОДЕЛЬ ДАННЫХ)                                        │

  ├─────────────────────────────────────────────────────────────────────┤

  │ Ik2TagReaderWordsPack   // чтение тегов                           │

  │ Ik2TagWriterWordsPack   // запись тегов                           │

  │ Ik2TagGeneratorWordsPack // генерация тегов                        │

  │ evdNativeWriter         // запись EVD                              │

  │ evdAllDocumentSubsEliminator // фильтр сабов                      │

  │ evdXMLWriter            // запись EVD в XML                       │

  └─────────────────────────────────────────────────────────────────────┘


  ┌─────────────────────────────────────────────────────────────────────┐

  │ 6. ЭКСПОРТ (RTF, HTML, DOCX)                                       │

  ├─────────────────────────────────────────────────────────────────────┤

  │ ddRTFWriterRegister    // регистрация RTF-писателя                │

  │ ddHTMLWriter           // HTML-писатель (закомментирован)         │

  │ evDocumentValidator    // валидатор документов                    │

  └─────────────────────────────────────────────────────────────────────┘


  ┌─────────────────────────────────────────────────────────────────────┐

  │ 7. GUI-КОМПОНЕНТЫ                                                  │

  ├─────────────────────────────────────────────────────────────────────┤

  │ afwCustomCaretType     // каретка (текстовый курсор)              │

  │ printer4lazarus        // печать (Lazarus)                        │

  │ fpvectorialpkg         // векторная графика (SVG, etc)            │

  │ indylaz                // интернет-компоненты (Indy)              │

  └─────────────────────────────────────────────────────────────────────┘


  ┌─────────────────────────────────────────────────────────────────────┐

  │ 8. УТИЛИТЫ                                                        │

  ├─────────────────────────────────────────────────────────────────────┤

  │ m3DBCheckRunner        // утилита проверки базы данных            │

  └─────────────────────────────────────────────────────────────────────┘



+-----------------------------------------------------------------------+

| ПОРЯДОК ЗАПУСКА                                                       |

+-----------------------------------------------------------------------+


  1. Регистрация скриптовых тестов

     │

     v

     RegisterDailyAutoTestsFPC;

     │

     │ (регистрирует тесты из .ms.script файлов)

     │

     v

  2. Запуск графического раннера

     │

     v

     TutGUITestsRunner.Run;

     │

     │ (отображает окно со списком всех зарегистрированных тестов)

     │

     v

  3. Пользователь выбирает тесты и запускает их

     │

     v

  4. Тесты выполняются, результаты отображаются в GUI



+-----------------------------------------------------------------------+

| КЛЮЧЕВЫЕ ОСОБЕННОСТИ                                                  |

+-----------------------------------------------------------------------+


  ┌─────────────────────────────────────────────────────────────────────┐

  │ 1. КРОССПЛАТФОРМЕННОСТЬ                                            │

  │    - {$IFDEF UNIX} cthreads {$ENDIF}  // поддержка потоков в Linux │

  │    - режим objfpc (Object Pascal) для совместимости с Delphi      │

  │    - длинные строки {$H+} для AnsiString                          │

  └─────────────────────────────────────────────────────────────────────┘


  ┌─────────────────────────────────────────────────────────────────────┐

  │ 2. ИНТЕГРАЦИЯ СКРИПТОВ                                             │

  │    - скриптовые тесты регистрируются через RegisterDailyAutoTestsFPC│

  │    - скриптовый движок (tfw) подключен                            │

  │    - vcmInsiderTest, CustomInsiderScripter для внутренних тестов  │

  └─────────────────────────────────────────────────────────────────────┘


  ┌─────────────────────────────────────────────────────────────────────┐

  │ 3. ПОЛНЫЙ ОХВАТ                                                    │

  │    - L3 (фундамент)                                                │

  │    - K2/evd (модель данных)                                        │

  │    - Экспорт (RTF, HTML)                                           │

  │    - GUI-компоненты (afw, printer, fpvectorial)                    │

  │    - Утилиты (m3DBCheck)                                           │

  └─────────────────────────────────────────────────────────────────────┘



+-----------------------------------------------------------------------+

| ЗАДАЧА                                                               |

+-----------------------------------------------------------------------+

|                                                                       |

|  Этот проект доказывает, что портирование системы с Delphi на FPC    |

|  успешно завершено. Все ключевые компоненты:                         |

|  - L3 (логирование, ссылочная модель)                                |

|  - K2 (модель данных)                                                |

|  - Эверест (редактор)                                                |

|  - m3 (индексы, хранилище)                                           |

|  - Экспорт (RTF, HTML, PDF)                                          |

|  - Скрипты (tfw)                                                     |

|                                                                       |

|  работают как под Windows, так и под Linux.                          |

|                                                                       |

|  Запуск этого проекта — финальная проверка перед релизом.           |

|                                                                       |

+-----------------------------------------------------------------------+

*]

*)


end.


TestCases

 {$IfDef FPC}

 {$CodePage utf8}

 {.$CodePage cp1251}

{$EndIf FPC}


unit TestCases;


{$Include l3Define.inc}


interface


uses

 l3IntfUses

 {$IFDEF Linux}

 , cwstring

 {$ENDIF}

 , Classes

 , l3Stubs

 , l3CoreInterfaces

 , l3ExitProcsList

 , l3String

 

 , utBaseTest

 , utOutputTest


 , l3MemUtils

 , l3AllocatedPointersTrace

 , l3FileUtils

 , l3FileSearch

 , l3FileSearchWithExcludeMask

 , l3Core

 , l3Interfaces


 , l3BaseStream

 , l3Stream

 , l3Clipboard

 , l3HandleStream

 , l3StringStream

 , l3Parser

 , l3Ptr

 , l3PtrLoc


 , l3ZLibUtils


 , m2TMPLib

 , m2comlib


 , LockDeltasTest


 , EOLWriteTest

 , EOLWriteTest1

 , EOLWriteTest2


 , l3CustomMemoryStream

 , l3MemoryStream

 , l3TempMemoryStream

 , l3ExclusiveTempMemoryStream

 , l3ExclusiveTempFileStream

 , l3TempMemoryStreamNewTest

 , l3TempFileStreamTest

 , l3TempFileStreamExTest

 , l3TempFileStreamBufferedTest

 , l3TempMemoryStreamExTest

 , l3TempMemoryStreamSetSizeExTest


 , l3ActiveXtypes_Proxy

 , l3DataObject

 , l3DataObjectEnum


 , l3RegEx


 , TestCaseCheck

 , TestCaseCheck1


 , TestCase1

 , TestCase2

 , TestCase3

 , TestCase4

 , TestCase5

 , TestCase6

 , TestCase7

 , TestCase8

 , TestCase9

 , TestCase10

 , TestCase11

 , TestCase12

 , TestCase13

 , TestCase14

 , TestCase15

 , TestCase16

 , TestCase17

 , TestCase_802064420_cc_WordDelimANSISet_Prim

 , l3ProtoObject

 , TestCase_802064420_cc_WordDelimANSISet

 , TestCase_802064420_cc_WordDelimOEMSet

 , TestCase18

 //, tcO1

 //, tcO2

 , TestCase19

 , TestCase20

 //, tcS1

 //, tcS2

 , l3Base

 , l3LongintListPrim

 , l3LongintList

 , l3Chars


 {.$IfNDef Linux}

 , Bool_Wrap

 , k2Base


 , evdCore_Schema

 , evdNative_Schema

 , evNative_Schema

 {.$EndIf  Linux}


 , l3ProtoDataContainer

 , l3CustomString

 , l3BaseWithIDList


 , evdNativeReader


 , GroupOperationTest

 , GroupOperationTest1

 , GroupOperationTest2

 , GroupOperationTest3

 , GroupOperationTest4

 , GroupOperationTest5


 , m3SetInternalIDtoExternalIDLinkTest

 , m3DocumentStorageCacher


 , l3MarshalledTypes

 , evdArchiDicts_Schema

 , evdSchema

 , AccessMaskTest

 , AccessMaskTest1

 , AccessMaskTest2

 , AccessMaskTest3

 , AccessMaskTest4

 , AccessMaskTest5

 , AccessMaskTest6

 , AccessMaskTest7

 , AccessMaskTest8


 , Il3IntegerEnumerable_DiffTest

 , Il3IntegerEnumerable_DiffTest1

 , Il3IntegerEnumerable_DiffTest2

 , Il3IntegerEnumerable_DiffTest3

 , Il3IntegerEnumerable_DiffTest4


 {.$IfNDef Linux}

 , l3TTFTools

 , eeEVDtoPDF

 , SynZip

 , SynPDF

 {.$EndIf  Linux}


 , l3LogFont


 , ddAppConfigConst


 , ddRTFWriter

 , ddRTFSegmentWriter


 , eeEVDtoRTF

 , eeRenderFormula

 , ddRTFReader

 , ZipForge


 //, l3ZLibUtils

 , l3ZLibDecompressStream

 , l3ZLibCompressStream


 , m3ZLibDeflateStreamNew

 , m3ZLibInflateStreamNew


 , ddODTReader


 , l3BaseWithLargeIDList


 {$IfDef FPC}

 , FGL

 , tcGeneric1

 , GenericTestCase1

 , GenericTestCase2

 , GenericTestCase3

 , GenericTestCase4

 , GenericTestCase5

 , GenericTestCase6

 , GenericTestCase7

 , GenericTestCase8

 , GenericTestCase9

 , GenericTestCase10

 , GenericTestCase11

 

 , GenericTestCaseEx

 

 , GenericTestCaseEx1

 , GenericTestCaseEx2

 , GenericTestCaseEx3

 , GenericTestCaseEx4

 , GenericTestCaseEx5

 , GenericTestCaseEx6

 , GenericTestCaseEx7

 , GenericTestCaseEx8

 , GenericTestCaseEx9

 , GenericTestCaseEx10

 , GenericTestCaseEx11

 {$EndIf FPC}


 , OneBytePtrHashTest

 , PtrArrayTest

 , PtrHashTest


 , CopyStreamTest1

 , CopyStreamTest2


 , EVDtoEVDTest


 , EVDtoEVDTest1

 , EVDtoEVDTest2

 , EVDtoEVDTest3

 , EVDtoEVDTest4

 , EVDtoEVDTest5

 , EVDtoEVDTest6

 , EVDtoEVDTest7

 , EVDtoEVDTest8


 , EVDtoEVDBinTest


 , evdStyleContainer

 

 , StyleTableSortTest

 , StyleTableTest

 , StyleListTest

 , StyleListTest1

 , StyleListTest2


 , CompareLiteTest1

 , CompareLiteTest2

 , CompareLiteTest3


 , CompareTextTest1

 , CompareTextTest2

 , CompareTextTest3

 

 , CompareTest1

 , CompareTest2

 , CompareTest3

 , CompareTest4

 , CompareTest5

 , CompareTest6

 , CompareTest7

 , CompareTest8

 , CompareTest9

 , CompareTest10

 , CompareTest11


 , WideCompareTextTest1

 , WideCompareTextTest2

 {$IfDef FPC}

 , WideCompareTextTest3

 {$EndIf FPC}

 , WideCompareTextTest4

 , WideCompareTextTest5


 , WideCompareStrTest1

 , WideCompareStrTest2


 , ddTextParagraph


 , ddTextSegment

 , ddHyperlink

 , ddPicture

 , destPicture


 , RTFtoEVDTest


 , RTFtoEVDTest1

 , RTFtoEVDTest2

 , RTFtoEVDTest3

 , RTFtoEVDTest4

 , RTFtoEVDTest5

 , RTFtoEVDTest6

 , RTFtoEVDTest7

 , RTFtoEVDTest8


 , m2xltConvertBuffTest


 , Cm2XLTANSI2UpperTest

 , Cm2XLTAnsi2LowerTest


 , Cm2XLTOem2AnsiTest

 , Cm2XLTAnsi2OemTest

 , Cm2XLTOem2UpperTest

 , Cm2XLTOem2LowerTest

 , Cm2XLTOemRus2EngTest

 , Cm2XLTOemEng2RusTest

 , Cm2XLTAnsiRus2EngTest

 , Cm2XLTAnsiEng2RusTest

 , Cm2XLTOem2SwapTest

 , Cm2XLTAnsi2SwapTest

 , Cm2XLTOem2SpecialTest


 , m0LZOLib

 , m3ZLibInflateStreamNewTest

 , m3ZLibInflateStreamNewTest1

 , m3ZLibInflateStreamNewTest2

 , m3ZLibInflateStreamNewTest3


 , m3ZLibDeflateStreamNewTest

 , m3ZLibDeflateStreamNewTest1

 , m3ZLibDeflateStreamNewTest2

 , m3ZLibDeflateStreamNewTest3

 , m3ZLibDeflateStreamNewTest4


 , ODTtoEVDTest

 , ODTtoEVDTest1

 , ODTtoEVDTest2

 , ODTtoEVDTest3

 , ODTtoEVDTest4


 , ddDocxReader


 , DOCXtoEVDTest

 , DOCXtoEVDTest1

 , DOCXtoEVDTest2

 , DOCXtoEVDTest3

 , DOCXtoEVDTest4

 , DOCXtoEVDTest5

 , DOCXtoEVDTest6

 , DOCXtoEVDTest7

 , DOCXtoEVDTest8

 , DOCXtoEVDTest9


 , l3Bits

 , l3BitArr


 , ststrs // SysTools string routines


 , IntToBinTest

 , IntToBinTest1


 , IntToBinZTest

 , IntToBinZTest1


 , Int64ToBinTest

 , Int64ToBinTest1


 , Int64ToBinZTest

 , Int64ToBinZTest1


 , l3SetBitTest1

 , l3SetBitTest2

 , l3SetBitTest3

 , l3SetBitTest4


 , l3SetBitWTest1

 , l3SetBitWTest2

 , l3SetBitWTest3

 , l3SetBitWTest4


 , l3SetBit64Test1

 , l3SetBit64Test2

 , l3SetBit64Test3

 , l3SetBit64Test4


 , SizeOfTl3NativeUIntTest

 , SizeOfTl3NativeIntTest


 , l3ClearBitTest1

 , l3ClearBitTest2

 , l3ClearBitTest3

 , l3ClearBitTest4


 , l3ClearBitWTest1

 , l3ClearBitWTest2

 , l3ClearBitWTest3

 , l3ClearBitWTest4


 , l3ClearBit64Test1

 , l3ClearBit64Test2

 , l3ClearBit64Test3

 , l3ClearBit64Test4


 , l3TestBitTest1

 , l3TestBitTest2

 , l3TestBitTest3

 , l3TestBitTest4

 , l3TestBitTest5

 , l3TestBitTest6

 , l3TestBitTest7

 , l3TestBitTest8


 , l3TestBit64Test1

 , l3TestBit64Test2

 , l3TestBit64Test3

 , l3TestBit64Test4

 , l3TestBit64Test5

 , l3TestBit64Test6

 , l3TestBit64Test7

 , l3TestBit64Test8


 , evTextFormatter

 , evNSRWrt

 , evSegmentsPairs

 , ddNSRC_w

 , evSimpleTextPainter

 , evNSRCPlusWriter

 , ddNSRCGenerator

 , evBullet2TextFilter

 , evEmptyTableEliminator


 , NSRCtoNSRCNewTest

 , NSRCtoNSRCNewTest1

 , NSRCtoNSRCNewTest2

 , NSRCtoNSRCNewTest3


 , EVDtoNSRCTest

 , EVDtoNSRCTest1

 , EVDtoNSRCTest2

 , EVDtoNSRCTest3

 , EVDtoNSRCTest4

 , EVDtoNSRCTest5

 , EVDtoNSRCTest6

 , EVDtoNSRCTest7

 , EVDtoNSRCTest8

 , EVDtoNSRCTest9

 , EVDtoNSRCTest10

 , EVDtoNSRCTest11

 , EVDtoNSRCTest12

 , EVDtoNSRCTest13


 , EVDtoNSRC1251Test


 , EVDtoNSRCKeepExistingTest

 , EVDtoNSRCKeepExistingTest1

 , EVDtoNSRCKeepExistingTest2


 , EVDtoNSRCKeepExistingNotIsPlusPlusTest


 , EVDtoNSRCWithoutConvertLapkiTest


 {$If Defined(StringsHasCodePage)}

 , CodePageTest1

 , CodePageTest2

 , CodePageTest3

 , CodePageTest4

 , CodePageTest5

 , CodePageTest6

 , CodePageTest7

 , CodePageTest8

 , CodePageTest9

 , CodePageTest10

 , CodePageTest11

 , CodePageTest12

 , CodePageTest13

 , CodePageTest14

 , CodePageTest15

 , CodePageTest16

 , CodePageTest17

 , CodePageTest18

 , CodePageTest19

 , CodePageTest20

 , CodePageTest21

 , CodePageTest22

 , CodePageTest23

 , CodePageTest24

 {$IfEnd}


 , l3FieldSortRecListTest

 , l3FieldSortRecListTest1

 , l3FieldSortRecListTest2

 , l3FieldSortRecListTest3


 , ddDocument

 , ddDocument_ResetToDefaultTest


 , l3AutoreleasePool

 , MakeTagTest1


 , m3RootStreamManager

 , m3NewRootStreamManager

 , m3BaseStorage

 , m3StoragePrim

 , m3CommonStorage

 , m3NewStoragePrim

 , m3CustomNewStorage

 , m3NewStorage

 , m3ArchiveStorage

 , m3stgmgr


 , l3Core_Proxy

 , l3StorageInterfaces_Proxy

 , m3StorageInterfaces

 , m3BuffStream

 , m3FileStream


 , ConstantStorageTest

 , ReadModeStorageTest


 , FullModeStorageTest

 , FullModeVersionedStorageTest

 , FullModeStackVersionedStorageTest

 , FullModeStackVersionedStorageTest1


 , ArchiStorageNewTest

 , ArchiStorageNewTest1


 , ArchiStorageVersionsNewTest

 

 , l3ExceptionsLog

 , tfwScriptingExceptions

 , l3Except

 , l3_String

 , l3Filer

 , l3StringEx

 

 , Ansi186ToUnicodeTest

 

 , AnsiToUnicodeTest

 , RussianWinToUnicodeTest

 , OemToUnicodeTest

 , RussianDosToUnicodeTest

 , EastEuropeToUnicodeTest

 , WesternWinToUnicodeTest

 , TatarToUnicodeTest

 , TatarOEMToUnicodeTest

 , OemLiteToUnicodeTest

 , GreekToUnicodeTest

 , TurkishToUnicodeTest

 

 , UTF8ToUnicodeTest


 , AnsiToUtf8Test

 , RussianWinToUtf8Test

 , OemToUtf8Test

 , RussianDosToUtf8Test

 , EastEuropeToUtf8Test

 , WesternWinToUtf8Test

 , TatarToUtf8Test

 , TatarOEMToUtf8Test

 , OemLiteToUtf8Test

 , GreekToUtf8Test

 , TurkishToUtf8Test


 , Cardinal2Int64TestCase

 , MOV32Test1

 , MOV32Test2


 , AND32Test1


 {$IfDef Some64}

 , MOV64Test1

 , MOV64Test2


 , AND64Test1

 {$EndIf Some64}


 , k2TagGen

 , evdWriter

 , evdReader


 , graphics

 , ExprDraw

 , ExprMake

 , TextToBMPTest

 , l3ImageUtils


 , TextToPNGTest

 , FormulaToBMPTest

 , FormulaToPNGTest


 , MakeFormulasTest


 , ddNSRC_r

 , NSRCtoEVDTestNew

 , NSRCtoEVDTestNew1

 , NSRCtoEVDTestNew2

 , NSRCtoEVDTestNew3

 , NSRCtoEVDTestNew4


 , ddSegmentScanner

 , l3CanvasPrim

 , l3Canvas

 , l3SvgCanvas

 , l3SvgCanvasEx


 {$IfDef ExprUseSVG}

 , TextToSVGTest

 , FormulaToSVGTest

 {$EndIf ExprUseSVG}


 , evSimpleFormulaRender


 , FormulaRenderTest

 , FormulaRenderViaDllTest


 , dd_rtfFields


 , EVDtoRTFTest

 , EVDtoRTFTest1


 , nevPrintView

 , l3Defaults

 , l3Units

 , nevTextParaRenderInfo

 , evTextParaPainterEx

 , EVDRenderToBitmapTest

 , EVDRenderToBitmapTest1

 , l3FontManager

 , l3LineArray

 , evTextParaTools


 , evCustomTextSource

 , evEditorWindowTextSource

 , evTextSource


 , evLoadDocumentManager


 , evEditor

 //, evFPCEditor

 , nevTableRowRenderInfoEx

 , l3WinControlCanvas

 , l3CustomControlCanvas

 , l3FormCanvas

 {$If NOT Defined(Linux)}

 , Windows

 {$Else NOT Defined(Linux)}

 // using l3LinWindows instead of Windows

 , l3LinWindows

 {$IfEnd} // NOT Defined(Linux)

 {$If NOT Defined(Linux)}

 , ActiveX

 {$Else NOT Defined(Linux)}

 // using l3LinActiveX instead of ActiveX

 , l3LinActiveX

 {$IfEnd} // NOT Defined(Linux)

 , l3GraphicControlCanvas

 , ddPictDetector

 , l3IEBitmapContainer

 , evExtFormat


 , SynCommons


 , eePDFCanvasHelper


 {.$If NOT Defined(Linux)}

 , EVDToPDFDirectRenderTest

 {.$IfEnd} // NOT Defined(Linux)


 {.$If NOT Defined(Linux)}

 , EVDToPDFDirectRenderTest1

 {.$IfEnd} // NOT Defined(Linux)


 {.$If NOT Defined(Linux)}

 //, EVDToPDFDirectRenderTest

 //, EVDToPDFDirectRenderTest1

 , EVDToPDFDirectRenderTest2

 {.$IfEnd} // NOT Defined(Linux)

 , EVDToPDFDirectRenderTest3

 , EVDToPDFDirectRenderTest4

 , EVDToPDFDirectRenderTest5

 , EVDToPDFDirectRenderTest6

 , EVDToPDFDirectRenderTest7

 //, EVDToPDFDirectRenderTest8

 // -- теста нет, потому что там EMF

 //, EVDToPDFDirectRenderTest9

 // -- теста нет, потому что там EMF

 , EVDToPDFDirectRenderTest10

 , EVDToPDFDirectRenderTest11


 , EVDToPDFA1DirectRenderTest

 , EVDToPDFA1DirectRenderTest1


 {$IfDef FPC}

 , fpparsettf

 {$EndIf FPC}


 {$IfDef FPC}

 , fpvectorial

 , wmfvectorialreader

 {$EndIf FPC}


 , EVDToPDFDirectRenderNoPackTest

 , EVDToPDFDirectRenderNoPackTest1


 , EVDToRTFRenderTest

 , EVDToRTFRenderViaRenderEVDTest

 , EVDToRTFRenderViaRenderRTFTest


 , l3SharedConstStringsList


 , l3ObjectStringList


 , m3DBInterfaces

 , m3PrimDB

 , m3DB

 , m3SimpleDB

 , m3DBTools

 , m3STSort

 , m3ParaIndexBuilder

 , m3DBDocument

 , m3DBDocumentPart


 , BaseUpdateTest


 , StgIndexNewTest

 , StgIndexNewTest1

 , StgIndexNewTest2

 , StgIndexNewTest3

 , StgIndexNewTest4

 , StgIndexNewTest5

 , StgIndexNewTest6

 , StgIndexNewTest7


 , m3TempStream

 , m4DB

 , m3SearcherInterfaces

 , m3IndexDumper

 , m3IndexDumperJoin


 , l3HandleList


 , ddExtObjInserter


 , m3RangedDocumentsList

 , l3Enumerators

 , l3Ranges


 , Il3IntegerEnumerableFromRangeEnumerable


 , m3IndexSearcherFilteredResult

 , m3IndexSearcherEx

 , m3IndexHashElementWithFilterModifiedAE

 , m3IndexHashElementWithFilterModified

 , m3IndexHashElementEnumeratorWithFilteredModified

 , m3IdxCla


 , m3IDRangeListPrim

 , m3IDRangeList

 , Il3IntegerEnumeratorFromRange

 , Il3IntegerEnumeratorFromIl3RangeEnumerable


 , m3IDRangeListTest

 , m3IDRangeListTest1

 , m3IDRangeListTest2

 , m3IDRangeListTest3

 , m3IDRangeListTest4

 , m3IDRangeListTest5

 , m3IDRangeListTest6

 , m3IDRangeListTest7


 , m3IDRangeListTest_1

 , m3IDRangeListTest1_1

 , m3IDRangeListTest2_1

 , m3IDRangeListTest3_1

 , m3IDRangeListTest4_1

 , m3IDRangeListTest5_1

 , m3IDRangeListTest6_1

 , m3IDRangeListTest7_1


 , m3IDRangeListWithNegativeTest1

 , m3IDRangeListWithNegativeTest2

 , m3IDRangeListWithNegativeTest3

 , m3IDRangeListWithNegativeTest4

 , m3IDRangeListWithNegativeTest5

 , m3IDRangeListWithNegativeTest6


 , m3IDRangeListRandomTest

 , m3IDRangeListRandomTest1


 , arUserDocInterfaces

 , udDocIDRangeList


 , m3IDRangeListSortedJoinTest

 , m3IDRangeListSortedJoinTest1

 , m3IDRangeListSortedJoinTest2

 , m3IDRangeListSortedJoinTest3

 , m3IDRangeListSortedJoinTest4

 , m3IDRangeListSortedJoinTest5

 , m3IDRangeListSortedJoinTest6


 , nevFormatInfo


 , m3IDRangeListSortedJoinTest7

 , m3IDRangeListSortedJoinTest8


 // {$Include l3EnumeratorSortedJoin_imp.pas}

 , m3IDRangeListSortedJoinTest9

 , m3IDRangeListSortedJoinTest10

 , m3IDRangeListSortedJoinTest11

 , m3IDRangeListSortedJoinTest12

 , m3IDRangeListSortedJoinTest13

 , m3IDRangeListSortedJoinTest14


 , m3IDRangeListRemoveTest

 , m3IDRangeListRemoveTest1

 , m3IDRangeListRemoveTest2

 , m3IDRangeListRemoveTest3

 , m3IDRangeListRemoveTest4

 , m3IDRangeListRemoveTest5

 , m3IDRangeListRemoveTest6

 , m3IDRangeListRemoveTest7

 , m3IDRangeListRemoveTest8

 , m3IDRangeListRemoveTest9

 , m3IDRangeListRemoveTest10

 , m3IDRangeListRemoveTest11

 , m3IDRangeListRemoveTest12

 , m3IDRangeListRemoveTest13

 , m3IDRangeListRemoveTest14

 , m3IDRangeListRemoveTest15

 , m3IDRangeListRemoveTest16

 , m3IDRangeListRemoveTest17

 , m3IDRangeListRemoveTest18

 , m3IDRangeListRemoveTest19

 , m3IDRangeListRemoveTest20

 , m3IDRangeListRemoveTest21

 , m3IDRangeListRemoveTest22

 , m3IDRangeListRemoveTest23


 , m3EvdDocumentIndexBuilder

 , m3EvdDocumentAttrsIndexBuilder

 , m3EvdDocumentAttrsIndexBuilderForGroupOp

 , m3GroupOpFilter


 , m3AttrsFromIndexAdder


 , m3DocumentIndexBuilder

 , m3DocumentIndexBuilderEx


 , m2MEMLib


 , m3IndexHashElement

 , m3IndexHashElementAE

 , Im3IndexHashElementList


 , m3AttrIndexElement

 , Im3AttrIndexElementList


 , m3AttrIndexDumper

 , m3AttrIndexDumperJoin

 //, Im3DirectAttrIndexElementEnumeratorWithFilteredModified

 , Im3DirectAttrIndexElementEnumeratorSortedJoin

 , Im3AttrIndexDumperList

 , Im3AttrIndexDumperByTimeStampList


 , vtFileSystem


 , vtPanel


 , vtDialogs


 , m3ProxyIndexStream

 , m3ProxyTempFileStream

 , m3DocumentAttrIndexBuilder

 , m3DBHelper


 , m3AttrIndexInterfaces

 , m3AttrIndexSearcher


 , daDataProvider

 , daQueryParams

 , daDictQueryParams

 , daAttrIndexInterfaces


 , sdbDataProvider


 , ddDictItemNameReplacer


 , m3DirectQueryExecutorFactory


 , l3ListenersManager


 , PdaDocListAccessRecHolder


 , m3QueryResultSetFromLongintList


 , dtQueryProvider


 , m3DocListQueryProvider

 , m3AndQueryExecutor


 , m3DocumentInfoExtractor


 , m3TextQueryExecutor


 , m3Morph


 , m4SearchEx

 , m3DateNumQueryExecutor


 , evdVer

 , dt_Types


 //, m3STSort

 , IntToStrAndConcatTest

 , IntToStrAndConcatTest1

 , IntToStrAndConcatTest2

 , IntToStrAndConcatTest3


 , m3LogByActionQueryExecutor


 , m3DocInfo


 , m3IDListQueryExecutor

 , daIDListQueryParams


 , m3DocListQueryExecutor


 , evCustomMemo


 {$IfDef FPC}

 , ar_filters

 {$EndIf FPC}

 , sdbStorage

 {.$IfDef FPC}

 , sdbDictionary

 , sdbDictDataAccess

 {.$EndIf FPC}

 , k2Core_Schema


 , k2DocumentHeaderBuffer


 , m3Exceptions

 , k2Attributes


 , ddDocStructBuildFilterPrim

 , ddDocStruct


 , evdStyles


 , evParaTools

 , evRange


 , evCommentDecorator

 , m3SplittedFileStream


 , csAnnotationTask

 , TcsAnnotationTaskTest

 , csAutoClassTask

 , csAutoExportTask

 , csDocumentControlTask


 , TcsAutoClassTaskTest

 , TcsAutoExportTaskTest

 , TcsDocumentControlTaskTest


 , badIndexDumperTest

 , StgIndexSearchNewTest


 , l3IDList


 , m3NewStorageStreamPrim

 , m3VersionedStorageStream

 , m3StorageBlock


 , evSubPanel

 , l3Variant


 , m3RootStreamManagerPrimPrim

 , k2Tags


 , nevDocumentContainer

 , m3TOCHandle


 , l3IniFile


 , TiffTopicToPDFRenderTest


 , OvcCmd


 , nevView

 , daDocumentEnumList


 , sdbExternalDocNumbers


 , m3AttrIndexWriter

 , m3AttrIndexWriterPackTest

 , m3AttrIndexWriterPackTest1

 , m3AttrIndexWriterPackTest2

 , m3AttrIndexWriterPackRandomTest

 , m3AttrIndexWriterPackRandomTest1

 , m3LockedRegionsList


 , m3AttrIndexSearcherTest


 , m3AttrIndexSequentialTest


 , m3IntegerToDocInfoMap

 , m3IntegerToDocInfoMapSafe


 , csClientMail


 , m3DBCheckRunner

 // - в тестах не используется но подключён для проверки компилируемости


 , m3StorageIndexStream

;


implementation


(*

[*

TestCases.pas

├── 1. БАЗОВЫЙ СЛОЙ (L3)

│   ├── Память: l3MemUtils, l3AllocatedPointersTrace

│   ├── Потоки: l3Stream, l3StringStream, l3MemoryStream, l3TempFileStream

│   ├── Строки: l3String, l3StringEx, l3Chars, l3_String

│   ├── Списки: l3LongintList, l3IDList, l3ObjectStringList

│   ├── Биты: l3Bits, l3BitArr, l3SetBitTest*, l3TestBitTest*

│   └── Сравнение: CompareTest*, CompareLiteTest*, CompareTextTest*

├── 2. КОДИРОВКИ И UNICODE

│   ├── AnsiToUnicode, RussianWinToUnicode, OemToUnicode

│   ├── UTF8ToUnicode, AnsiToUtf8, RussianWinToUtf8

│   ├── CodePageTest1-24

│   └── WideCompareTextTest*, WideCompareStrTest*

├── 3. ХРАНИЛИЩА И ИНДЕКСЫ (m3)

│   ├── Индексы атрибутов: m3AttrIndexWriterPackTest*, m3AttrIndexSearcherTest

│   ├── Диапазоны: m3IDRangeListTest*, m3IDRangeListSortedJoinTest*

│   ├── Storage: ConstantStorageTest, FullModeStorageTest, ArchiStorageNewTest

│   └── Searcher: m3AttrIndexSearcher, m3DocInfo, m3DBTools

├── 4. ДОКУМЕНТЫ (EVD, K2)

│   ├── Чтение/запись: evdReader, evdWriter, evdNativeWriter, evdNativeReader

│   ├── Преобразования: EVDtoEVDTest*, EVDtoEVDBinTest

│   ├── Стили: StyleTableTest, StyleListTest, evdStyleContainer

│   └── Структура: ddDocument, ddTextParagraph, ddHyperlink, ddPicture

├── 5. ФОРМАТЫ ДОКУМЕНТОВ

│   ├── RTF: RTFtoEVDTest*, EVDtoRTFTest, ddRTFWriter, ddRTFReader

│   ├── DOCX: DOCXtoEVDTest*, ddDocxReader

│   ├── ODT: ODTtoEVDTest*, ddODTReader

│   └── NSRC: NSRCtoEVDTestNew*, EVDtoNSRCTest*, ddNSRC_w, ddNSRCGenerator

├── 6. ЭКСПОРТ И РЕНДЕРИНГ

│   ├── PDF: EVDToPDFDirectRenderTest*, EVDToPDFA1DirectRenderTest

│   ├── RTF: EVDToRTFRenderTest, EVDToRTFRenderViaRenderEVDTest

│   ├── SVG: TextToSVGTest, FormulaToSVGTest, l3SvgCanvas

│   ├── BMP/PNG: TextToBMPTest, FormulaToBMPTest, EVDRenderToBitmapTest

│   └── Формулы: FormulaRenderTest, FormulaRenderViaDllTest, evSimpleFormulaRender

├── 7. ГРУППОВЫЕ ОПЕРАЦИИ

│   ├── GroupOperationTest*, m3GroupOpFilter

│   ├── m3EvdDocumentAttrsIndexBuilderForGroupOp

│   └── m3AttrsFromIndexAdder

├── 8. СКРИПТЫ (tfw)

│   ├── vcmInsiderTest, CustomInsiderScripter

│   ├── tfwTypeModifier, tfwScriptingInterfaces

│   └── DailyAutoTestFPC (скриптовые тесты)

├── 9. КРОССПЛАТФОРМЕННОСТЬ

│   ├── {$IFDEF UNIX} cwstring {$ENDIF}

│   ├── l3LinWindows вместо Windows

│   ├── l3LinActiveX вместо ActiveX

│   └── fpparsettf, fpvectorial для Linux

└── 10. GENERICS (FPC)

    ├── FGL, tcGeneric1, GenericTestCase1-11

    └── GenericTestCaseEx1-11

*]

*)


end.