//
// Copyright (c) PlaceholderCompany. All rights reserved.
//
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading;
using Xunit;
using IOPath = System.IO.Path;
namespace ImageResizer
{
public class TestDirectory : IDisposable
{
readonly string _path;
public TestDirectory()
{
_path = IOPath.Combine(
AppDomain.CurrentDomain.BaseDirectory,
IOPath.GetRandomFileName());
Directory.CreateDirectory(_path);
}
IEnumerable Files
=> Directory.EnumerateFiles(_path);
public IEnumerable FileNames
=> Files.Select(IOPath.GetFileName);
public string File()
=> Assert.Single(Files);
public void Dispose()
{
var stopwatch = Stopwatch.StartNew();
while (stopwatch.ElapsedMilliseconds < 30000)
{
try
{
Directory.Delete(_path, recursive: true);
break;
}
catch
{
Thread.Sleep(150);
}
}
}
public static implicit operator string(TestDirectory directory)
=> directory._path;
}
}