// SPDX-License-Identifier: GPL-2.0+
/*
 * Tests for history command
 *
 * Copyright 2023 Google LLC
 * Written by Simon Glass <sjg@chromium.org>
 */

#include <cli.h>
#include <command.h>
#include <test/lib.h>
#include <test/test.h>
#include <test/ut.h>

static int lib_test_history(struct unit_test_state *uts)
{
	static const char cmd1[] = "setenv fred hello";
	static const char cmd2[] = "print fred";

	/* running commands directly does not add to history */
	ut_assertok(run_command(cmd1, 0));
	ut_assert_console_end();
	ut_assertok(run_command("history", 0));
	ut_assert_console_end();

	/* enter commands via the console */
	console_in_puts(cmd1);
	console_in_puts("\n");
	ut_asserteq(strlen(cmd1), cli_readline(""));
	ut_assert_nextline(cmd1);

	console_in_puts(cmd2);
	console_in_puts("\n");
	ut_asserteq(strlen(cmd2), cli_readline(""));
	ut_assert_nextline(cmd2);

	ut_assertok(run_command("print fred", 0));
	ut_assert_nextline("fred=hello");
	ut_assert_console_end();

	ut_assertok(run_command("history", 0));
	ut_assert_nextline(cmd1);
	ut_assert_nextline(cmd2);
	ut_assert_console_end();

	return 0;
}
LIB_TEST(lib_test_history, UT_TESTF_CONSOLE_REC);
