2013-08-26 19:35:53 +00:00
|
|
|
|
using System;
|
|
|
|
|
using System.IO;
|
2011-11-12 19:53:36 +00:00
|
|
|
|
using FluentAssertions;
|
|
|
|
|
using NUnit.Framework;
|
2014-01-06 06:20:08 +00:00
|
|
|
|
using NzbDrone.Common.Disk;
|
2013-07-26 05:41:38 +00:00
|
|
|
|
using NzbDrone.Test.Common;
|
2011-11-12 19:53:36 +00:00
|
|
|
|
|
2014-12-16 07:28:55 +00:00
|
|
|
|
namespace NzbDrone.Common.Test.DiskTests
|
2011-11-12 19:53:36 +00:00
|
|
|
|
{
|
2014-01-06 06:20:08 +00:00
|
|
|
|
public abstract class FreeSpaceFixtureBase<TSubject> : TestBase<TSubject> where TSubject : class, IDiskProvider
|
2011-11-12 19:53:36 +00:00
|
|
|
|
{
|
2014-01-06 06:20:08 +00:00
|
|
|
|
[Test]
|
|
|
|
|
public void should_get_free_space_for_folder()
|
|
|
|
|
{
|
|
|
|
|
var path = @"C:\".AsOsAgnostic();
|
|
|
|
|
|
|
|
|
|
Subject.GetAvailableSpace(path).Should().NotBe(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void should_get_free_space_for_folder_that_doesnt_exist()
|
|
|
|
|
{
|
|
|
|
|
var path = @"C:\".AsOsAgnostic();
|
|
|
|
|
|
|
|
|
|
Subject.GetAvailableSpace(Path.Combine(path, "invalidFolder")).Should().NotBe(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void should_be_able_to_check_space_on_ramdrive()
|
|
|
|
|
{
|
2014-03-14 10:15:30 +00:00
|
|
|
|
MonoOnly();
|
2017-04-12 15:58:52 +00:00
|
|
|
|
Subject.GetAvailableSpace("/").Should().NotBe(0);
|
2014-01-06 06:20:08 +00:00
|
|
|
|
}
|
|
|
|
|
|
2011-11-12 19:53:36 +00:00
|
|
|
|
[Test]
|
2012-10-20 06:46:12 +00:00
|
|
|
|
public void should_return_free_disk_space()
|
2011-11-12 19:53:36 +00:00
|
|
|
|
{
|
2013-09-01 04:38:06 +00:00
|
|
|
|
var result = Subject.GetAvailableSpace(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
|
2013-04-30 06:11:49 +00:00
|
|
|
|
result.Should().BeGreaterThan(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void should_be_able_to_get_space_on_unc()
|
|
|
|
|
{
|
|
|
|
|
WindowsOnly();
|
2011-11-12 19:53:36 +00:00
|
|
|
|
|
2013-09-01 04:38:06 +00:00
|
|
|
|
var result = Subject.GetAvailableSpace(@"\\localhost\c$\Windows");
|
2011-11-12 19:53:36 +00:00
|
|
|
|
result.Should().BeGreaterThan(0);
|
|
|
|
|
}
|
2013-04-30 06:11:49 +00:00
|
|
|
|
|
2012-10-20 06:46:12 +00:00
|
|
|
|
[Test]
|
2013-02-17 04:33:56 +00:00
|
|
|
|
public void should_throw_if_drive_doesnt_exist()
|
2012-10-20 06:46:12 +00:00
|
|
|
|
{
|
2013-08-09 05:03:33 +00:00
|
|
|
|
WindowsOnly();
|
|
|
|
|
|
2014-05-04 14:33:25 +00:00
|
|
|
|
// Find a drive that doesn't exist.
|
|
|
|
|
for (char driveletter = 'Z'; driveletter > 'D' ; driveletter--)
|
|
|
|
|
{
|
|
|
|
|
if (new DriveInfo(driveletter.ToString()).IsReady)
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
Assert.Throws<DirectoryNotFoundException>(() => Subject.GetAvailableSpace(driveletter + @":\NOT_A_REAL_PATH\DOES_NOT_EXIST".AsOsAgnostic()));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Assert.Inconclusive("No drive available for testing.");
|
2012-10-20 06:46:12 +00:00
|
|
|
|
}
|
2013-08-09 01:40:24 +00:00
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void should_be_able_to_get_space_on_folder_that_doesnt_exist()
|
|
|
|
|
{
|
2013-09-01 04:38:06 +00:00
|
|
|
|
var result = Subject.GetAvailableSpace(@"C:\I_DO_NOT_EXIST".AsOsAgnostic());
|
2013-08-09 01:40:24 +00:00
|
|
|
|
result.Should().BeGreaterThan(0);
|
|
|
|
|
}
|
2011-11-12 19:53:36 +00:00
|
|
|
|
}
|
|
|
|
|
}
|