sa = SearchArgs.builder().sort("f2").view("f1, f2").build();
results = q.filter(sa);
assertEquals("[{f1:2,f2:'bar'},{f1:3,f2:'baz'},{f1:1,f2:'foo'}]", s.serialize(results));
sa = SearchArgs.builder().sort("f2-").view("f1,f2").build();
results = q.filter(sa);
assertEquals("[{f1:1,f2:'foo'},{f1:3,f2:'baz'},{f1:2,f2:'bar'}]", s.serialize(results));
sa = SearchArgs.builder().sort("f3").view("f1,f3").build();
results = q.filter(sa);
assertEquals("[{f1:2,f3:false},{f1:1,f3:true},{f1:3,f3:true}]", s.serialize(results));
sa = SearchArgs.builder().sort("f3,f1+").view("f1,f3").build();
results = q.filter(sa);
assertEquals("[{f1:2,f3:false},{f1:1,f3:true},{f1:3,f3:true}]", s.serialize(results));
sa = SearchArgs.builder().sort("f3,f1-").view("f1,f3").build();
results = q.filter(sa);
assertEquals("[{f1:2,f3:false},{f1:3,f3:true},{f1:1,f3:true}]", s.serialize(results));
sa = SearchArgs.builder().sort("f1").view("f1").limit(1).position(0).build();
results = q.filter(sa);
assertEquals("[{f1:1}]", s.serialize(results));
sa = SearchArgs.builder().sort("f1").view("f1").limit(3).position(0).build();
results = q.filter(sa);
assertEquals("[{f1:1},{f1:2},{f1:3}]", s.serialize(results));
sa = SearchArgs.builder().sort("f1").view("f1").limit(1).position(2).build();