public void TestWipe()
        {
            var processor = new DatabaseProcessor <TestEntity>(new DummyDatabase());

            processor.LoadIndex();

            Assert.AreEqual(5, processor.Index.GetAll().Count);
            processor.Wipe();
            Assert.AreEqual(0, processor.Index.GetAll().Count);
        }
        public void TestLoadRaw()
        {
            var processor = new DatabaseProcessor <TestEntity>(new DummyDatabase());

            processor.LoadIndex();

            var json = processor.LoadRaw("00000000-0000-0000-0000-000000000001");

            Assert.AreEqual("00000000-0000-0000-0000-000000000001", json["Id"].ToString());
            Assert.AreEqual(1, json["Age"].Value <int>());
            Assert.AreEqual("FN1", json["Name"].ToString());
            Assert.AreEqual("LN1", json["LastName"].ToString());
        }
        public void TestLoadIndex()
        {
            var processor = new DatabaseProcessor <TestEntity>(new DummyDatabase());

            processor.LoadIndex();

            foreach (var index in processor.Index.Raw)
            {
                Debug.LogWarning(index.ToString());
            }

            Assert.IsNotNull(processor.Index);
            Assert.AreEqual(5, processor.Index.Raw.Count());
        }
        public void TestLoadData()
        {
            Debug.LogWarning(TestConstants.TestAssetPath);
            var processor = new DatabaseProcessor <TestEntity>(new DummyDatabase());

            processor.LoadIndex();

            var entity = processor.LoadData("00000000-0000-0000-0000-000000000001");

            Assert.AreEqual("00000000-0000-0000-0000-000000000001", entity.Id.ToString());
            Assert.AreEqual(1, entity.Age);
            Assert.AreEqual("FN1", entity.FirstName);
            Assert.AreEqual("LN1", entity.LastName);
        }
        public void TestSaveIndex()
        {
            var processor = new DatabaseProcessor <TestEntity>(new DummyDatabase());

            processor.LoadIndex();

            var indexPath = Path.Combine(TestConstants.TestAssetPath, $"{TestDbFolder}/index.dbi");

            File.Delete(indexPath);

            processor.SaveIndex();
            Assert.IsTrue(File.Exists(indexPath));
            Debug.Log("Index content: " + File.ReadAllText(indexPath));

            processor.LoadIndex();
            int index = 0;

            foreach (var json in processor.Index.Raw)
            {
                Assert.AreEqual($"00000000-0000-0000-0000-00000000000{index}", json["Id"].ToString());
                index++;
            }
            Assert.AreEqual(5, index);
        }
        public void TestRemoveData()
        {
            var processor = new DatabaseProcessor <TestEntity>(new DummyDatabase());

            processor.LoadIndex();

            // Load all data first.
            List <TestEntity> data = new List <TestEntity>();

            for (int i = 0; i < 5; i++)
            {
                data.Add(processor.LoadData($"00000000-0000-0000-0000-00000000000{i}"));

                var d = data[i];
                Assert.AreEqual($"00000000-0000-0000-0000-00000000000{i}", d.Id.ToString());
                Assert.AreEqual(i, d.Age);
                Assert.AreEqual($"FN{i}", d.FirstName);
                Assert.AreEqual($"LN{i}", d.LastName);
            }

            // Get deleting targets
            List <TestEntity> targets = new List <TestEntity>()
            {
                data[3],
                data[4]
            };

            processor.RemoveData(targets);

            var index = processor.Index.GetAll();

            Assert.AreEqual(3, index.Count);
            Assert.AreEqual(processor.GetDataFiles().Length, index.Count);

            for (int i = 0; i < 3; i++)
            {
                var d = processor.LoadData($"00000000-0000-0000-0000-00000000000{i}");
                Assert.AreEqual($"00000000-0000-0000-0000-00000000000{i}", d.Id.ToString());
                Assert.AreEqual(i, d.Age);
                Assert.AreEqual($"FN{i}", d.FirstName);
                Assert.AreEqual($"LN{i}", d.LastName);
                Assert.AreEqual(d.Id.ToString(), index[i]["Id"].ToString());
            }
        }
        public void TestConvertToData()
        {
            var processor = new DatabaseProcessor <TestEntity>(new DummyDatabase());

            processor.LoadIndex();

            JObject json   = JsonConvert.DeserializeObject <JObject>(@"
                {
                    'Id' : '00000000-0000-0000-0000-000000000000',
                    'Age' : 0,
                    'Name' : 'FN0',
                    'LastName' : 'LN0'
                }
            ");
            var     entity = processor.ConvertToData(json);

            Assert.AreEqual("00000000-0000-0000-0000-000000000000", entity.Id.ToString());
            Assert.AreEqual(0, entity.Age);
            Assert.AreEqual("FN0", entity.FirstName);
            Assert.AreEqual("LN0", entity.LastName);
        }
        public void TestWriteData()
        {
            var processor = new DatabaseProcessor <TestEntity>(new DummyDatabase());

            processor.LoadIndex();

            Assert.AreEqual(5, processor.Index.Raw.Count());

            List <JObject> data = new List <JObject>()
            {
                JsonConvert.DeserializeObject <JObject>(@"
                    {
                        'Id' : '00000000-0000-0000-0000-000000000005',
                        'Age' : 5,
                        'Name' : 'FN5',
                        'LastName' : 'LN5'
                    }
                ")
            };
            List <JObject> index = new List <JObject>()
            {
                JsonConvert.DeserializeObject <JObject>(@"
                    {'Id':'00000000-0000-0000-0000-000000000005','Age':5,'Name':'FN5'}
                ")
            };

            processor.WriteData(data, index);

            Assert.AreEqual(6, processor.Index.Raw.Count());
            Assert.AreEqual(6, processor.GetDataFiles().Length);
            for (int i = 0; i < 6; i++)
            {
                var d = processor.LoadData($"00000000-0000-0000-0000-00000000000{i}");
                Assert.AreEqual($"00000000-0000-0000-0000-00000000000{i}", d.Id.ToString());
                Assert.AreEqual(i, d.Age);
                Assert.AreEqual($"FN{i}", d.FirstName);
                Assert.AreEqual($"LN{i}", d.LastName);
            }
        }