public void T002_ScanDirections() { LayerManager db = new LayerManager(InitMode.NEW_REGION, "c:\\BENDtst\\3"); var rk_a = new RecordKey().appendParsedKey(".a"); var rk_b = new RecordKey().appendParsedKey(".b"); string[] keys = { ".a", ".b" }; foreach (var key in keys) { db.setValueParsed(key, "valueof:" + key); } { var rec = db.FindNext(rk_a, false); Assert.AreEqual(rk_b, rec.Key, "simple FindNext"); } { var rec = db.FindPrev(rk_b, false); Assert.AreEqual(rk_a, rec.Key, "simple FindPrev"); } var scan_range = new ScanRange<RecordKey>(rk_a, rk_b, null); // scan forward int count = 0; foreach (var row in db.scanForward(scan_range)) { Console.WriteLine("forward scan: " + row); if (count == keys.Length) { Assert.Fail("too many keys returned in scan"); } Assert.AreEqual(new RecordKeyType_String(keys[count]), row.Key.key_parts[0], "forward scan mistake"); count++; } if (count != keys.Length) { Assert.Fail("not enough keys returned in scan"); } // scan backward count = keys.Length; foreach (var row in db.scanBackward(scan_range)) { Console.WriteLine("backward scan: " + row); if (count == 0) { Assert.Fail("too many keys returned in scan backward"); } count--; Assert.AreEqual(new RecordKeyType_String(keys[count]), row.Key.key_parts[0], "backward scan mistake"); } if (count != 0) { Assert.Fail("not enough keys returned in scan"); } }