import TestLib;
import math;

string[] a={"bob","alice","pete","alice"};
string[] b={"alice","alice","bob","pete"};

StartTest("sort");

assert(all(sort(a) == b));

EndTest();

StartTest("search");

assert(search(b,"a") == -1);
assert(search(b,"bob") == 2);
assert(search(b,"z") == b.length-1);

EndTest();

StartTest("sort2");

string[][] a={{"bob","9"},{"alice","5"},{"pete","7"},{"alice","4"}};
string[][] b={{"alice","4"},{"alice","5"},{"bob","9"},{"pete","7"}};

assert(sort(a) == b);

EndTest();

pair[] a={(2,1),(0,0),(1,1),(1,0)};
pair[] b={(0,0),(1,0),(1,1),(2,1)};

StartTest("lexicographical sort");
assert(all(sort(a,lexorder) == b));
EndTest();

StartTest("lexicographical search");
assert(search(b,(1,0),lexorder) == 1);
EndTest();