def test_cmd_default(default_command):
    cmd = create_cmd()
    if default_command is not None:
        cmd.default = default_command
    add_comm(cmd)
    add_comm2(cmd)
    add_comm3(cmd)
    cmd.queue("comm")
    cmd.queue("comm2")
    cmd.queue("")
    cmd.queue("quit")
    cmd.run()
    expected_lines = [
        COMM_TEXT,
        COMM_TEXT2,
    ]
    if default_command is IGNORE or default_command is None:
        pass
    elif default_command is REPEAT_LAST:
        expected_lines.append(COMM_TEXT2)
    elif default_command == "comm3":
        expected_lines.append(COMM_TEXT3)
    expected_lines.append("")
    expected_text = '\n'.join(expected_lines)
    #print(cmd.stdout.getvalue())
    #print(repr(cmd.stdout.getvalue()))
    #print()
    #print(repr(expected_text))
    assert cmd.stdout.getvalue() == expected_text
def cmdhis():
    cmd = create_cmd()
    add_comm(cmd)
    add_comm2(cmd)
    add_comm3(cmd)
    add_history(cmd)
    return cmd
def test_ignore():
    cmd = create_cmd()
    add_comm(cmd)
    add_comm2(cmd)
    add_quit(cmd)
    cmd.exec_command_line("comm")
    assert cmd.stdout.getvalue() == COMM_TEXT + '\n'
    assert not IGNORE(cmd)
    cmd.queue("quit")
    cmd.run()
    assert cmd.stdout.getvalue() == COMM_TEXT + '\n'
def test_repeat_last():
    cmd = create_cmd()
    add_comm(cmd)
    add_comm2(cmd)
    add_quit(cmd)
    cmd.exec_command_line("comm")
    assert cmd.stdout.getvalue() == COMM_TEXT + '\n'
    assert not REPEAT_LAST(cmd)
    cmd.queue("quit")
    cmd.run()
    assert cmd.stdout.getvalue() == COMM_TEXT + '\n' + COMM_TEXT + '\n'
def test_load(tmpdir):
    cmd = create_cmd()
    add_comm(cmd)
    add_comm2(cmd)
    add_comm3(cmd)
    add_quit(cmd)
    fname = os.path.join(tmpdir.strpath, "load.txt")
    with open(fname, "w") as f_out:
        f_out.write("comm\n")
        f_out.write("comm3\n")
        f_out.write("comm2\n")
        f_out.write("quit\n")
    assert not LOAD(cmd, fname)
    cmd.run()
    expected_lines = [
        COMM_TEXT,
        COMM_TEXT3,
        COMM_TEXT2,
        '',
    ]
    assert cmd.stdout.getvalue() == '\n'.join(expected_lines)