#include "../testsuite.h"
+#define DOWNLOAD_URL "file://" ABS_TOP_SRCDIR "/tests/data/beep-1.3-2.ip3.x86_64.pfm"
+
static int test_create(const struct test* t) {
struct pakfire_httpclient* client = NULL;
int r = EXIT_FAILURE;
return r;
}
+static int test_one(const struct test* t) {
+ struct pakfire_xfer* xfer = NULL;
+ char* buffer = NULL;
+ size_t length = 0;
+ int r = EXIT_FAILURE;
+
+ // Create a new transfer
+ ASSERT_SUCCESS(pakfire_xfer_create(&xfer, t->ctx, t->httpclient, DOWNLOAD_URL));
+
+ // Set output buffer
+ ASSERT_SUCCESS(pakfire_xfer_set_output_buffer(xfer, &buffer, &length));
+
+ // Enqueue the transfer
+ ASSERT_SUCCESS(pakfire_httpclient_enqueue_xfer(t->httpclient, xfer));
+
+ // Run it!
+ ASSERT_SUCCESS(pakfire_httpclient_run(t->httpclient, "Downloading..."));
+
+ // Everything passed
+ r = EXIT_SUCCESS;
+
+FAIL:
+ if (xfer)
+ pakfire_xfer_unref(xfer);
+ if (buffer)
+ free(buffer);
+
+ return r;
+}
+
+static int __test_create_transfer(const struct test* t, struct pakfire_xfer** xfer,
+ const char* url, char** buffer, size_t* length) {
+ int r;
+
+ // Create a new transfer
+ r = pakfire_xfer_create(xfer, t->ctx, t->httpclient, url);
+ if (r)
+ return r;
+
+ // Set the output buffer
+ r = pakfire_xfer_set_output_buffer(*xfer, buffer, length);
+ if (r)
+ return r;
+
+ // Enqueue the transfer
+ r = pakfire_httpclient_enqueue_xfer(t->httpclient, *xfer);
+ if (r)
+ return r;
+
+ return 0;
+}
+
+static int test_multiple(const struct test* t) {
+ struct pakfire_xfer* xfer1 = NULL;
+ char* buffer1 = NULL;
+ size_t length1 = 0;
+ struct pakfire_xfer* xfer2 = NULL;
+ char* buffer2 = NULL;
+ size_t length2 = 0;
+ struct pakfire_xfer* xfer3 = NULL;
+ char* buffer3 = NULL;
+ size_t length3 = 0;
+ struct pakfire_xfer* xfer4 = NULL;
+ char* buffer4 = NULL;
+ size_t length4 = 0;
+ int r = EXIT_FAILURE;
+
+ ASSERT_SUCCESS(__test_create_transfer(t, &xfer1, DOWNLOAD_URL, &buffer1, &length1));
+ ASSERT_SUCCESS(__test_create_transfer(t, &xfer2, DOWNLOAD_URL, &buffer2, &length2));
+ ASSERT_SUCCESS(__test_create_transfer(t, &xfer3, DOWNLOAD_URL, &buffer3, &length3));
+ ASSERT_SUCCESS(__test_create_transfer(t, &xfer4, DOWNLOAD_URL, &buffer4, &length4));
+
+ // Run it!
+ ASSERT_SUCCESS(pakfire_httpclient_run(t->httpclient, "Downloading..."));
+
+ ASSERT(*buffer1);
+ ASSERT(*buffer2);
+ ASSERT(*buffer3);
+ ASSERT(*buffer4);
+
+ // Everything passed
+ r = EXIT_SUCCESS;
+
+FAIL:
+ if (xfer1)
+ pakfire_xfer_unref(xfer1);
+ if (xfer2)
+ pakfire_xfer_unref(xfer2);
+ if (xfer3)
+ pakfire_xfer_unref(xfer3);
+ if (xfer4)
+ pakfire_xfer_unref(xfer4);
+ if (buffer1)
+ free(buffer1);
+ if (buffer2)
+ free(buffer2);
+ if (buffer3)
+ free(buffer3);
+ if (buffer4)
+ free(buffer4);
+
+ return r;
+}
+
int main(int argc, const char* argv[]) {
testsuite_add_test(test_create, 0);
+ testsuite_add_test(test_one, TEST_WANTS_HTTPCLIENT);
+ testsuite_add_test(test_multiple, TEST_WANTS_HTTPCLIENT);
return testsuite_run(argc, argv);
}