Пример #1
0
        public static void TryRestoreWhenHasSoftDeleteAndBackup()
        {
            var dummy      = new DummySerializable(1);
            var file       = CreateFile();
            var backup     = CreateBackupFile();
            var softDelete = file.SoftDeleteFile();

            backup.Save(dummy);
            dummy.Value++;
            softDelete.Save(dummy);

            AssertFile.Exists(false, file);
            AssertFile.Exists(true, softDelete);
            AssertFile.Exists(true, backup);

            var backuper = Backuper.Create(new BackupSettings(Directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, 2, 3));

            Assert.IsTrue(backuper.CanRestore(file));
            Assert.IsTrue(backuper.TryRestore(file));

            Assert.AreEqual(dummy, file.Read <DummySerializable>());
            AssertFile.Exists(true, file);
            AssertFile.Exists(false, softDelete);
            AssertFile.Exists(true, backup);
        }
Пример #2
0
        public void SaveTwice(TestCase testCase)
        {
            var dummy      = new DummySerializable(1);
            var repository = this.CreateRepository();
            var file       = testCase.File <DummySerializable>(repository);
            var backupFile = testCase.BackupFile <DummySerializable>(repository);

            AssertFile.Exists(false, file);
            testCase.Save(repository, file, dummy);
            AssertFile.Exists(true, file);
            AssertFile.Exists(false, file.SoftDeleteFile());
            AssertFile.Exists(false, file.TempFile(repository.Settings));
            if (repository.Settings.BackupSettings != null)
            {
                AssertFile.Exists(false, backupFile !);
            }

            var read = this.Read <DummySerializable>(file);

            Assert.AreEqual(dummy.Value, read.Value);
            Assert.AreNotSame(dummy, read);

            testCase.Save(repository, file, dummy);
            AssertFile.Exists(true, file);
            AssertFile.Exists(false, file.SoftDeleteFile());
            AssertFile.Exists(false, file.TempFile(repository.Settings));
            if (repository.Settings.BackupSettings != null)
            {
                AssertFile.Exists(true, backupFile !);
            }

            read = this.Read <DummySerializable>(file);
            Assert.AreEqual(dummy.Value, read.Value);
            Assert.AreNotSame(dummy, read);
        }
            public void WhenTypeIsSerializable_ThenReturnClone()
            {
                var sut = new DummySerializable();

                var result = sut.CloneSerializable();

                Assert.That(result, Is.Not.Null);
                Assert.That(result, Is.Not.SameAs(sut));
            }
Пример #4
0
        public void ReadOrCreateWhenFileDoesNotExists(TestCase testCase)
        {
            var dummy      = new DummySerializable(1);
            var repository = this.CreateRepository();
            var file       = testCase.File <DummySerializable>(repository);
            var read       = testCase.ReadOrCreate(repository, file, () => dummy);

            Assert.AreSame(dummy, read);
        }
        public void DeepClone()
        {
            var dummy = new DummySerializable {
                Value = 1
            };
            var clone = BinaryHelper.Clone(dummy);

            Assert.AreEqual(dummy.Value, clone.Value);
            Assert.AreNotSame(dummy, clone);
        }
Пример #6
0
        public void Clone()
        {
            var dummy = new DummySerializable {
                Value = 1
            };
            var clone = XmlFile.Clone(dummy);

            Assert.AreNotSame(dummy, clone);
            Assert.AreEqual(dummy.Value, clone.Value);
        }
Пример #7
0
        public void CloneWithSettings()
        {
            var dummy = new DummySerializable {
                Value = 1
            };
            var clone = JsonFile.Clone(dummy, JsonSettings);

            Assert.AreNotSame(dummy, clone);
            Assert.AreEqual(dummy.Value, clone.Value);
        }
