#include "clar_libgit2.h"

void test_config_snapshot__create_snapshot(void)
{
	int32_t tmp;
	git_config *cfg, *snapshot, *new_snapshot;
	const char *filename = "config-ext-change";

	cl_git_mkfile(filename, "[old]\nvalue = 5\n");

	cl_git_pass(git_config_open_ondisk(&cfg, filename));

	cl_git_pass(git_config_get_int32(&tmp, cfg, "old.value"));
	cl_assert_equal_i(5, tmp);

	cl_git_pass(git_config_snapshot(&snapshot, cfg));

	/* Change the value on the file itself (simulate external process) */
	cl_git_mkfile(filename, "[old]\nvalue = 56\n");

	cl_git_pass(git_config_get_int32(&tmp, cfg, "old.value"));
	cl_assert_equal_i(56, tmp);

	cl_git_pass(git_config_get_int32(&tmp, snapshot, "old.value"));
	cl_assert_equal_i(5, tmp);

	/* Change the value on the file itself (simulate external process) */
	cl_git_mkfile(filename, "[old]\nvalue = 999\n");

	cl_git_pass(git_config_snapshot(&new_snapshot, cfg));

	/* New snapshot should see new value */
	cl_git_pass(git_config_get_int32(&tmp, new_snapshot, "old.value"));
	cl_assert_equal_i(999, tmp);

	/* Old snapshot should still have the old value */
	cl_git_pass(git_config_get_int32(&tmp, snapshot, "old.value"));
	cl_assert_equal_i(5, tmp);
	
	git_config_free(new_snapshot);
	git_config_free(snapshot);
	git_config_free(cfg);
}

static int count_me(const git_config_entry *entry, void *payload)
{
	int *n = (int *) payload;

	GIT_UNUSED(entry);

	(*n)++;

	return 0;
}

void test_config_snapshot__multivar(void)
{
	int count = 0;
	git_config *cfg, *snapshot;
	const char *filename = "config-file";

	cl_git_mkfile(filename, "[old]\nvalue = 5\nvalue = 6\n");

	cl_git_pass(git_config_open_ondisk(&cfg, filename));
	cl_git_pass(git_config_get_multivar_foreach(cfg, "old.value", NULL, count_me, &count));

	cl_assert_equal_i(2, count);

	cl_git_pass(git_config_snapshot(&snapshot, cfg));
	git_config_free(cfg);

	count = 0;
	cl_git_pass(git_config_get_multivar_foreach(snapshot, "old.value", NULL, count_me, &count));

	cl_assert_equal_i(2, count);

	git_config_free(snapshot);
}
