#include "test/jemalloc_test.h"

#ifndef _WIN32
#include <sys/wait.h>
#endif

TEST_BEGIN(test_fork)
{
#ifndef _WIN32
	void *p;
	pid_t pid;

	p = malloc(1);
	assert_ptr_not_null(p, "Unexpected malloc() failure");

	pid = fork();

	free(p);

	p = malloc(64);
	assert_ptr_not_null(p, "Unexpected malloc() failure");
	free(p);

	if (pid == -1) {
		/* Error. */
		test_fail("Unexpected fork() failure");
	} else if (pid == 0) {
		/* Child. */
		exit(0);
	} else {
		int status;

		/* Parent. */
		while (true) {
			if (waitpid(pid, &status, 0) == -1)
				test_fail("Unexpected waitpid() failure");
			if (WIFSIGNALED(status)) {
				test_fail("Unexpected child termination due to "
				    "signal %d", WTERMSIG(status));
				break;
			}
			if (WIFEXITED(status)) {
				if (WEXITSTATUS(status) != 0) {
					test_fail(
					    "Unexpected child exit value %d",
					    WEXITSTATUS(status));
				}
				break;
			}
		}
	}
#else
	test_skip("fork(2) is irrelevant to Windows");
#endif
}
TEST_END

int
main(void)
{

	return (test(
	    test_fork));
}
