END_TEST

START_TEST(tcp_socket_create_and_destroy)
{
	int result = 0;
	struct pico_mqtt_socket* socket = NULL;
	result = pico_mqtt_connection_open(&socket, "127.0.0.1", "1883");
	ck_assert_msg(socket != NULL, "Error while creating the socket");
	ck_assert_msg(result == SUCCES, "Error while creating the socket");
	result = pico_mqtt_connection_close( &socket );
	ck_assert_msg(result == SUCCES, "Error while closing the socket");
}
int main()
{
	int result = 0;
	uint32_t written = 0;
	struct pico_mqtt_socket* socket;
	struct timeval time_left = {.tv_usec = 0, .tv_sec = 1};
	char message[12] = "Hello World\0";
	struct pico_mqtt_data output_buffer= {.length = 12, .data = (void*) message};
	
	
	pico_mqtt_connection_open(socket, "127.0.0.1", 1083);
	pico_mqtt_connection_send(socket, &output_buffer, &time_left);
	return SUCCES;
}
END_TEST

START_TEST(tcp_socket_send_test)
{
	struct pico_mqtt_socket* socket;
	int result = 0;
	struct timeval time_left = {.tv_usec = 0, .tv_sec = 1};
	/*struct test_thread thread;*/
	char buffer[100] = "Hallo world";
	struct pico_mqtt_data data = {.length = 12, .data = buffer};

	char* ip = "127.0.0.1";
	/*thread = create_test_thread(tcp_v4_echo_server, (void*) NULL);*/
	/*sleep(1);*/
	result = pico_mqtt_connection_open(&socket, ip, "1883");
	ck_assert_msg(result == SUCCES, "Unable to find host");

	/**buffer = 'a';*/
	result = pico_mqtt_connection_send(socket, &data, &time_left);
	ck_assert_msg(result == SUCCES, "Error while writing to the socket.");
/*
	*buffer = 'b';
	result = read(thread.read_descriptor, buffer, 1);
	if(result == -1)
		printf("error: %s\n", strerror(errno));
	close(thread.write_descriptor);
	close(thread.read_descriptor);
	wait(NULL);
	ck_assert_msg(*buffer == 'a', "thread not writing to parent");*/
}
END_TEST

Suite * tcp_suite(void)
{
	Suite *test_suite;
	TCase *test_case_core;

	test_suite = suite_create("TCP");

	/* Core test case */
	test_case_core = tcase_create("Core");

	tcase_add_test(test_case_core, fork_test);
	tcase_add_test(test_case_core, tcp_socket_create_and_destroy);
	tcase_add_test(test_case_core, tcp_socket_send_test);
	suite_add_tcase(test_suite, test_case_core);

	return test_suite;
}

 int main(void)
 {
	int number_failed;
	Suite *test_suite;
	SRunner *suite_runner;

	test_suite = tcp_suite();
	suite_runner = srunner_create(test_suite);

	srunner_run_all(suite_runner, CK_NORMAL);
	number_failed = srunner_ntests_failed(suite_runner);
	srunner_free(suite_runner);
	return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
 }