Ejemplo n.º 1
0
        public void DeRegistersChanges()
        {
            var package = new DynamicPackageData(new Version(1, 0), this);

            package.MonitorDeregisterOverride(package.Data);
            MonitorChangesTests(package, () => Assert.IsFalse(package.IsContentModified));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        public void IgnoresChanges()
        {
            var package = new DynamicPackageData(new Version(1, 0), this);

            package.MonitorIgnore(() =>
            {
                package.Data.Children.Add(new PackageDataContractChild());
            });

            Assert.IsFalse(package.IsContentModified);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 9
0
        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);
                }
        }
Ejemplo n.º 10
0
        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();
        }
Ejemplo n.º 11
0
        public void RegistersChanges()
        {
            var package = new DynamicPackageData(new Version(1, 0), this);

            MonitorChangesTests(package, () => Assert.IsTrue(package.IsContentModified));
        }