summaryrefslogtreecommitdiff
path: root/tests/test_utils/test_assert.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2019-06-09 15:58:33 +0800
committerGitHub <[email protected]>2019-06-09 15:58:33 +0800
commit3a1db57753528053ab1c457675257efe7250bc87 (patch)
treef6a0a74de240153123268fd483e3cdd3d0ee0050 /tests/test_utils/test_assert.lua
parente165a8e43abed4eb2eca64c3b5adefb57cd65600 (diff)
parent8049d92b3e9aef35e4f124e5ae361bdd1f5c5435 (diff)
Merge pull request #444 from OpportunityLiu/test
Improve test library
Diffstat (limited to 'tests/test_utils/test_assert.lua')
-rw-r--r--tests/test_utils/test_assert.lua70
1 files changed, 70 insertions, 0 deletions
diff --git a/tests/test_utils/test_assert.lua b/tests/test_utils/test_assert.lua
new file mode 100644
index 000000000..42a276d87
--- /dev/null
+++ b/tests/test_utils/test_assert.lua
@@ -0,0 +1,70 @@
+
+import("print_error")
+import("check")
+
+local test_assert = { print_error = print_error.main }
+
+function test_assert:require(value)
+ if not value then
+ self:print_error(vformat("require ${green}true${reset} but got ${red}%s${reset}", value), self.filename)
+ end
+end
+
+function test_assert:require_not(value)
+ if value then
+ self:print_error(vformat("require ${green}false${reset} but got ${red}%s${reset}", value), self.filename)
+ end
+end
+
+function test_assert:are_same(actual, expacted)
+ local r, ap, ep = check.same(actual, expacted)
+ if not r then
+ self:print_error(format("expacted: ${green}%s${reset}, actual ${red}%s${reset}", ep, ap), self.filename)
+ end
+end
+
+function test_assert:are_not_same(actual, expacted)
+ local r, ap, ep = check.same(actual, expacted)
+ if r then
+ self:print_error(format("expacted: ${green}%s${reset}, actual ${red}%s${reset}", ep, ap), self.filename)
+ end
+end
+
+
+function test_assert:are_equal(actual, expacted)
+ local r, ap, ep = check.equal(actual, expacted)
+ if not r then
+ self:print_error(format("expacted: ${green}%s${reset}, actual ${red}%s${reset}", ep, ap), self.filename)
+ end
+end
+
+function test_assert:are_not_equal(actual, expacted)
+ local r, ap, ep = check.equal(actual, expacted)
+ if r then
+ self:print_error(format("expacted: ${green}%s${reset}, actual ${red}%s${reset}", ep, ap), self.filename)
+ end
+end
+
+test_assert._will_raise_stack = {}
+function test_assert:will_raise(func, message_pattern)
+ table.insert(self._will_raise_stack, 1, debug.getinfo(2).func)
+ try{
+ func,
+ finally{
+ function (ok, error)
+ local funcs = { func, unpack(self._will_raise_stack) }
+ if ok then
+ self:print_error("expected raise but finished successfully", funcs)
+ elseif message_pattern and not string.find(error, message_pattern) then
+ self:print_error(format("expected raise with message ${green}%s${reset} but got ${red}%s${reset}", message_pattern, error), funcs)
+ end
+ end
+ }
+ }
+ table.remove(self._will_raise_stack, 1)
+end
+
+function main(context)
+ table.join2(context, test_assert)
+ return context
+end \ No newline at end of file