#! /usr/bin/env python
# -*- coding: utf-8 -*-
# vi:ts=4:et

import pycurl
import unittest
try:
    import urllib.parse as urllib_parse
except ImportError:
    import urllib as urllib_parse

from . import appmanager
from . import util

setup_module, teardown_module = appmanager.setup(('app', 8380))

class ResetTest(unittest.TestCase):
    # XXX this test was broken when it was test_reset.py
    def skip_reset(self):
        outf = util.BytesIO()
        cm = pycurl.CurlMulti()

        eh = pycurl.Curl()

        for x in range(1, 20):
            eh.setopt(pycurl.WRITEFUNCTION, outf.write)
            eh.setopt(pycurl.URL, 'http://localhost:8380/success')
            cm.add_handle(eh)

            while 1:
                ret, active_handles = cm.perform()
                if ret != pycurl.E_CALL_MULTI_PERFORM:
                    break

            while active_handles:
                ret = cm.select(1.0)
                if ret == -1:
                    continue
                while 1:
                    ret, active_handles = cm.perform()
                    if ret != pycurl.E_CALL_MULTI_PERFORM:
                        break

            count, good, bad = cm.info_read()

            for h, en, em in bad:
                print("Transfer to %s failed with %d, %s\n" % \
                    (h.getinfo(pycurl.EFFECTIVE_URL), en, em))
                raise RuntimeError

            for h in good:
                httpcode = h.getinfo(pycurl.RESPONSE_CODE)
                if httpcode != 200:
                    print("Transfer to %s failed with code %d\n" %\
                        (h.getinfo(pycurl.EFFECTIVE_URL), httpcode))
                    raise RuntimeError

                else:
                    print("Recd %d bytes from %s" % \
                        (h.getinfo(pycurl.SIZE_DOWNLOAD),
                        h.getinfo(pycurl.EFFECTIVE_URL)))

            cm.remove_handle(eh)
            eh.reset()

        eh.close()
        cm.close()
        outf.close()

@@ -84,16 +84,27 @@
 nittest%0A
+import sys%0A
 try:%0A   
@@ -341,16 +341,683 @@
 tCase):%0A
+    def test_reset(self):%0A        c = pycurl.Curl()%0A        c.setopt(pycurl.URL, 'http://localhost:8380/success')%0A        c.reset()%0A        try:%0A            c.perform()%0A            self.fail('Perform worked when it should not have')%0A        except pycurl.error:%0A            exc = sys.exc_info()%5B1%5D%0A            code = exc.args%5B0%5D%0A            self.assertEqual(pycurl.E_URL_MALFORMAT, code)%0A        %0A        # check that Curl object is usable%0A        c.setopt(pycurl.URL, 'http://localhost:8380/success')%0A        sio = util.BytesIO()%0A        c.setopt(pycurl.WRITEFUNCTION, sio.write)%0A        c.perform()%0A        self.assertEqual('success', sio.getvalue().decode())%0A    %0A
     # XX
@@ -1065,16 +1065,16 @@
 eset.py%0A
-
     def 
@@ -1079,24 +1079,35 @@
 f skip_reset
+_with_multi
 (self):%0A    

Add a test for Curl.reset method