local e=require("\064\102\114\107\116\101\115\116\047\102\114\107\116\101\115\116")local W=e.test local w=e.assert.check local m=e.assert.require return function()W.suite("\080\097\115\115\105\110\103",function()W.case("\084\104\101 \111\110\108\121 \112\097\115\115\105\110\103 \116\101\115\116",function()w.is_true(true)end)end)W.suite("\067\104\101\099\107 \097\110\100 \114\101\113\117\105\114\101",function()W.case("\099\104\101\099\107\115",function()w.equal(1,100)w.equal(2,100)end)W.case("\114\101\113\117\105\114\101",function()m.equal(1,100)m.equal(2,100)end)end)W.suite("\066\097\115\105\099 \116\121\112\101 \101\113\117\097\108\105\116\121",function()W.case("\110\117\109\098\101\114\115",function()w.equal(10,11)end)W.case("\098\111\111\108\101\097\110\115",function()w.equal(false,true)end)W.case("\115\116\114\105\110\103\115",function()w.equal("\102\111\111","\098\097\114")end)end)W.suite("\073\110\101\113\117\097\108\105\116\121",function()W.case("\110\111\116 \101\113\117\097\108",function()w.not_equal(10,10)end)W.case("\103\114\101\097\116\101\114",function()w.greater(10,10)w.greater_eq(9,10)end)W.case("\108\101\115\115\101\114",function()w.lesser(10,10)w.lesser_eq(10,9)end)end)W.suite("\066\111\111\108\101\097\110 \099\104\101\099\107\115",function()W.case("\105\115\095\116\114\117\101",function()w.is_true(false)end)W.case("\105\115\095\102\097\108\115\101",function()w.is_false(true)end)W.case("\116\114\117\116\104\121",function()w.truthy(nil)end)W.case("\102\097\108\115\121",function()w.falsy(10)end)end)W.suite("\078\105\108 \099\104\101\099\107\115",function()W.case("\110\111\116 \110\105\108",function()local e=nil w.not_nil(e)end)end)end
local frktest = require("@frktest/frktest")
local test = frktest.test
local check = frktest.assert.check
local req = frktest.assert.require

return function()
    test.suite("Passing", function()
        test.case("The only passing test", function()
            check.is_true(true)
        end)
    end)

    test.suite("Check and require", function()
        test.case("checks", function()
            -- checks dont halt the test
            check.equal(1, 100)
            check.equal(2, 100)
        end)

        test.case("require", function()
            -- requires do halt the test
            req.equal(1, 100)
            req.equal(2, 100) -- this will never run
        end)
    end)

    test.suite("Basic type equality", function()
        test.case("numbers", function()
            check.equal(10, 11)
        end)

        test.case("booleans", function()
            check.equal(false, true)
        end)

        test.case("strings", function()
            check.equal("foo", "bar")
        end)
    end)

    test.suite("Inequality", function()
        test.case("not equal", function()
            check.not_equal(10, 10)
        end)

        test.case("greater", function()
            check.greater(10, 10)
            check.greater_eq(9, 10)
        end)

        test.case("lesser", function()
            check.lesser(10, 10)
            check.lesser_eq(10, 9)
        end)
    end)

    test.suite("Boolean checks", function()
        test.case("is_true", function()
            check.is_true(false)
        end)

        test.case("is_false", function()
            check.is_false(true)
        end)

        test.case("truthy", function()
            check.truthy(nil)
        end)

        test.case("falsy", function()
            check.falsy(10)
        end)
    end)

    test.suite("Nil checks", function()
        test.case("not nil", function()
            local a = nil
            check.not_nil(a)
        end)
    end)
end
