public TransformerDatabaseTests() { _memoryDatabase = new MemoryDatabase <string, int>(); _keyTransformer = new MockTransformer(); _valueTransformer = new MockTransformer(); _transformDatabase = new TransformDatabase <string, int, int, string> ( db: _memoryDatabase, keyTransformer: _keyTransformer.Reverse(), valueTransformer: _valueTransformer ); _values = new[] { KeyValuePair.Create(1, "a"), KeyValuePair.Create(2, "b"), KeyValuePair.Create(3, "c"), }; _expectValues = _values .Select ( x => KeyValuePair.Create ( _keyTransformer.TransformPre(x.Key), _valueTransformer.TransformPost(x.Value) ) ) .ToArray(); }
public void Enumerate() { var db = new MemoryDatabase <string, int>(); var kt = new MockTransformer(); var vt = new MockTransformer(); var tdb = new TransformDatabase <string, int, int, string> ( db: db, keyTransformer: new ReverseTransformer <string, int>(kt), valueTransformer: vt ); tdb.InsertRange(new KeyValuePair <int, string>[] { new KeyValuePair <int, string>(1, "a"), new KeyValuePair <int, string>(2, "b"), new KeyValuePair <int, string>(3, "c"), }); tdb.EnumerateAggressively(3) .Should() .BeEquivalentTo(new KeyValuePair <int, string>[] { new KeyValuePair <int, string>(1, "a"), new KeyValuePair <int, string>(2, "b"), new KeyValuePair <int, string>(3, "c"), }); }
public void WorksIGuess() { var st = new StringTransformer(); // using (var fs = File.Open("copy.db", FileMode.OpenOrCreate)) using (var ms = new MemoryStream()) { using (var lowlevelDBIODevice = new StringDB5_0_0LowlevelDatabaseIODevice(ms, true)) using (var dbIODevice = new DatabaseIODevice(lowlevelDBIODevice)) using (var iodb = new IODatabase(dbIODevice)) using (var db = new TransformDatabase <byte[], byte[], string, string>(iodb, st, st)) { db.Insert("test", "value"); db.InsertRange(new KeyValuePair <string, string>[] { new KeyValuePair <string, string>("a,", "c,"), new KeyValuePair <string, string>("b,", "d,"), }); File.WriteAllBytes("sdb.db", ms.ToArray()); db.EnumerateAggressively(2) .Should() .BeEquivalentTo ( new KeyValuePair <string, string>[] { new KeyValuePair <string, string>("test", "value"), new KeyValuePair <string, string>("a,", "c,"), new KeyValuePair <string, string>("b,", "d,"), } ); } ms.Seek(0, SeekOrigin.Begin); // ms.CopyTo(fs); } }