public void CanCreateAndQuery() { var r1 = CreateRecord("key", "data"); var r2 = CreateRecord("foo", "Bar"); var r3 = CreateRecord("foo", "Quux"); // same key var r4 = CreateRecord("", ""); // empty key and data string filePath = Path.GetTempFileName(); // create empty file CreateCdb(filePath, r1, r2, r3, r4); var cdb = Cdb.Open(filePath); Assert.Equal(r1.Data, cdb.Find(r1.Key)); cdb.FindStart(); var d23 = new[] { cdb.FindNext(r2.Key), cdb.FindNext(r2.Key) }; Assert.Null(cdb.FindNext(r2.Key)); Assert.Contains(r2.Data, d23); Assert.Contains(r3.Data, d23); Assert.Equal(r4.Data, cdb.Find(r4.Key)); Assert.Null(cdb.Find(Encoding.UTF8.GetBytes("NoSuchKey"))); cdb.Close(); File.Delete(filePath); }
public void CanFindAll() { int count = 10000; var array = GenerateRandomPairs(count).Distinct(new RecordKeyEquality()).ToArray(); string filePath = Path.GetTempFileName(); // create empty file CreateCdb(filePath, array); using (var cdb = Cdb.Open(filePath)) { foreach (var pair in array) { var data = cdb.Find(pair.Key); Assert.NotNull(data); Assert.Equal(pair.Data, data); } } }