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

            var files = processor.GetDataFiles();

            for (int i = 0; i < files.Length; i++)
            {
                Assert.AreEqual(
                    Path.Combine(TestConstants.TestAssetPath, $"{TestDbFolder}/data/00000000-0000-0000-0000-00000000000{i}.data"),
                    files[i].FullName
                    );
            }
        }
        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 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);
            }
        }