using System.IO;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Test.Common;

namespace NzbDrone.Common.Test.DiskProviderTests
{
    [TestFixture]
    public class FreeSpaceFixture : TestBase<DiskProvider>
    {
        [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_get_free_space_for_drive_that_doesnt_exist()
        {
            WindowsOnly();

            Assert.Throws<DirectoryNotFoundException>(() => Subject.GetAvailableSpace("J:\\").Should().NotBe(0));
        }

        [Test]
        public void should_be_able_to_check_space_on_ramdrive()
        {
            LinuxOnly();
            Subject.GetAvailableSpace("/run/").Should().NotBe(0);
        }
    }
}
