public void IdsAreNotReusedAfterDeletion() { using (var client = new InnerDbClient("IdReuse")) { int first = client.PutObject(masamune); int second = client.PutObject(murasame); client.Delete(second); int third = client.PutObject(lavos); Assert.AreNotEqual(second, third); } }
public void DeleteDeletesObject() { using (var client = new InnerDbClient("Delete")) { int swordId = client.PutObject(masamune); Assert.IsNotNull(client.GetObject <Sword>(swordId)); Assert.IsNotNull(client.GetObject <Sword>(s => s.Name == "Masamune")); client.Delete(swordId); Assert.IsNull(client.GetObject <Sword>(swordId)); } }
public void JournalWritesJournalFilesAndRunsThemOnStartup() { string dbName = "JournalingAndRecovery"; string journalDir = string.Format(@"{0}\Journal", dbName); string dataDir = string.Format(@"{0}\Data", dbName); int id, secondId = 0; using (var client = new InnerDbClient(dbName)) { // Believe me when I say this is very heavily tested already from // the above tests running really fast. client.SetJournalIntervalMilliseconds(10000); id = client.PutObject(murasame); client.Delete(id); secondId = client.PutObject(masamune); // White-box of sorts. Okay for now. string[] files = System.IO.Directory.GetFiles(journalDir); Assert.AreEqual(3, files.Length); Assert.IsTrue(files.Any(f => f.Contains(id + "-Put.json"))); Assert.IsTrue(files.Any(f => f.Contains(id + "-Delete.json"))); Assert.IsTrue(files.Any(f => f.Contains(secondId + "-Put.json"))); } using (var client = new InnerDbClient(dbName)) { string[] data = new string[1]; // Wait for victory. bool isDone = false; var start = DateTime.Now; while (!isDone && ((DateTime.Now - start).TotalSeconds <= 5)) { var files = System.IO.Directory.GetFiles(journalDir); data = System.IO.Directory.GetFiles(dataDir); isDone = (files.Length == 0 && dataDir.Length == 1 && data.First().Contains("2.json")); } Assert.IsNull(client.GetObject <Sword>(id)); Assert.AreEqual(masamune, client.GetObject <Sword>(secondId)); } }