115 строки
2.2 KiB
C#
115 строки
2.2 KiB
C#
#if !__WATCHOS__
|
|
using System;
|
|
using System.Threading;
|
|
using Network;
|
|
using CoreFoundation;
|
|
using Foundation;
|
|
|
|
using NUnit.Framework;
|
|
|
|
|
|
namespace monotouchtest.Network
|
|
{
|
|
[TestFixture]
|
|
[Preserve (AllMembers = true)]
|
|
public class NWPathMonitorTest
|
|
{
|
|
|
|
NWPathMonitor monitor;
|
|
|
|
[SetUp]
|
|
public void SetUp ()
|
|
{
|
|
TestRuntime.AssertXcodeVersion (10, 0);
|
|
monitor = new NWPathMonitor ();
|
|
}
|
|
|
|
[Test]
|
|
public void StatusPropertyTest ()
|
|
{
|
|
Assert.That (monitor.CurrentPath, Is.Null, "'CurrentPath' property should be null");
|
|
|
|
NWPath finalPath = null;
|
|
bool isPathUpdated = false;
|
|
|
|
TestRuntime.RunAsync (DateTime.Now.AddSeconds (30), async () =>
|
|
{
|
|
|
|
monitor.SnapshotHandler = ( (path) =>
|
|
{
|
|
if (path != null)
|
|
{
|
|
finalPath = monitor.CurrentPath;
|
|
isPathUpdated = true;
|
|
}
|
|
|
|
});
|
|
|
|
var q = new DispatchQueue (label: "monitor");
|
|
monitor.SetQueue (q);
|
|
monitor.Start ();
|
|
|
|
}, () => isPathUpdated);
|
|
|
|
Assert.That (finalPath, Is.Not.Null, "'CurrentPath' property should not be null");
|
|
}
|
|
|
|
[Test]
|
|
public void PathIsAlwaysUpdatedWithNewHandlerTest ()
|
|
{
|
|
NWPath oldPath = monitor.CurrentPath;
|
|
NWPath newPath = monitor.CurrentPath;
|
|
bool isOldPathSet = false;
|
|
bool isNewPathSet = false;
|
|
var cbEvent = new AutoResetEvent (false);
|
|
|
|
TestRuntime.RunAsync (DateTime.Now.AddSeconds (30), async () =>
|
|
{
|
|
|
|
monitor.SnapshotHandler = ( (path) =>
|
|
{
|
|
if (path != null)
|
|
{
|
|
oldPath = monitor.CurrentPath;
|
|
isOldPathSet = true;
|
|
cbEvent.Set ();
|
|
}
|
|
});
|
|
|
|
var q = new DispatchQueue (label: "monitor");
|
|
monitor.SetQueue (q);
|
|
monitor.Start ();
|
|
|
|
}, () => isOldPathSet);
|
|
|
|
|
|
TestRuntime.RunAsync (DateTime.Now.AddSeconds (30), async () =>
|
|
{
|
|
cbEvent.WaitOne ();
|
|
monitor.SnapshotHandler = ( (path) =>
|
|
{
|
|
if (path != null)
|
|
{
|
|
newPath = monitor.CurrentPath;
|
|
isNewPathSet = true;
|
|
}
|
|
|
|
});
|
|
|
|
var q = new DispatchQueue (label: "monitor");
|
|
monitor.SetQueue (q);
|
|
monitor.Start ();
|
|
}, () => isNewPathSet);
|
|
|
|
Assert.AreNotEqual (oldPath, newPath, "'CurrentPath' wasn't updated when a new SnapshotHandler was assigned");
|
|
}
|
|
|
|
[TearDown]
|
|
public void TearDown ()
|
|
{
|
|
monitor?.Dispose ();
|
|
}
|
|
|
|
}
|
|
}
|
|
#endif |