public void ExistingFileOwnership() { string text = "A"; string filePath = fileFixture.GetPath(TargetFile.PrimaryTextFile); fileFixture.PrepareTargetFile(TargetFile.PrimaryTextFile, text); // wcFile does not own textFile: textFile must still be open after wcFile is disposed. using (var textFile = new LiveTextFile(filePath)) using (var wcFile = WorkingCopyTextFile.FromLiveTextFile(textFile, null)) { Assert.False(wcFile.IsTextFileOwner); wcFile.Dispose(); Assert.NotNull(wcFile.OpenTextFile); Assert.False(textFile.IsDisposed); textFile.Dispose(); Assert.True(textFile.IsDisposed); } // wcFile owns textFile: textFile must be disposed together with wcFile. using (var wcFile = WorkingCopyTextFile.Open(filePath, null)) { var textFile = wcFile.OpenTextFile; Assert.NotNull(textFile); Assert.False(textFile.IsDisposed); wcFile.Dispose(); Assert.Same(textFile, wcFile.OpenTextFile); Assert.True(textFile.IsDisposed); } }
public void LiveTextFilePathUnchanged() { string filePath = fileFixture.GetPath(TargetFile.PrimaryTextFile); using (var textFile = new LiveTextFile(filePath)) { Assert.Equal(filePath, textFile.AbsoluteFilePath); } }
public void ExistingFileInitialState(string text) { string filePath = fileFixture.GetPath(TargetFile.PrimaryTextFile); fileFixture.PrepareTargetFile(TargetFile.PrimaryTextFile, text); using (var textFile = new LiveTextFile(filePath)) using (var wcFile = WorkingCopyTextFile.FromLiveTextFile(textFile, null)) { Assert.False(wcFile.IsTextFileOwner); Assert.Same(textFile, wcFile.OpenTextFile); Assert.Equal(filePath, wcFile.OpenTextFilePath); AssertLiveTextFileSuccessfulLoad(text, wcFile); } }
public void ReplaceFailsWhenNotOwner() { PrepareForReplaceTest("A", "B"); using (var textFile = new LiveTextFile(fileFixture.GetPath(TargetFile.PrimaryTextFile))) { string replacePath = fileFixture.GetPath(TargetFile.SecondaryTextFile); var wcFile = WorkingCopyTextFile.FromLiveTextFile(textFile, null); using (wcFile) { Assert.Throws <InvalidOperationException>(() => wcFile.Replace(replacePath)); Assert.Same(textFile, wcFile.OpenTextFile); } // Also assert that the ObjectDisposedException has precedence. Assert.Throws <ObjectDisposedException>(() => wcFile.Replace(replacePath)); } }
public void AutoSavedExistingFileInitialState(string autoSaveFileText) { string expectedLoadedText = "A"; string filePath = fileFixture.GetPath(TargetFile.PrimaryTextFile); fileFixture.PrepareTargetFile(TargetFile.PrimaryTextFile, expectedLoadedText); PrepareAutoSave(autoSaveFileText); using (var textFile = new LiveTextFile(filePath)) using (var wcFile = WorkingCopyTextFile.FromLiveTextFile(textFile, AutoSaveFiles())) { Assert.False(wcFile.IsTextFileOwner); Assert.Same(textFile, wcFile.OpenTextFile); Assert.Equal(filePath, wcFile.OpenTextFilePath); AssertLiveTextFileSuccessfulLoadWithAutoSave(expectedLoadedText, autoSaveFileText, wcFile); } }
public void InaccessibleFileInitialState(FileState fileState, Type exceptionType) { string filePath = fileFixture.GetPath(TargetFile.PrimaryTextFile); fileFixture.PrepareTargetFile(TargetFile.PrimaryTextFile, fileState); using (var textFile = new LiveTextFile(filePath)) using (var wcFile = WorkingCopyTextFile.FromLiveTextFile(textFile, null)) { Assert.False(wcFile.IsTextFileOwner); Assert.Same(textFile, wcFile.OpenTextFile); Assert.Equal(filePath, wcFile.OpenTextFilePath); Assert.Null(wcFile.AutoSaveFile); Assert.Equal(string.Empty, wcFile.LoadedText); Assert.IsType(exceptionType, wcFile.LoadException); Assert.Equal(string.Empty, wcFile.LocalCopyText); Assert.False(wcFile.ContainsChanges); } }