-- Copyright (c) 2026 Huawei Technologies Co., Ltd.
-- openUBMC 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.

local lu = require('luaunit')
local tmpl = require('template')

local project_dir = os.getenv('PROJECT_DIR')
TestHtml = {}

function TestHtml:setupClass() end

function TestHtml:teardownClass() end

-- 测试'*'
function TestHtml:test1()
    local expect_data = [[
1. 111
2. 222
]]

    local tmpl_data = [[
{% for i, val in ipairs(tables) do %}
{# '*' Test #}
{*i*}. {{val}}
{% end %}
]]
    local format_data = { tables = { '111', '222' } }

    local view_render = tmpl.compile(tmpl_data)
    lu.assertEquals(view_render(format_data), expect_data)
end

-- 测试 process 接口
function TestHtml:test2()
    local expect_data = [[
1. 111
2. 222
]]

    local tmpl_data = [[
{% for i, val in ipairs(tables) do %}
{*i*}. {{val}}
{% end %}
]]
    local format_data = { tables = { '111', '222' } }

    lu.assertEquals(tmpl.process(tmpl_data, format_data), expect_data)
end

-- 测试 '('
function TestHtml:test3()
    local expect_data = [[
User:A Age:5
User:B Age:6
]]
    local tmpl_data = [[
{% for i, val in ipairs(tables) do %}
{(]] .. project_dir .. [[/test/unit/data/template/tmpl, val)}
{% end %}
]]

    local format_data = { tables = { { name = 'A', age = 5 }, { name = 'B', age = 6 } } }

    lu.assertEquals(tmpl.process(tmpl_data, format_data), expect_data)
end

-- 测试 '['
function TestHtml:test4()
    local expect_data = [[
User:A Age:5
User:A Age:5
]]
    local tmpl_data = [[
{% for i, val in ipairs(tables) do %}
{["]] .. project_dir .. [[/test/unit/data/template/tmpl", {name = 'A', age = 5}]}
{% end %}
]]
    local format_data = { tables = { { name = 'A', age = 5 }, { name = 'B', age = 6 } } }
    lu.assertEquals(tmpl.process(tmpl_data, format_data), expect_data)
end

-- 测试 '-'
function TestHtml:test5()
    local expect_data = [[
User:A Age:5
Test block
User:A Age:5
Test block
]]
    local tmpl_data = [[
{-block-}
Test block
{-block-}
{% for i, val in ipairs(tables) do %}
{["]] .. project_dir .. [[/test/unit/data/template/tmpl", {name = 'A', age = 5}]}
{* blocks.block *}
{% end %}
]]
    local format_data = { tables = { { name = 'A', age = 5 }, { name = 'B', age = 6 } } }
    lu.assertEquals(tmpl.process(tmpl_data, format_data), expect_data)
end