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

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.


Комментариев нет:

Отправить комментарий