#include "clar_libgit2.h"

void test_core_init__returns_count(void)
{
	/* libgit2_clar initializes us first, so we have an existing
	 * initialization.
	 */
	cl_assert_equal_i(2, git_libgit2_init());
	cl_assert_equal_i(3, git_libgit2_init());

	cl_assert_equal_i(2, git_libgit2_shutdown());
	cl_assert_equal_i(1, git_libgit2_shutdown());
}

void test_core_init__reinit_succeeds(void)
{
	cl_assert_equal_i(0, git_libgit2_shutdown());
	cl_assert_equal_i(1, git_libgit2_init());
	cl_sandbox_set_search_path_defaults();
}

#ifdef GIT_THREADS
static void *reinit(void *unused)
{
	unsigned i;

	for (i = 0; i < 20; i++) {
		cl_assert(git_libgit2_init() > 0);
		cl_assert(git_libgit2_shutdown() >= 0);
	}

	return unused;
}
#endif

void test_core_init__concurrent_init_succeeds(void)
{
#ifdef GIT_THREADS
	git_thread threads[10];
	unsigned i;

	cl_assert_equal_i(2, git_libgit2_init());

	for (i = 0; i < ARRAY_SIZE(threads); i++)
		git_thread_create(&threads[i], reinit, NULL);
	for (i = 0; i < ARRAY_SIZE(threads); i++)
		git_thread_join(&threads[i], NULL);

	cl_assert_equal_i(1, git_libgit2_shutdown());
	cl_sandbox_set_search_path_defaults();
#else
	cl_skip();
#endif
}
