local HAS_RUNNER = not not lunit local lunit = require "lunit" local TEST_CASE = assert(lunit.TEST_CASE) local skip = lunit.skip or function() end local _ENV = TEST_CASE'error_mode' do local c function teardown() if c then c:close() end c = nil end function test_safe() local curl = require "lcurl.safe" c = assert(curl.easy()) assert_equal(c, c:setopt_url("aaaaa://123")) assert_nil(c:perform()) end function test_raise() local curl = require "lcurl" c = assert(curl.easy()) assert_equal(c, c:setopt_url("aaaaa://123")) assert_error(function() c:perform() end) end end local _ENV = TEST_CASE'setopt' do local curl = require "lcurl.safe" local c function setup() c = assert(curl.easy()) end function teardown() if c then c:close() end c = nil end function test_number() assert_equal(c, c:setopt_verbose(false)) assert_equal(c, c:setopt_verbose(true)) assert_equal(c, c:setopt_verbose(1)) assert_equal(c, c:setopt_verbose(0)) assert_error(function() c:setopt_verbose("1") end) assert_error(function() c:setopt_verbose("true") end) end function test_string() assert_error(function() c:setopt_url(true) end) assert_error(function() c:setopt_url(1) end) assert_equal(c, c:setopt_url("1")) end function test_array() assert_error(function() c:setopt_httpheader(true) end) assert_error(function() c:setopt_httpheader(1) end) assert_error(function() c:setopt_httpheader("k:v")end) assert_equal(c, c:setopt_httpheader{"k:v"}) end function test_multiple_options() assert_error(function() c:setopt{verbose = "false"} end) assert_error(function() c:setopt{verbose = "1"} end) assert_equal(c, c:setopt{verbose = false}) assert_equal(c, c:setopt{[curl.OPT_VERBOSE] = false}) 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 local _ENV = TEST_CASE'ctor' do local scurl = require "lcurl.safe" local curl = require "lcurl" local c function teardown() if c then c:close() end c = nil end function test_error() c = assert(curl.easy()) c:close() c = assert(curl.easy{ url = "http://example.com", [curl.OPT_VERBOSE] = true, }) c:close() assert_error(function() c = curl.easy{ url_111 = "http://example.com", } end) assert_error(function() c = curl.easy{ url = 123, } end) end function test_safe() c = assert(scurl.easy()) c:close() c = assert(scurl.easy{ url = "http://example.com", [curl.OPT_VERBOSE] = true, }) c:close() assert_pass(function() c = scurl.easy{ url_111 = "http://example.com", } end) assert_nil(c) assert_error(function() c = scurl.easy{ url = 123, } end) end end if not HAS_RUNNER then lunit.run() end