box atest{type list} is proc test is list {int} l; int len; for int i := upto(1, 250) do l.append(i); end for; len := l.length; putline("\tList length is " + len.to_string + '\n'); assert len == 250; assert l[1] == l.first; assert l[10] == 10; assert l[100] == 100; assert l[250] == l.last; for int i := upto(251, 500) do l.prepend(i); end for; len := l.length; putline("\tList length is " + len.to_string + '\n'); assert len == 500; for int i := downto(500, 1) do assert(l.search(i)); end for; assert l.search(1); l.delete_point; assert not l.search(1); len := l.length; putline("\tList length is " + len.to_string + '\n'); assert len == 499; end proc; end box; proc main is atest{list} l; atest{slist} m; putline("Testing double list\n"); l.test; putline("Testing single list\n"); m.test; end proc;