Пример #8
0
        public void SaveThenSaveNull(TestCase testCase)
        {
            var dummy      = new DummySerializable(1);
            var repository = this.CreateRepository();
            var file       = testCase.File <DummySerializable>(repository);

            testCase.Save(repository, file, dummy);
            if (repository.Settings is IDataRepositorySettings {
                SaveNullDeletesFile : true
            })
Пример #9
0
        public void ReadOrCreateWhenNoMigrationWhenFileExists(TestCase testCase)
        {
            var dummy      = new DummySerializable(1);
            var repository = this.CreateRepository();
            var file       = testCase.File <DummySerializable>(repository);

            this.Save(file, dummy);
            var read = testCase.ReadOrCreate <DummySerializable>(repository, file, () => throw new AssertionException("Should not get here."), new NoMigration());

            Assert.AreEqual(1, read.Value);
        }
Пример #10
0
        public void ReadWhenTrivialMigration(TestCase testCase)
        {
            var dummy      = new DummySerializable(1);
            var repository = this.CreateRepository();
            var file       = testCase.File <DummySerializable>(repository);

            this.Save(file, dummy);
            var read = testCase.Read <DummySerializable>(repository, file, new JsonMigration(x => Migrate(x)));

            Assert.AreEqual(2, read.Value);
            Assert.AreEqual(2, testCase.Read <DummySerializable>(repository, file).Value);
Пример #11
0
        public void Read(TestCase testCase)
        {
            var repository = this.CreateRepository();
            var file       = testCase.File <DummySerializable>(repository);
            var dummy      = new DummySerializable(1);

            this.Save(file, dummy);
            var read = testCase.Read <DummySerializable>(repository, file);

            Assert.AreEqual(dummy.Value, read.Value);
            Assert.AreNotSame(dummy, read);
        }
Пример #12
0
        public void SaveThenReadName()
        {
            var dummy = new DummySerializable {
                Value = 1
            };
            var file = this.directory.CreateFileInfoInDirectory("dummy.json");

            JsonFile.Save(file.FullName, dummy);
            var read = JsonFile.Read <DummySerializable>(file.FullName);

            Assert.AreNotSame(dummy, read);
            Assert.AreEqual(dummy.Value, read.Value);
        }
Пример #13
0
        public async Task SaveAsyncThenReadWithSettingsName()
        {
            var dummy = new DummySerializable {
                Value = 1
            };
            var file = this.directory.CreateFileInfoInDirectory("dummy.json");
            await JsonFile.SaveAsync(file.FullName, dummy, JsonSettings).ConfigureAwait(false);

            var read = await JsonFile.ReadAsync <DummySerializable>(file.FullName, JsonSettings).ConfigureAwait(false);

            Assert.AreNotSame(dummy, read);
            Assert.AreEqual(dummy.Value, read.Value);
        }
Пример #14
0
        public void SetUp()
        {
            if (_directory.Exists)
            {
                DeleteRepositoryDirectory(_directory.FullName);
            }
            _directory.Create();
            var settings    = new JsonRepositorySettings(_directory, null);
            var gitBackuper = new GitBackuper(settings.DirectoryPath);

            _repository = new JsonRepository(settings, gitBackuper);
            _dummy      = new DummySerializable(1);
        }
Пример #15
0
        public void ReadWhenIdentityMigration(TestCase testCase)
        {
            var dummy      = new DummySerializable(1);
            var repository = this.CreateRepository();
            var file       = testCase.File <DummySerializable>(repository);

            this.Save(file, dummy);
            var migration = new IdentityMigration();
            var read      = testCase.Read <DummySerializable>(repository, file, migration);

            Assert.AreEqual(1, read.Value);
            Assert.AreEqual(true, migration.WasCalled);
        }
Пример #16
0
        public async Task SaveAsyncThenRead()
        {
            var dummy = new DummySerializable {
                Value = 1
            };
            var file = this.directory.CreateFileInfoInDirectory("dummy.runtimexml");
            await XmlFile.SaveAsync(file, dummy).ConfigureAwait(false);

            var read = await XmlFile.ReadAsync <DummySerializable>(file).ConfigureAwait(false);

            Assert.AreNotSame(dummy, read);
            Assert.AreEqual(dummy.Value, read.Value);
        }
Пример #17
0
        public void SaveThenRead()
        {
            var dummy = new DummySerializable {
                Value = 1
            };
            var file = this.directory.CreateFileInfoInDirectory("dummy.runtimexml");

            XmlFile.Save(file, dummy);
            var read = XmlFile.Read <DummySerializable>(file);

            Assert.AreNotSame(dummy, read);
            Assert.AreEqual(dummy.Value, read.Value);
        }
Пример #18
0
        public void SaveTwiceWithSettings()
        {
            var dummy = new DummySerializable {
                Value = 1
            };
            var file = this.directory.CreateFileInfoInDirectory("dummy.json");

            JsonFile.Save(file, dummy, JsonSettings);
            JsonFile.Save(file, dummy, JsonSettings);
            var read = JsonFile.Read <DummySerializable>(file, JsonSettings);

            Assert.AreNotSame(dummy, read);
            Assert.AreEqual(dummy.Value, read.Value);
        }
Пример #19
0
        public void SaveAndCheckJson()
        {
            var fileInfo = this.Directory.CreateFileInfoInDirectory(nameof(DummySerializable) + ".cfg");
            var value    = new DummySerializable
            {
                Value = 1
            };

            this.Repository.Save(fileInfo, value);
            var json = System.IO.File.ReadAllText(fileInfo.FullName);

            Assert.AreEqual("{\r\n  \"Value\": 1\r\n}", json);
            System.IO.File.Delete(fileInfo.FullName);
        }
Пример #20
0
        public void FileRoundtrip()
        {
            var dummy = new DummySerializable {
                Value = 1
            };

            BinaryHelper.Save(dummy, _file);
            AssertFile.Exists(true, _file);

            var read = BinaryHelper.Read <DummySerializable>(_file);

            Assert.AreEqual(dummy.Value, read.Value);
            Assert.AreNotSame(dummy, read);
        }
Пример #21
0
        public async Task FileAsyncRoundtrip()
        {
            var dummy = new DummySerializable {
                Value = 1
            };
            await BinaryHelper.SaveAsync(dummy, _file).ConfigureAwait(false);

            AssertFile.Exists(true, _file);

            var read = await BinaryHelper.ReadAsync <DummySerializable>(_file).ConfigureAwait(false);

            Assert.AreEqual(dummy.Value, read.Value);
            Assert.AreNotSame(dummy, read);
        }
Пример #22
0
        public void ReadOrCreateWhenFileDoesNotExistsManagesSingleton(TestCase testCase)
        {
            var dummy      = new DummySerializable(1);
            var repository = this.CreateRepository();
            var file       = testCase.File <DummySerializable>(repository);
            var read1      = testCase.ReadOrCreate(repository, file, () => dummy);
            var read2      = testCase.ReadOrCreate(repository, file, () => dummy);

            if (repository is ISingletonRepository)
            {
                Assert.AreSame(read1, read2);
            }
            else
            {
                Assert.AreNotSame(read1, read2);
            }
        }
Пример #23
0
        public void FileRoundtrip()
        {
            if (_file.Exists)
            {
                _file.Delete();
            }
            var dummy = new DummySerializable {
                Value = 1
            };

            XmlHelper.Save(dummy, _file);
            AssertFile.Exists(true, _file);

            var read = XmlHelper.Read <DummySerializable>(_file);

            Assert.AreEqual(dummy.Value, read.Value);
            Assert.AreNotSame(dummy, read);
        }
Пример #24
0
        public static void TryRestoreWhenHasSoftDelete()
        {
            var dummy      = new DummySerializable(1);
            var file       = CreateFile();
            var backup     = CreateBackupFile();
            var softDelete = file.SoftDeleteFile();

            softDelete.Save(dummy);
            AssertFile.Exists(false, file);
            AssertFile.Exists(true, softDelete);

            Assert.IsTrue(NullBackuper.Default.CanRestore(file));
            Assert.IsTrue(NullBackuper.Default.TryRestore(file));

            Assert.AreEqual(dummy, file.Read <DummySerializable>());
            AssertFile.Exists(true, file);
            AssertFile.Exists(false, softDelete);
            AssertFile.Exists(false, backup);
        }
Пример #25
0
        public void ReadManagesSingleton(TestCase testCase)
        {
            var dummy      = new DummySerializable(1);
            var repository = this.CreateRepository();
            var file       = testCase.File <DummySerializable>(repository);

            this.Save(file, dummy);
            var read1 = testCase.Read <DummySerializable>(repository, file);
            var read2 = testCase.Read <DummySerializable>(repository, file);

            if (repository is ISingletonRepository)
            {
                Assert.AreSame(read1, read2);
            }
            else
            {
                Assert.AreNotSame(read1, read2);
            }
        }
Пример #26
0
        public void ReadOrCreateWhenFileExistsManagesSingleton(TestCase testCase)
        {
            var dummy      = new DummySerializable(1);
            var repository = this.CreateRepository();
            var file       = testCase.File <DummySerializable>(repository);

            this.Save(file, dummy);
            var read1 = testCase.ReadOrCreate <DummySerializable>(repository, file, () => throw new AssertionException("Should not get here."));
            var read2 = testCase.ReadOrCreate <DummySerializable>(repository, file, () => throw new AssertionException("Should not get here."));

            if (repository is ISingletonRepository)
            {
                Assert.AreSame(read1, read2);
            }
            else
            {
                Assert.AreNotSame(read1, read2);
            }
        }
Пример #27
0
        public void SaveThenRead(TestCase testCase)
        {
            var dummy      = new DummySerializable(1);
            var repository = this.CreateRepository();
            var file       = testCase.File <DummySerializable>(repository);

            testCase.Save(repository, file, dummy);
            var read = testCase.Read <DummySerializable>(repository, file);

            if (repository is ISingletonRepository)
            {
                Assert.AreSame(dummy, read);
            }
            else
            {
                Assert.AreEqual(dummy.Value, read.Value);
                Assert.AreNotSame(dummy, read);
            }
        }
Пример #28
0
        public void SetUp()
        {
            if (this.directory.Exists)
            {
                DeleteRepositoryDirectory(this.directory.FullName);
            }

            this.directory.Create();
            var settings = new RepositorySettings(
                directory: this.directory.FullName,
                jsonSerializerSettings: RepositorySettings.CreateDefaultJsonSettings(),
                isTrackingDirty: false,
                backupSettings: null);

            var gitBackuper = new GitBackuper(settings.Directory);

            this.repository = new SingletonRepository(settings, gitBackuper);
            this.dummy      = new DummySerializable(1);
        }
Пример #29
0
        public static void TryRestoreWhenHasBackupAndOriginal()
        {
            var dummy      = new DummySerializable(-1);
            var file       = CreateFile();
            var backup     = CreateBackupFile();
            var softDelete = file.SoftDeleteFile();

            file.WriteAllText("File");
            backup.Save(dummy);

            AssertFile.Exists(true, file);
            AssertFile.Exists(false, softDelete);
            AssertFile.Exists(true, backup);

            var backuper = Backuper.Create(new BackupSettings(Directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, 2, 3));

            var exception = Assert.Throws <InvalidOperationException>(() => backuper.TryRestore(file));

            StringAssert.IsMatch(@"Expected file .*BackuperTests\\TryRestoreWhenHasBackupAndOriginal.cfg to not exist.", exception !.Message);

            AssertFile.Exists(true, file);
            AssertFile.Exists(false, softDelete);
            AssertFile.Exists(true, backup);
        }
Пример #30
0
 protected RepositoryTests()
 {
     Directory = new DirectoryInfo(@"C:\Temp\Gu.Settings\" + GetType().Name);
     //Directories.Default = Directory;
     _dummy = new DummySerializable(1);
 }