Add. category method to error object.

This commit is contained in:
Alexey Melnichuk 2014-09-01 11:39:11 +05:00
parent 3ac4b54851
commit ef25a2f444
4 changed files with 49 additions and 6 deletions

View File

@ -121,6 +121,17 @@ end
-- @type error
--
do
--- Get the error category.
--
-- @treturn number number of error category (curl.ERROR_XXX constants)
--
-- @usage
-- if err:category() == curl.ERROR_EASY then
-- -- proceed easy error
-- end
function category ()end
--- Get the number value of error.
--
-- @treturn number number of error (curl.E_XXX constants)

View File

@ -156,6 +156,12 @@ static int lcurl_err_equal(lua_State *L){
return 1;
}
static int lcurl_err_category(lua_State *L){
lcurl_error_t *err = lcurl_geterror(L);
lua_pushinteger(L, err->tp);
return 1;
}
//}
//{
@ -199,6 +205,8 @@ static const struct luaL_Reg lcurl_err_methods[] = {
{"msg", lcurl_err_msg },
{"name", lcurl_err_mnemo },
{"mnemo", lcurl_err_mnemo },
{"cat", lcurl_err_category },
{"category", lcurl_err_category },
{"__tostring", lcurl_err_tostring },
{"__eq", lcurl_err_equal },
@ -226,6 +234,15 @@ static const lcurl_const_t lcurl_error_codes[] = {
{NULL, 0}
};
static const lcurl_const_t lcurl_error_category[] = {
{"ERROR_CURL", LCURL_ERROR_CURL},
{"ERROR_EASY", LCURL_ERROR_EASY},
{"ERROR_MULTI", LCURL_ERROR_MULTI},
{"ERROR_SHARE", LCURL_ERROR_SHARE},
{"ERROR_FORM", LCURL_ERROR_FORM},
{NULL, 0}
};
void lcurl_error_initlib(lua_State *L, int nup){
if(!lutil_createmetap(L, LCURL_ERROR, lcurl_err_methods, nup))
@ -233,4 +250,5 @@ void lcurl_error_initlib(lua_State *L, int nup){
lua_pop(L, 1);
lcurl_util_set_const(L, lcurl_error_codes);
lcurl_util_set_const(L, lcurl_error_category);
}

View File

@ -161,12 +161,6 @@ static const lcurl_const_t lcurl_flags[] = {
#include "lcflags.h"
#undef FLG_ENTRY
"ERROR_CURL", LCURL_ERROR_CURL,
"ERROR_EASY", LCURL_ERROR_EASY,
"ERROR_MULTI", LCURL_ERROR_MULTI,
"ERROR_SHARE", LCURL_ERROR_SHARE,
"ERROR_FORM", LCURL_ERROR_FORM,
{NULL, 0}
};

View File

@ -65,4 +65,24 @@ end
end
local _ENV = TEST_CASE'error_object' do
local curl = require "lcurl"
function test()
local e1 = curl.error(curl.ERROR_EASY, 0) -- ok
assert_equal(curl.ERROR_EASY, e1:category())
assert_equal(curl.E_OK, e1:no())
assert_equal("OK", e1:name())
local e2 = curl.error(curl.ERROR_MULTI, 0) -- ok
local e3 = curl.error(curl.ERROR_MULTI, 0) -- ok
assert_equal(0, e1:no())
assert_equal(0, e2:no())
assert(e1 ~= e2)
assert(e3 == e2)
end
end
if not HAS_RUNNER then lunit.run() end