Skip to content

Commit da1dc01

Browse files
author
devjun10
committed
[TEST] Add error unit-test
- ADD busted, luaunit unit-test
1 parent 6f950b3 commit da1dc01

File tree

2 files changed

+102
-0
lines changed

2 files changed

+102
-0
lines changed

basic/error/test_busted.lua

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
describe("Error module tests", function()
2+
local M = require("main")
3+
4+
it("should divide safely without error", function()
5+
local result, err = M.divideSafely(10, 2)
6+
assert.are.equal(result, 5)
7+
assert.is_nil(err)
8+
end)
9+
10+
it("should handle division by zero safely", function()
11+
local result, err = M.divideSafely(10, 0)
12+
assert.is_nil(result)
13+
assert.are.equal(err, "Division by zero")
14+
end)
15+
16+
it("should divide using assert", function()
17+
local result = M.divideWithAssert(10, 2)
18+
assert.are.equal(result, 5)
19+
end)
20+
21+
it("should raise error on division by zero with assert", function()
22+
assert.has_error(function()
23+
M.divideWithAssert(10, 0)
24+
end, "Division by zero")
25+
end)
26+
27+
it("should divide with pcall successfully", function()
28+
local result = M.divideWithPCall(10, 2)
29+
assert.are.equal(result, 5)
30+
end)
31+
32+
it("should catch division by zero with pcall", function()
33+
local result = M.divideWithPCall(10, 0)
34+
assert.are.equal(result:match("Division by zero"), "Division by zero")
35+
end)
36+
37+
it("should divide with xpcall successfully", function()
38+
local result = M.divideWithXPCall(10, 2)
39+
assert.are.equal(result, 5)
40+
end)
41+
42+
it("should handle division by zero with custom error handler in xpcall", function()
43+
local result = M.divideWithXPCall(10, 0)
44+
assert.are.equal(result.message:match("Division by zero"), "Division by zero")
45+
assert.are.equal(result.code, 400)
46+
end)
47+
48+
it("should divide with coroutine successfully", function()
49+
local result = M.divideWithCoroutine(10, 2)
50+
assert.are.equal(result, 5)
51+
end)
52+
53+
it("should handle division by zero with coroutine", function()
54+
local result = M.divideWithCoroutine(10, 0)
55+
assert.are.equal(result, "Division by zero")
56+
end)
57+
end)

basic/error/test_luaunit.lua

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
local luaunit = require("luaunit")
2+
local main = require("main")
3+
4+
TestDivision = {}
5+
6+
function TestDivision:testDivideSafely()
7+
local result, err = main.divideSafely(10, 2)
8+
luaunit.assertEquals(result, 5)
9+
luaunit.assertIsNil(err)
10+
11+
result, err = main.divideSafely(10, 0)
12+
luaunit.assertIsNil(result)
13+
luaunit.assertEquals(err, "Division by zero")
14+
end
15+
16+
function TestDivision:testDivisionByZeroPCall()
17+
local result = main.divideWithPCall(10, 2)
18+
luaunit.assertEquals(result, 5)
19+
20+
result = main.divideWithPCall(10, 0)
21+
luaunit.assertStrContains(result, "Division by zero")
22+
end
23+
24+
function TestDivision:testDivisionByZeroAndErrorHandler()
25+
local result = main.divideWithXPCall(10, 0)
26+
luaunit.assertStrContains(result.message, "Division by zero")
27+
luaunit.assertEquals(result.code, 400)
28+
end
29+
30+
function TestDivision:testDivisionWithAssert()
31+
local result = main.divideWithAssert(10, 2)
32+
luaunit.assertEquals(result, 5)
33+
34+
luaunit.assertErrorMsgContains("Division by zero", main.divideWithAssert, 10, 0)
35+
end
36+
37+
function TestDivision:testDivisionWithCoroutine()
38+
local result = main.divideWithCoroutine(10, 2)
39+
luaunit.assertEquals(result, 5)
40+
41+
result = main.divideWithCoroutine(10, 0)
42+
luaunit.assertStrContains(result, "Division by zero")
43+
end
44+
45+
os.exit(luaunit.LuaUnit.run())

0 commit comments

Comments
 (0)