Beispiel #1
0
        public void PutObjectWithIdUpdatesObjectAndDoesntCrashIndex()
        {
            string dbName   = "PutOrEditWithIndex";
            var    expected = new Sword()
            {
                Name = "Excalibur", Cost = 1
            };

            using (var client = new InnerDbClient(dbName))
            {
                int id = client.PutObject(masamune);
                Assert.IsNotNull(client.GetObject <Sword>(id));
                client.AddIndex <Sword>("Name");

                client.PutObject(expected, id);
                var actual = client.GetObject <Sword>(id);
                Assert.IsNotNull(actual);
                Assert.AreEqual(expected, actual);
            }

            using (var client = new InnerDbClient(dbName))
            {
                var actual = client.GetObject <Sword>(s => s.Name == "Excalibur");
                Assert.AreEqual(expected, actual);
            }
        }
Beispiel #2
0
 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));
     }
 }
Beispiel #3
0
        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));
            }
        }
Beispiel #4
0
 public void GetByPredicateReturnsPutObject()
 {
     using (var client = new InnerDbClient("GetByPredicate"))
     {
         client.PutObject(masamune);
         client.PutObject(murasame);
         var actual = client.GetObject <Sword>(s => s.Name == "Masamune");
         Assert.AreEqual(masamune, actual);
     }
 }
Beispiel #5
0
 public void GetByIdReturnsPutObject()
 {
     using (var client = new InnerDbClient("GetAndPut"))
     {
         var id = client.PutObject(masamune);
         Assert.Greater(id, 0);
         var actual = client.GetObject <Sword>(id);
         Assert.AreEqual(masamune, actual);
     }
 }
Beispiel #6
0
        public void DataPersistsAcrossClients()
        {
            string dbName = "FileStorePersists";
            int    swordId, creatureId = 0;

            using (var client = new InnerDbClient(dbName))
            {
                swordId    = client.PutObject(murasame);
                creatureId = client.PutObject(lavos);
            }

            using (var client = new InnerDbClient(dbName))
            {
                var actualSword = client.GetObject <Sword>(swordId);
                Assert.AreEqual(murasame, actualSword);
                var actualCreature = client.GetObject <Creature>(creatureId);
                Assert.AreEqual(lavos, actualCreature);
            }
        }
Beispiel #7
0
 public void EnumsDeserializeCorrectly()
 {
     using (var client = new InnerDbClient("EnumSerialization"))
     {
         var expected = new Creature("Dove", Alignment.Good);
         int id       = client.PutObject(expected);
         var actual   = client.GetObject <Creature>(c => c.Name == "Dove");
         Assert.AreEqual(Alignment.Good, actual.Disposition);
     }
 }