mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-07 11:46:30 +02:00
114 lines
2.7 KiB
C#
114 lines
2.7 KiB
C#
// Copyright (c) Microsoft Corporation
|
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
using System;
|
|
using System.IO;
|
|
using System.IO.Abstractions;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Microsoft.FancyZonesEditor.UITests.Utils
|
|
{
|
|
public class IOTestHelper
|
|
{
|
|
private readonly IFileSystem _fileSystem = new FileSystem();
|
|
|
|
private string _file;
|
|
|
|
private string _data = string.Empty;
|
|
|
|
public IOTestHelper(string file)
|
|
{
|
|
_file = file;
|
|
|
|
if (_fileSystem.File.Exists(_file))
|
|
{
|
|
_data = ReadFile(_file);
|
|
}
|
|
else
|
|
{
|
|
_fileSystem.Directory.CreateDirectory(Path.GetDirectoryName(file));
|
|
}
|
|
}
|
|
|
|
~IOTestHelper()
|
|
{
|
|
RestoreData();
|
|
}
|
|
|
|
public void RestoreData()
|
|
{
|
|
if (_data != string.Empty)
|
|
{
|
|
WriteData(_data);
|
|
}
|
|
else
|
|
{
|
|
DeleteFile();
|
|
}
|
|
}
|
|
|
|
public void WriteData(string data)
|
|
{
|
|
var attempts = 0;
|
|
while (attempts < 10)
|
|
{
|
|
try
|
|
{
|
|
_fileSystem.File.WriteAllText(_file, data);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
Task.Delay(10).Wait();
|
|
}
|
|
|
|
attempts++;
|
|
}
|
|
}
|
|
|
|
private string ReadFile(string fileName)
|
|
{
|
|
var attempts = 0;
|
|
while (attempts < 10)
|
|
{
|
|
try
|
|
{
|
|
using (Stream inputStream = _fileSystem.File.Open(fileName, FileMode.Open))
|
|
using (StreamReader reader = new StreamReader(inputStream))
|
|
{
|
|
string data = reader.ReadToEnd();
|
|
inputStream.Close();
|
|
return data;
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
Task.Delay(10).Wait();
|
|
}
|
|
|
|
attempts++;
|
|
}
|
|
|
|
return string.Empty;
|
|
}
|
|
|
|
public void DeleteFile()
|
|
{
|
|
var attempts = 0;
|
|
while (attempts < 10)
|
|
{
|
|
try
|
|
{
|
|
_fileSystem.File.Delete(_file);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
Task.Delay(10).Wait();
|
|
}
|
|
|
|
attempts++;
|
|
}
|
|
}
|
|
}
|
|
}
|