#include "/inc/base.inc"
#include "/sys/input_to.h"
/* These functions are for the clone (the player object). */
int active;
void start_client()
{
net_connect("127.0.0.1", query_mud_port());
active = 1;
}
int logon(int flag)
{
enable_telnet(0);
set_prompt("");
add_action("test_action", "test");
if(active)
ed("/dummy","ed_ends");
return 1;
}
void ed_ends()
{
}
int test_action(string str)
{
input_to("test_input_to", INPUT_PROMPT, "+");
return 1;
}
void test_input_to(string str)
{
if(str != "=")
{
msg("Failed: Wrong message received.\n");
shutdown(1);
return;
}
write("A\n"); // Not a number as 'ed' would show.
}
/* These functions are for the blueprint (the virtual player that
sends us the commands). */
void receive(string str, int nr)
{
if(!strstr(str, "\"dummy\" ") || !strstr(str, "/dummy,"))
{
input_to("receive", 0, nr);
return;
}
if(!nr)
{
if(strstr(str,":"))
{
msg("Failed: Ed prompt expected.\n");
shutdown(1);
return;
}
str = str[1..];
}
// We just verify, that the prompt
// corresponds to the answer.
if(str != "+A" && str != ":0")
{
msg("Failed: Received %Q as the %d. line.\n", str, nr+1);
shutdown(1);
return;
}
if(nr)
{
msg("Success.\n");
shutdown(0);
}
else
input_to("receive", 0, 1);
}
object connect()
{
enable_telnet(0);
set_prompt("");
write("!test\n=\n=\n");
call_out(#'shutdown, 1, 1); // If something goes wrong.
input_to("receive", 0, 0);
return clone_object(this_object()); // Just a dummy object.
}
void run_test()
{
msg("\nRunning test for #0000522:\n"
"--------------------------\n");
/* Waiting until LDMud is ready for users. */
call_out("run_test2", 0);
}
void run_test2()
{
object dummy;
dummy = clone_object(this_object());
dummy->start_client();
}
string *epilog(int eflag)
{
run_test();
return 0;
}