public async Task UnlinkSharedFile() { FilePath filePath = "test.txt"; var file = new CustomFileModel(); file.CreateNew(); file.SetText("Foo"); await file.LinkToFile(filePath); await registry.ShareModel(file); Assert.AreEqual(1, CustomFileModel.LiveBackends); var file2 = await registry.GetSharedModel <CustomFileModel> (filePath); await file2.Load(); Assert.AreEqual(1, CustomFileModel.LiveBackends); Assert.AreEqual("Foo", file2.GetText()); await file.ConvertToUnsaved(); Assert.AreEqual(2, CustomFileModel.LiveBackends); Assert.IsNull(file.Id); file.SetText("Bar"); Assert.AreEqual("Foo", file2.GetText()); file.Dispose(); Assert.AreEqual(1, CustomFileModel.LiveBackends); file2.Dispose(); Assert.AreEqual(0, CustomFileModel.LiveBackends); }
public async Task UnlinkSharedFileKeepSharedData() { // Two different models for same file. One is loaded and modified. // The other is not loaded. Unlinking the modified should assign // data to unloaded model. FilePath filePath = "test.txt"; var file = new CustomFileModel(); file.CreateNew(); file.SetText("Foo"); await file.LinkToFile(filePath); await registry.ShareModel(file); Assert.AreEqual(1, CustomFileModel.LiveBackends); var file2 = await registry.GetSharedModel <TextFileModel> (filePath); Assert.IsFalse(file2.IsLoaded); await file.ConvertToUnsaved(); // Unsaved file content should have been migrated to second file await file2.Load(); Assert.AreEqual("Foo", file2.GetText()); }
public async Task RegisterNew() { FilePath filePath = "test.txt"; CustomFileModel.LiveBackends = 0; var file = new CustomFileModel(); file.CreateNew(); file.SetText("Foo"); await file.LinkToFile(filePath); Assert.AreEqual(1, CustomFileModel.LiveBackends); await registry.ShareModel(file); Assert.AreEqual(1, CustomFileModel.LiveBackends); var otherFile = await registry.GetSharedModel <CustomFileModel> (filePath); Assert.AreNotSame(file, otherFile); Assert.IsFalse(otherFile.IsLoaded); Assert.AreEqual(1, CustomFileModel.LiveBackends); await otherFile.Load(); Assert.AreEqual("Foo", otherFile.GetText()); Assert.AreEqual(1, CustomFileModel.LiveBackends); // Backend is shared file.SetText("Bar"); Assert.AreEqual("Bar", otherFile.GetText()); otherFile.SetText("Bar2"); Assert.AreEqual("Bar2", file.GetText()); file.Dispose(); Assert.AreEqual(1, CustomFileModel.LiveBackends); otherFile.Dispose(); Assert.AreEqual(0, CustomFileModel.LiveBackends); }