/*
          efun: mixed read_buffer(string|buffer, void|int, void|int);
   test author: John Garnett
          date: 1993 November 8
*/
inherit "/inherit/tests";
#define TEST_STRING "ABC"
buffer b;
int i;
int
test(int which)
{
	string s;
	switch (which) {
	case 0:
		describe_test("string read_buffer(buffer b)");
		s = read_buffer(b);
		return (s == TEST_STRING);
	break;
	case 1:
		describe_test("string read_buffer(buffer b, 0)");
		s = read_buffer(b);
		return (s == TEST_STRING);
	break;
	case 2:
		describe_test("string read_buffer(buffer b, sizeof(b)-1)");
		s = read_buffer(b, sizeof(b)-1);
		return (s == TEST_STRING[i..i]);
	break;
	case 3:
		describe_test("string read_buffer(buffer b, sizeof(b))");
		s = read_buffer(b, sizeof(b));
		return (s == 0);
	break;
	case 4:
		describe_test("string read_buffer(buffer b, -sizeof(buffer))");
		s = read_buffer(b, -sizeof(b));
		return (s == TEST_STRING);
	break;
	case 5:
		describe_test("string read_buffer(buffer b, -(sizeof(b)+1))");
		s = read_buffer(b, -(sizeof(b) + 1));
		return (s == 0);
	break;
	case 6:
		describe_test("string read_buffer(buffer b, 1, 1)");
		s = read_buffer(b, 1, 1);
		return (s == TEST_STRING[1..1]);
	break;
	case 7:
		describe_test("string read_buffer(buffer b, 1, sizeof(b))");
		s = read_buffer(b, 1, sizeof(b));
		return (s == TEST_STRING[1..i]);
	break;
	/* add cases here to handle reading from files */
	default:
	return -1;
	break;
	}
}
void
create()
{
	int j, limit;
	i = strlen(TEST_STRING) - 1;
	limit = strlen(TEST_STRING);
	b = allocate_buffer(limit);
	for (j = 0; j < limit; j++) {
		b[j] = TEST_STRING[j];
	}
}