/*
 * -------------------------------------------------------------------------
 * This file is part of the MindStudio project.
 * Copyright (c) 2025 Huawei Technologies Co.,Ltd.
 *
 * MindStudio is licensed under Mulan PSL v2.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 *
 *          http://license.coscl.org.cn/MulanPSL2
 *
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 * -------------------------------------------------------------------------
 */
#include <gtest/gtest.h>
#include "IEContext.h"
#include "FileUtil.h"
#include "ServitizationContext.h"
using namespace Dic::Module::IE;
class ServitizationContextTest : public ::testing::Test {
    void SetUp() override { IEContext::Instance().Reset(); }

    void TearDown() override { IEContext::Instance().Reset(); }
};

TEST_F(ServitizationContextTest, InitDataBaseTest) {
    std::shared_ptr<ServitizationContext> context = std::make_shared<ServitizationContext>();
    auto res = context->InitDataBase("llllllll", ":memory:");
    EXPECT_EQ(res, true);
    auto res2 = context->InitDataBase("llllllll", ":memory:");
    EXPECT_EQ(res2, false);
}

TEST_F(ServitizationContextTest, ComputeFileIdByFolderTest) {
    std::shared_ptr<ServitizationContext> context = std::make_shared<ServitizationContext>();
    std::string folder = R"(/src/test/test_data)";
    auto res = context->ComputeFileIdByFolder(folder);
    EXPECT_EQ(res, "test_data_0");
    auto res2 = context->ComputeFileIdByFolder(folder);
    EXPECT_EQ(res2, "test_data_0");
}

TEST_F(ServitizationContextTest, GetDatabaseTest) {
    std::shared_ptr<ServitizationContext> context = std::make_shared<ServitizationContext>();
    auto res = context->GetDatabase("kk");
    EXPECT_EQ(res, nullptr);
}

TEST_F(ServitizationContextTest, ExecuteScriptTest) {
    std::shared_ptr<ServitizationContext> context = std::make_shared<ServitizationContext>();
    auto res = context->ExecuteScript("mmmmmm", "lll");
    context->Reset();
    EXPECT_EQ(res, false);
}