public void DeRegistersChanges() { var package = new DynamicPackageData(new Version(1, 0), this); package.MonitorDeregisterOverride(package.Data); MonitorChangesTests(package, () => Assert.IsFalse(package.IsContentModified)); }
public async Task FailsOnNewerVersionOfPackage() { await CreateAndClosePackage((writer, package) => Task.CompletedTask, new Version(2, 0)); var file = new DynamicPackageData(new Version(1, 0), this); Assert.AreEqual(PackageOpenResultType.IncompatibleVersion, (await file.Open(PackageFilename)).Result); }
public async Task SetsIsDataModifiedToFalse() { var package = new DynamicPackageData(new Version(1, 0), this); package.Data.Children.Add(new PackageDataContractChild()); await package.Save(PackageFilename); Assert.IsFalse(package.IsContentModified); }
public void IgnoresChanges() { var package = new DynamicPackageData(new Version(1, 0), this); package.MonitorIgnore(() => { package.Data.Children.Add(new PackageDataContractChild()); }); Assert.IsFalse(package.IsContentModified); }
public async Task ChangeSavePathWritesContentToPackage() { var package = new DynamicPackageData(new Version(1, 0), this); package.Data.Children.Add(new PackageDataContractChild()); await package.Save(PackageFilename); var secondPath = Path.Combine("saves/", Guid.NewGuid() + ".file"); await package.Save(secondPath); Assert.AreNotEqual(new FileInfo(secondPath).Length, 0, "File length was zero."); }
public void IsDataModifiedSinceAutoSaveIsModified() { var tempSave = PackageFilename + ".temp"; var file = new DynamicPackageData(new Version(1, 0), this) { TempPackagePathRequest = () => tempSave }; Assert.IsFalse(file.IsDataModifiedSinceAutoSave); file.ContentModifiedOverride(); Assert.IsTrue(file.IsDataModifiedSinceAutoSave); }
public async Task ChangesSavePath() { var package = new DynamicPackageData(new Version(1, 0), this); package.Data.Children.Add(new PackageDataContractChild()); await package.Save(PackageFilename); await Utilities.AssertFileExistWithin(PackageFilename); var secondPath = Path.Combine("saves/", Guid.NewGuid() + ".file"); await package.Save(secondPath); await Utilities.AssertFileExistWithin(secondPath); }
public async Task SetsIsDataModifiedSinceAutoSaveToFalse() { var tempSave = PackageFilename + ".temp"; var file = new DynamicPackageData(new Version(1, 0), this) { TempPackagePathRequest = () => tempSave }; file.Data.Children.Add(new PackageDataContractChild()); await file.ConfigureAutoSave(0, -1, true); await Utilities.AssertFileExistWithin(tempSave); Assert.IsFalse(file.IsDataModifiedSinceAutoSave); }
public async Task ReadOnly_OpensNonExclusiveLock() { await CreateAndClosePackage((writer, package) => writer.Write(ContentFileName, SampleText)); await using (File.OpenRead(PackageFilename)) using (var file = new DynamicPackageData(new Version(1, 0), this)) { var result = await file.Open(PackageFilename, true); Assert.IsTrue(result.IsSuccessful); } await using (new FileStream(PackageFilename, FileMode.Open, FileAccess.Read, FileShare.Read)) using (var file = new DynamicPackageData(new Version(1, 0), this)) { var result = await file.Open(PackageFilename, true); Assert.IsTrue(result.IsSuccessful); } await using (new FileStream(PackageFilename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) using (var file = new DynamicPackageData(new Version(1, 0), this)) { var result = await file.Open(PackageFilename, true); Assert.IsTrue(result.IsSuccessful); } await using (new FileStream(PackageFilename, FileMode.Open, FileAccess.ReadWrite, FileShare.Read)) using (var file = new DynamicPackageData(new Version(1, 0), this)) { var result = await file.Open(PackageFilename, true); Assert.IsTrue(result.IsSuccessful); } await using (new FileStream(PackageFilename, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) using (var file = new DynamicPackageData(new Version(1, 0), this)) { var result = await file.Open(PackageFilename, true); Assert.IsTrue(result.IsSuccessful); } }
private void MonitorChangesTests(DynamicPackageData package, Action test) { Assert.IsFalse(package.IsContentModified); package.Data.Children.Add(new PackageDataContractChild()); test.Invoke(); // Child property package.IsContentModified = false; package.Data.Children[0].Integer = 50; test.Invoke(); // Child property package.IsContentModified = false; package.Data.Children[0].String = "new string"; test.Invoke(); // New child of child package.IsContentModified = false; package.Data.Children[0].Children.Add(new PackageDataContractChild()); test.Invoke(); // Child of child property package.IsContentModified = false; package.Data.Children[0].Children[0].Integer = 51; test.Invoke(); // Moving child of child package.Data.Children[0].Children.Add(new PackageDataContractChild()); package.IsContentModified = false; package.Data.Children[0].Children.Move(1, 0); test.Invoke(); // Remove child of child package.IsContentModified = false; package.Data.Children[0].Children.RemoveAt(1); test.Invoke(); }
public void RegistersChanges() { var package = new DynamicPackageData(new Version(1, 0), this); MonitorChangesTests(package, () => Assert.IsTrue(package.IsContentModified)); }