crosschain_test.go

Обзор

Файл crosschain_test.go содержит набор тестов для проверки функциональности, связанной с кросс-чейн действиями в игровом движке (GameEngine). Основная задача — убедиться, что кросс-чейн игровые действия корректно валидируются, обрабатываются пакетно, синхронизируются состояния игроков между цепями и соблюдаются ограничения, накладываемые на такие операции.

Тесты используют адреса игроков, различные типы игровых действий (например, крафтинг, PvP, повышение уровня) и проверяют корректность обработки данных, обновления состояний игроков и взаимодействия с контрактами.


Подробное описание компонентов

Тестовые функции

TestValidateCrossChainAction


TestProcessCrossChainBatch


TestSynchronizePlayerStateAcrossChains


TestCrossChainActionCompatibility


TestCrossChainConstraintValidation


Вспомогательные функции кодирования параметров действий

Используются для формирования байтовых массивов параметров различных игровых действий (крафтинг, повышение уровня, PvP):


Тесты структуры данных


Важные детали реализации и алгоритмы


Взаимодействие с другими компонентами


Диаграмма структуры и связей

flowchart TD
    subgraph Tests
        TVCA[TestValidateCrossChainAction]
        TPB[TestProcessCrossChainBatch]
        TSPC[TestSynchronizePlayerStateAcrossChains]
        TCAC[TestCrossChainActionCompatibility]
        TCCV[TestCrossChainConstraintValidation]
        TCBR[TestCrossChainBatchResultValidation]
        TCAS[TestCrossChainActionStructure]
    end

    subgraph Utils
        ECP[encodeCraftingParams]
        ELP[encodeLevelUpParams]
        EPP[encodePvPParams]
    end

    TVCA -->|валидирует| GameEngine
    TPB -->|обрабатывает батч| GameEngine
    TSPC -->|синхронизирует состояния| GameEngine
    TCAC -->|проверяет совместимость действий| GameEngine
    TCCV -->|валидирует ограничения| GameEngine

    TVCA --> ECP
    TVCA --> EPP
    TCCV --> ECP
    TCCV --> ELP

    TCBR -->|проверяет структуру| CrossChainBatchResult
    TCAS -->|проверяет структуру| CrossChainGameAction

    GameEngine --> contracts.GameManagerGameAction
    GameEngine --> common.Address

Пример использования (из теста TestValidateCrossChainAction)

engine := NewGameEngine()
ctx := context.Background()

player := common.HexToAddress("0x1234567890123456789012345678901234567890")
playerState := PlayerState{
    Player: player,
    ManaBalance: big.NewInt(5000),
    Level: big.NewInt(5),
    // другие поля...
}

action := contracts.GameManagerGameAction{
    Player: player,
    ActionType: 3, // CRAFT_ITEM
    ActionParams: encodeCraftingParams(t, 100, 2),
    ManaAmount: big.NewInt(100),
    Nonce: big.NewInt(1),
    CreatedAt: big.NewInt(time.Now().Unix()),
}

result := engine.ValidateCrossChainAction(ctx, action, playerState, 2)
if result.Success {
    // действие валидно
} else {
    // обработка ошибки result.Error
}

Резюме

Файл crosschain_test.go — ключевой для обеспечения корректной работы механизмов кросс-чейн взаимодействия внутри игрового движка. Он проверяет:

Этот набор тестов обеспечивает надежность и стабильность кросс-чейн функционала в проекте.