Tests and fixes to additions to BITS

pull/328/head
dahall 2022-07-25 20:45:25 -06:00
parent da5f3d4ee8
commit 0407e8007f
3 changed files with 42 additions and 5 deletions

View File

@ -56,7 +56,11 @@ public class CachePeers : IReadOnlyCollection<CachePeer>
/// <inheritdoc/>
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
private IEnumerable<CachePeer> EnumPeers() => IEnumFromCom<IBitsPeer>.Create(iCacheAdmin.EnumPeers()).Select(i => new CachePeer(i));
private IEnumerable<CachePeer> EnumPeers()
{
IEnumBitsPeers ienum = iCacheAdmin.EnumPeers();
return ienum is null ? Enumerable.Empty<CachePeer>() : IEnumFromCom<IBitsPeer>.Create(ienum).Select(i => new CachePeer(i));
}
}
/// <summary>Use <c>PeerCacheAdministration</c> to manage the pool of peers from which you can download content.</summary>
@ -110,8 +114,8 @@ public class PeerCacheAdministration
/// Null-terminated string that contains the URL of the file whose cache records and file you want to delete from the cache.
/// </param>
public void DeleteUrl(string url) => ciCacheAdmin.Item.DeleteUrl(url);
}
/// <summary>Provides the ability to enumerate the records of the cache.</summary>
public class PeerCacheRecords : IReadOnlyCollection<PeerCacheRecord>
{
@ -136,13 +140,19 @@ public class PeerCacheRecords : IReadOnlyCollection<PeerCacheRecord>
/// <summary>Deletes a record and file from the cache.</summary>
/// <param name="item">The record to delete from the cache.</param>
public bool Remove(PeerCacheRecord item) { try { iCacheAdmin.DeleteRecord(item.Id); return true; } catch { return false; } }
public bool Remove(PeerCacheRecord item)
{ try { iCacheAdmin.DeleteRecord(item.Id); return true; } catch { return false; } }
/// <inheritdoc/>
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
private IEnumerable<PeerCacheRecord> EnumRecords() => IEnumFromCom<IBitsPeerCacheRecord>.Create(iCacheAdmin.EnumRecords()).Select(i => new PeerCacheRecord(i));
private IEnumerable<PeerCacheRecord> EnumRecords()
{
IEnumBitsPeerCacheRecords ienum = iCacheAdmin.EnumRecords();
return ienum is null ? Enumerable.Empty<PeerCacheRecord>() : IEnumFromCom<IBitsPeerCacheRecord>.Create(ienum).Select(i => new PeerCacheRecord(i));
}
}
/// <summary>Provides information about a file in the BITS peer cache.</summary>
public class PeerCacheRecord
{

View File

@ -0,0 +1,27 @@
using NUnit.Framework;
using System;
using System.Security.Principal;
namespace Vanara.IO.Tests;
partial class BackgroundCopyTests
{
[Test]
public void PeerTest()
{
uint sz;
Assert.That(sz = BackgroundCopyManager.PeerCacheAdministration.MaximumCacheSize, Is.GreaterThanOrEqualTo(0U));
Assert.That(BackgroundCopyManager.PeerCacheAdministration.MaximumCacheSize += 256U, Is.EqualTo(sz + 256U));
TimeSpan age;
Assert.That(age = BackgroundCopyManager.PeerCacheAdministration.MaximumContentAge, Is.GreaterThanOrEqualTo(TimeSpan.Zero));
Assert.That(BackgroundCopyManager.PeerCacheAdministration.MaximumContentAge += TimeSpan.FromSeconds(600), Is.EqualTo(age + TimeSpan.FromSeconds(600)));
PeerCaching pc = BackgroundCopyManager.PeerCacheAdministration.ConfigurationFlags;
Assert.That(pc == 0 || Enum.IsDefined(typeof(PeerCaching), pc));
Assert.That(BackgroundCopyManager.PeerCacheAdministration.ConfigurationFlags = PeerCaching.Enable, Is.EqualTo(PeerCaching.Enable));
Assert.That(BackgroundCopyManager.PeerCacheAdministration.Peers, Is.Unique);
Assert.That(BackgroundCopyManager.PeerCacheAdministration.Records, Is.Unique);
}
}

View File

@ -10,7 +10,7 @@
<SupportedPlatform Include="windows" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="NUnit" Version="3.13.2" />
<PackageReference Include="NUnit" Version="3.13.3" />
<PackageReference Include="NUnit3TestAdapter" Version="4.2.1" />
</ItemGroup>
<ItemGroup>