public void Change() { var cmdrData = NewCmdrData(); var bots = new Instance[5]; var sessions = new HashSet <int>(); var fired = 0; var lastId = -1; cmdrData.Avatars.Change += (i, a) => { if (a.Name != Names.Punch.AsBotName()) { return; } if (lastId == -1) { lastId = a.Id; } Assert.IsTrue(a.IsBot); Assert.AreEqual(lastId, a.Id); Assert.AreEqual(Samples.AvPosition, a.Position); Assert.AreEqual(0, a.Type); Assert.IsTrue(sessions.Add(a.Session)); fired++; }; for (var i = 0; i < 5; i++) { bots[i] = new Instance() .TestLogin(Names.Punch) .EnterTestWorld(); TestPump.AllOnce(cmdrData); bots[i].GoTo(Samples.AvPosition); TestPump.AllOnce(cmdrData, bots[i], cmdrData); } TestPump.AllUntil(() => fired >= 5, cmdrData); foreach (var bot in bots) { bot.Dispose(); } Assert.IsTrue(fired == 5, "Avatar change event not fired exactly five times"); }
public void Pump_Async() { var punch = NewPunch(); var judy = NewJudy(); Action pump = () => { for (var i = 0; i < 10; i++) { TestPump.AllOnce(punch, judy); } }; Task.WaitAll( Task.Factory.StartNew(() => pump), Task.Factory.StartNew(() => pump) ); }
public void Leave() { var cmdrData = NewCmdrData(); var bots = new Instance[5]; var sessions = new HashSet <int>(); var fired = 0; cmdrData.Avatars.Leave += (i, n, s) => { if (n != Names.Punch.AsBotName()) { return; } Assert.IsTrue(sessions.Add(s)); fired++; }; for (var i = 0; i < 5; i++) { bots[i] = new Instance() .TestLogin(Names.Punch) .EnterTestWorld(); TestPump.AllOnce(cmdrData); bots[i].Leave(); TestPump.AllOnce(cmdrData, bots[i], cmdrData); } TestPump.AllUntil(() => fired >= 5, cmdrData); foreach (var bot in bots) { bot.Dispose(); } Assert.IsTrue(fired == 5, "Avatar leave event not fired exactly five times"); }