public async Task TestMethod(ulong startX, ulong startY, ulong endX, ulong endY, uint steps, Ticket.STATE state, List <ulong> path) { Console.WriteLine("TestMethod"); Ticket ticketInitial = new Ticket(navMesh.GetIndex(startX, startY), navMesh.GetIndex(endX, endY)); CancellationTokenSource cancelToken = new CancellationTokenSource(); Ticket ticketFinal = await pathEngine.FindPathAsync(ticketInitial, cancelToken); Assert.AreEqual(ticketInitial, ticketFinal); Assert.AreEqual(state, ticketFinal.State); Assert.AreEqual(steps, ticketFinal.Steps); Assert.AreEqual(path.Count, ticketFinal.Path.Count); CollectionAssert.AreEqual(path, ticketFinal.Path); }
public static void Main(string[] args) { Console.WriteLine("Hello World!"); Mutex mutex = new Mutex(); NavMesh navMesh = new NavMesh(); FindMyPath pathEngine = new FindMyPath(navMesh); Ticket ticket = new Ticket(navMesh.GetIndex(0, 0), navMesh.GetIndex(7, 7)); CancellationTokenSource cancelToken = new CancellationTokenSource(); Task <Ticket> task = pathEngine.FindPathAsync(ticket, cancelToken); task.ContinueWith(previousTask => { mutex.WaitOne(); Console.WriteLine("Result Steps=" + previousTask.Result.Steps); Console.WriteLine("Result State=" + previousTask.Result.State); navMesh.PrintSolution(previousTask.Result.Path); navMesh.PrintMap(previousTask.Result.Path); mutex.ReleaseMutex(); }); Ticket ticket2 = new Ticket(navMesh.GetIndex(1, 1), navMesh.GetIndex(6, 6)); CancellationTokenSource cancelToken2 = new CancellationTokenSource(); Task <Ticket> task2 = pathEngine.FindPathAsync(ticket2, cancelToken2); task2.ContinueWith(previousTask => { mutex.WaitOne(); Console.WriteLine("Result2 Steps=" + previousTask.Result.Steps); Console.WriteLine("Result2 State=" + previousTask.Result.State); navMesh.PrintSolution(previousTask.Result.Path); navMesh.PrintMap(previousTask.Result.Path); mutex.ReleaseMutex(); }); Ticket ticket3 = new Ticket(navMesh.GetIndex(1, 1), navMesh.GetIndex(6, 6)); CancellationTokenSource cancelToken3 = new CancellationTokenSource(); Task <Ticket> task3 = pathEngine.FindPathAsync(ticket3, cancelToken3); task3.ContinueWith(previousTask => { mutex.WaitOne(); Console.WriteLine("Result3 Steps=" + previousTask.Result.Steps); Console.WriteLine("Result3 State=" + previousTask.Result.State); navMesh.PrintSolution(previousTask.Result.Path); navMesh.PrintMap(previousTask.Result.Path); mutex.ReleaseMutex(); }); //cancelToken.CancelAfter(TimeSpan.FromMilliseconds(1)); //Thread.Sleep(1000); pathEngine.CalcelAll(); Thread.Sleep(1000); pathEngine.Dispose(); }