public void AddRoomsTest() { CampfireState target = CampfireState.Instance; target.SetNameAndToken("fred", "9876543210"); target.AddRoom(1, "Room1", 12); target.AddRoom(101, "Room2", 0); List <Room> newRooms = new List <Room>(); Room rm; rm = new Room(3, "Room3"); // new room newRooms.Add(rm); rm = new Room(101, "Room2"); // duplicate newRooms.Add(rm); rm = new Room(1, "RoomOne"); // existing room, new name newRooms.Add(rm); target.AddRooms(newRooms); Assert.AreEqual(3, target.Rooms.Count); Assert.IsTrue(target.Rooms.Count(r => r.Id == 1 && r.Name == "RoomOne") == 1, "verify renamed room"); Assert.IsTrue(target.Rooms.Count(r => r.Id == 3 && r.Name == "Room3") == 1, "verify new room"); CampfireState newCampfireInfo = CampfireState_Accessor.Restore(BackingStorePath); Match(target, newCampfireInfo); }
public void Scenario_SSCommand_GuestUser_Test() { CampfireState campInfo = CampfireState.Instance; MockCampfireAPI api = new MockCampfireAPI(); Assert.AreEqual(0, campInfo.Users.Count); int msgId = 1; int fakeUserId = 12; int guestUserId = 123; api.FakeUsers.Add(new User("Peter Potrebic", "*****@*****.**", fakeUserId)); int roomId1 = 24; api.FakeRooms.Add(new Room(roomId1, "room #24")); MessageProcessor_Accessor.Work_ScanForAddOrRemoveRooms(campInfo, api); Assert.AreEqual(1, campInfo.Rooms.Count); List <Message> msgs; msgs = new List <Message>(); api.MessagesInRoom[roomId1] = msgs; // Create a Text Message for the fakeUser api.MessagesInRoom[roomId1].Add(new CampfireAPI.Message(msgId++, CampfireAPI.Message.MType.TextMessage, roomId1, guestUserId, "@SSignal:[email protected] please")); // This process step should just ignore the command because it was issued by a quest. MessageProcessor_Accessor.Work_ProcessNewMessagesForAllRooms(campInfo, api); }
public AnimatedTexture this[CampfireState s] { get { return(textures[s]); } }
IEnumerator WaitTime(float waitAmount, CampfireState nextState) { currentState = CampfireState.WaitTime; yield return(new WaitForSeconds(waitAmount)); currentState = nextState; }
public void NotifierTest() { CampfireState target = CampfireState.Instance; int prev = MockNotifier.MessagesSentTo.Count; target.Notifier.Doit("Peter", "Startup/Trial Discussion", 340248, "*****@*****.**", "couponsinc", "Jake", "Hey @Peter, come here"); Assert.AreEqual(prev + 1, MockNotifier.MessagesSentTo.Count); }
public void Scenario_SSCommand_SetAltEmail_Test() { CampfireState campInfo = CampfireState.Instance; MockCampfireAPI api = new MockCampfireAPI(); Assert.AreEqual(0, campInfo.Users.Count); int msgId = 1; int fakeUserId = 12; api.FakeUsers.Add(new User("Peter Potrebic", "*****@*****.**", fakeUserId)); int roomId1 = 24; api.FakeRooms.Add(new Room(roomId1, "room #24")); MessageProcessor_Accessor.Work_ScanForAddOrRemoveRooms(campInfo, api); Assert.AreEqual(1, campInfo.Rooms.Count); List <Message> msgs; msgs = new List <Message>(); api.MessagesInRoom[roomId1] = msgs; // Create a Text Message for the fakeUser api.MessagesInRoom[roomId1].Add(new CampfireAPI.Message(msgId++, CampfireAPI.Message.MType.TextMessage, roomId1, fakeUserId, "hello")); // The process step should now process that Text Message which gets the current user into the system MessageProcessor_Accessor.Work_ProcessNewMessagesForAllRooms(campInfo, api); Assert.AreEqual("", campInfo.Users[0].AltEmailAddress); // Create a Text Message for the fakeUser api.MessagesInRoom[roomId1].Add(new CampfireAPI.Message(msgId++, CampfireAPI.Message.MType.TextMessage, roomId1, fakeUserId, "@SSignal:[email protected] please")); // The process step should now process that Text Message which gets the current user into the system MessageProcessor_Accessor.Work_ProcessNewMessagesForAllRooms(campInfo, api); Assert.AreEqual("*****@*****.**", campInfo.Users[0].AltEmailAddress); // Create a Text Message for the fakeUser api.MessagesInRoom[roomId1].Add(new CampfireAPI.Message(msgId++, CampfireAPI.Message.MType.TextMessage, roomId1, fakeUserId, "@SSignal:AltEmail=bogus_email please")); // The process step should now process that Text Message which gets the current user into the system MessageProcessor_Accessor.Work_ProcessNewMessagesForAllRooms(campInfo, api); Assert.AreEqual("*****@*****.**", campInfo.Users[0].AltEmailAddress); // Create a Text Message for the fakeUser api.MessagesInRoom[roomId1].Add(new CampfireAPI.Message(msgId++, CampfireAPI.Message.MType.TextMessage, roomId1, fakeUserId, "@SSignal:ALTEMAIL= please")); // The process step should now process that Text Message which gets the current user into the system MessageProcessor_Accessor.Work_ProcessNewMessagesForAllRooms(campInfo, api); Assert.AreEqual("", campInfo.Users[0].AltEmailAddress); }
public void Scenario_AddAndRemovePendingNotif_Test() { CampfireState campInfo = CampfireState.Instance; MockCampfireAPI api = new MockCampfireAPI(); Assert.AreEqual(0, campInfo.Users.Count); int msgId = 1; int fakeUserId = 12; api.FakeUsers.Add(new User("Peter Potrebic", "*****@*****.**", fakeUserId)); int fakeUserId2 = 13; api.FakeUsers.Add(new User("Joe Cabral", "*****@*****.**", fakeUserId2)); int roomId1 = 24; int roomId2 = 25; api.FakeRooms.Add(new Room(roomId1, "room #24")); api.FakeRooms.Add(new Room(roomId2, "room #25")); MessageProcessor_Accessor.Work_ScanForAddOrRemoveRooms(campInfo, api); Assert.AreEqual(2, campInfo.Rooms.Count); List <Message> msgs; msgs = new List <Message>(); api.MessagesInRoom[roomId1] = msgs; msgs = new List <Message>(); api.MessagesInRoom[roomId2] = msgs; // Create a Entered Message for the fakeUser api.MessagesInRoom[roomId1].Add(new CampfireAPI.Message(msgId++, CampfireAPI.Message.MType.EnterMessage, roomId1, fakeUserId, string.Empty)); api.MessagesInRoom[roomId2].Add(new CampfireAPI.Message(msgId++, CampfireAPI.Message.MType.EnterMessage, roomId2, fakeUserId2, string.Empty)); MessageProcessor_Accessor.Work_ProcessNewMessagesForAllRooms(campInfo, api); Assert.AreEqual(2, campInfo.Users.Count); Assert.IsTrue(campInfo.Users.Any(u => u.Id == fakeUserId && u.Name == "Peter Potrebic")); Assert.IsTrue(campInfo.Users.Any(u => u.Id == fakeUserId2 && u.Name == "Joe Cabral")); campInfo.UpdateUser(fakeUserId2, 10); // Create a Text Message for the fakeUser api.MessagesInRoom[roomId1].Add(new CampfireAPI.Message(msgId++, CampfireAPI.Message.MType.TextMessage, roomId1, fakeUserId, "Hey, @JoeC care to join us")); // The process step should now process that Text Message MessageProcessor_Accessor.Work_ProcessNewMessagesForAllRooms(campInfo, api); Assert.AreEqual(1, campInfo.PendingNotifications.Count); CampfireState.PendingNotify pn = campInfo.PendingNotifications[0]; Assert.IsTrue(pn.TriggerTime > DateTime.Now.AddMinutes(9)); // now the target of the notication enters the room... which should cancel the notification api.MessagesInRoom[roomId1].Add(new CampfireAPI.Message(msgId++, CampfireAPI.Message.MType.EnterMessage, roomId1, fakeUserId2, string.Empty)); MessageProcessor_Accessor.Work_ProcessNewMessagesForAllRooms(campInfo, api); Assert.AreEqual(0, campInfo.PendingNotifications.Count); }
public void MyTestInitialize() { CampfireState_Accessor.Instance = null; if (System.IO.File.Exists(BackingStorePath)) { System.IO.File.Delete(BackingStorePath); } mockNotifier = new MockNotifier(); CampfireState.Initialize(TestContext.TestDir, mockNotifier); SmokeSignalConfig.Initialize(TestContext.TestDir); }
public void Work_FetchNewMessagesForAllRoomsTest() { CampfireState campInfo = CampfireState.Instance; MockCampfireAPI api = new MockCampfireAPI(); List <Message> msgs; // Create a new room (at the API level) int roomId1 = 123; int roomId2 = 1001; int userId1 = 100; int userId2 = 200; api.FakeUsers.Add(new User("Peter", "*****@*****.**", userId1)); api.FakeUsers.Add(new User("Casey", "*****@*****.**", userId2)); Room rm1 = new Room(roomId1, "room #1"); // The room must exist in the API and in cmapfireState api.FakeRooms.Add(rm1); campInfo.AddRoom(rm1.Id, rm1.Name, 0); // add a couple fake messages to room1 msgs = new List <Message>(); msgs.Add(new Message(1, Message.MType.EnterMessage, roomId1, userId1, "")); msgs.Add(new Message(2, Message.MType.TextMessage, roomId1, userId1, "Hello everyone")); api.MessagesInRoom.Add(roomId1, msgs); // add room 2 Room rm2 = new Room(roomId2, "room #2"); api.FakeRooms.Add(rm2); campInfo.AddRoom(rm2.Id, rm2.Name, 0); // add a couple fake messages to room1 msgs = new List <Message>(); msgs.Add(new Message(3, Message.MType.EnterMessage, roomId2, userId2, "")); msgs.Add(new Message(4, Message.MType.TextMessage, roomId2, userId2, "message from user 2")); msgs.Add(new Message(5, Message.MType.TextMessage, roomId2, userId1, "message from user 1")); api.MessagesInRoom.Add(roomId2, msgs); // The process step should now pick up the change and incorporate into campfileState MessageProcessor_Accessor.Work_ProcessNewMessagesForAllRooms(campInfo, api); // In the "Entered" queue there should be 2 entries MessageProcessor_Accessor.ProcessMessages_ProcessQueuedMessages(campInfo, api); Assert.AreEqual(2, campInfo.Users.Count); Assert.IsTrue(campInfo.Users.Any(u => u.Id == userId1)); Assert.IsTrue(campInfo.Users.Any(u => u.Id == userId2)); // In the Text Message queue there should be 3 entries MessageProcessor_Accessor.ProcessMessages_ProcessQueuedMessages(campInfo, api); }
public void SaveRestoreTest_UsersOnly() { CampfireState target = CampfireState.Instance; target.AddUser(1, "Peter", "*****@*****.**", null); target.AddUser(2, "Jake", "*****@*****.**", "*****@*****.**"); Assert.AreEqual(2, target.Users.Count); Assert.AreEqual(0, target.Rooms.Count); CampfireState newCampfireInfo = CampfireState_Accessor.Restore(BackingStorePath); Match(target, newCampfireInfo); }
public void SaveRestoreTest_RoomsOnly() { CampfireState target = CampfireState.Instance; target.AddRoom(1, "Room1", 12); target.AddRoom(101, "Room2", 0); Assert.AreEqual(0, target.Users.Count); Assert.AreEqual(2, target.Rooms.Count); CampfireState newCampfireInfo = CampfireState_Accessor.Restore(BackingStorePath); Match(target, newCampfireInfo); }
public void Work_ScanForAddOrRemoveRoomsTest() { CampfireState campInfo = CampfireState.Instance; MockCampfireAPI api = new MockCampfireAPI(); // Create a new room (at the API level) int roomId = 123; api.FakeRooms.Add(new Room(roomId, "talking room")); // The process step should now pick up the change and incorporate into campfileState MessageProcessor_Accessor.Work_ScanForAddOrRemoveRooms(campInfo, api); Assert.AreEqual(1, campInfo.Rooms.Count); Assert.IsTrue(campInfo.Rooms.Any(u => u.Id == roomId && u.Name == "talking room")); }
public void SaveRestoreTest_NoUsersNoRooms() { CampfireState target = CampfireState.Instance; SmokeSignalConfig sstarget = SmokeSignalConfig.Instance; sstarget.SetAndSaveNameAndToken("fred", "9876543210"); target.SetNameAndToken("fred", "9876543210"); Assert.AreEqual(0, target.Users.Count); Assert.AreEqual(0, target.Rooms.Count); CampfireState newCampfireInfo = CampfireState_Accessor.Restore(BackingStorePath); Match(target, newCampfireInfo); }
/// <summary> /// changes the current state of the Campfire to its future state /// </summary> public override void GoToFuture() { switch (state) { case CampfireState.UnlitCampfire: break; case CampfireState.LitCampfire: state = CampfireState.PileOfAsh; break; case CampfireState.PileOfAsh: break; default: break; } }
// //Use TestCleanup to run code after each test has run //[TestCleanup()] //public void MyTestCleanup() //{ //} // #endregion private void Match(CampfireState expected, CampfireState actual) { Assert.AreEqual(expected.Users.Count, actual.Users.Count); Assert.AreEqual(expected.Rooms.Count, actual.Rooms.Count); foreach (CampfireState.RoomInfo room in expected.Rooms) { Assert.IsTrue(actual.Rooms.Count(r => r.Id == room.Id && r.LastMessageId == room.LastMessageId && r.Name == room.Name) == 1); } foreach (CampfireState.UserInfo user in expected.Users) { Assert.IsTrue(actual.Users.Count(u => u.Id == user.Id && u.Name == user.Name && u.EmailAddress == user.EmailAddress && u.AltEmailAddress == user.AltEmailAddress) == 1); } }
public void Work_ScanForUserChangesTest() { CampfireState campInfo = CampfireState.Instance; MockCampfireAPI api = new MockCampfireAPI(); // initialize known state with 1 user int changedUserId = 12; campInfo.AddUser(changedUserId, "Peter", "*****@*****.**", "1234"); // Now change the data assoc with that user (at the API level) api.FakeUsers.Add(new User("Jake", "*****@*****.**", changedUserId)); // The process step should now pick up the change and incorporate into campfileState MessageProcessor_Accessor.Work_ScanForUserChanges(campInfo, api); Assert.AreEqual(1, campInfo.Users.Count); Assert.IsTrue(campInfo.Users.Any(u => u.Id == changedUserId && u.Name == "Jake" && u.EmailAddress == "*****@*****.**")); }
public void UpdateLastMessageIdTest() { CampfireState target = CampfireState.Instance; target.SetNameAndToken("fred", "9876543210"); target.AddRoom(1, "Room1", 12); target.AddRoom(101, "Room2", 0); target.UpdateLastMessageId(101, 1234); CampfireState.RoomInfo room = target.Rooms.First(r => r.Id == 101); Assert.AreEqual(1234, room.LastMessageId); CampfireState newCampfireInfo = CampfireState_Accessor.Restore(BackingStorePath); room = newCampfireInfo.Rooms.First(r => r.Id == 101); Assert.AreEqual(1234, room.LastMessageId); }
public void Work_ConsumeQueuedEnterMessagesTest() { CampfireState campInfo = CampfireState.Instance; MockCampfireAPI api = new MockCampfireAPI(); Assert.AreEqual(0, campInfo.Users.Count); int fakeUserId = 12; api.FakeUsers.Add(new User("Peter", "*****@*****.**", fakeUserId)); // Create a Entered Message for the fakeUser campInfo.QueueMessage(new CampfireAPI.Message(1, CampfireAPI.Message.MType.EnterMessage, 23, fakeUserId, string.Empty)); // The process step should now process that queued Enter Message MessageProcessor_Accessor.ProcessMessages_ProcessQueuedMessages(campInfo, api); Assert.AreEqual(1, campInfo.Users.Count); Assert.IsTrue(campInfo.Users.Any(u => u.Id == fakeUserId && u.Name == "Peter")); }
public void Scenario_SSCommand_SetDelay_Test() { CampfireState campInfo = CampfireState.Instance; MockCampfireAPI api = new MockCampfireAPI(); Assert.AreEqual(0, campInfo.Users.Count); int msgId = 1; int fakeUserId = 12; api.FakeUsers.Add(new User("Peter Potrebic", "*****@*****.**", fakeUserId)); int roomId1 = 24; api.FakeRooms.Add(new Room(roomId1, "room #24")); MessageProcessor_Accessor.Work_ScanForAddOrRemoveRooms(campInfo, api); Assert.AreEqual(1, campInfo.Rooms.Count); List <Message> msgs; msgs = new List <Message>(); api.MessagesInRoom[roomId1] = msgs; //// Create a Entered Message for the fakeUser //api.MessagesInRoom[roomId1].Add(new CampfireAPI.Message(msgId++, CampfireAPI.Message.MType.EnterMessage, roomId1, fakeUserId, string.Empty)); //api.MessagesInRoom[roomId2].Add(new CampfireAPI.Message(msgId++, CampfireAPI.Message.MType.EnterMessage, roomId2, fakeUserId2, string.Empty)); //MessageProcessor_Accessor.Work_ProcessNewMessagesForAllRooms(campInfo, api); //Assert.AreEqual(2, campInfo.Users.Count); //Assert.IsTrue(campInfo.Users.Any(u => u.Id == fakeUserId && u.Name == "Peter Potrebic")); //Assert.IsTrue(campInfo.Users.Any(u => u.Id == fakeUserId2 && u.Name == "Joe Cabral")); //campInfo.UpdateUser(fakeUserId2, 10); // Create a Text Message for the fakeUser api.MessagesInRoom[roomId1].Add(new CampfireAPI.Message(msgId++, CampfireAPI.Message.MType.TextMessage, roomId1, fakeUserId, "@SSignal:Delay=6 please")); // The process step should now process that Text Message MessageProcessor_Accessor.Work_ProcessNewMessagesForAllRooms(campInfo, api); Assert.AreEqual(6, campInfo.Users[0].DelayInMinutes); }
protected override void OnStart(string[] args) { string path = Utils.DataLocation; Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); StringBuilder sb = new StringBuilder(); if (args != null) { sb.AppendFormat("args: {0}, {1}", args.Length > 0 ? args[0] : "xxx", args.Length > 1 ? args[1] : "xxx"); } else { sb.AppendFormat("args: NONE"); } sb.AppendLine(); Configuration userConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal); sb.AppendFormat("config.FilePath: {0}", config.FilePath); sb.AppendLine(); sb.AppendFormat("userConfig.FilePath: {0}", userConfig.FilePath); sb.AppendLine(); sb.AppendFormat("DataLocation: {0}", path); sb.AppendLine(); theEventLog.WriteEntry(string.Format("SmokeSignal starting. {0}", sb.ToString())); if (args != null && args.Length > 0) { ProcessArguments(args); } SmokeSignalConfig.Initialize(path); CampfireState.Initialize(path, null); MessageProcessor mp = new MessageProcessor(CampfireState.Instance); mp.Run(false); }
public void Scenario_GuestUser_SendsSmokeSignal_Test() { CampfireState campInfo = CampfireState.Instance; MockCampfireAPI api = new MockCampfireAPI(); Assert.AreEqual(0, campInfo.Users.Count); int msgId = 1; int realUserId = 12; int guestUserId = 123; api.FakeUsers.Add(new User("Peter Potrebic", "*****@*****.**", realUserId)); int roomId1 = 24; api.FakeRooms.Add(new Room(roomId1, "room #24")); MessageProcessor_Accessor.Work_ScanForAddOrRemoveRooms(campInfo, api); Assert.AreEqual(1, campInfo.Rooms.Count); List <Message> msgs; msgs = new List <Message>(); api.MessagesInRoom[roomId1] = msgs; // Create a Text Message for the real user api.MessagesInRoom[roomId1].Add(new CampfireAPI.Message(msgId++, CampfireAPI.Message.MType.TextMessage, roomId1, realUserId, "hello")); // The process step should now process that Text Message which gets the user into the system MessageProcessor_Accessor.Work_ProcessNewMessagesForAllRooms(campInfo, api); // Create a Text Message for the fakeUser api.MessagesInRoom[roomId1].Add(new CampfireAPI.Message(msgId++, CampfireAPI.Message.MType.TextMessage, roomId1, guestUserId, "!PeterP can you help with problem XYZ?")); MessageProcessor_Accessor.Work_ProcessNewMessagesForAllRooms(campInfo, api); }
public void SaveRestoreTest_UsersOnly_WithDelay() { CampfireState target = CampfireState.Instance; target.AddUser(2, "Jake", "*****@*****.**", "*****@*****.**"); Assert.AreEqual(1, target.Users.Count); Assert.AreEqual(0, target.Rooms.Count); target.UpdateUser(2, 4); CampfireState.UserInfo ui = target.Users.FirstOrDefault(u => u.Id == 2); Assert.AreEqual(4, ui.DelayInMinutes); target.AddUser(1, "Peter", "*****@*****.**", null); CampfireState newCampfireInfo = CampfireState_Accessor.Restore(BackingStorePath); Match(target, newCampfireInfo); ui = newCampfireInfo.Users.FirstOrDefault(u => u.Id == 2); Assert.AreEqual(4, ui.DelayInMinutes); ui = newCampfireInfo.Users.FirstOrDefault(u => u.Id == 1); Assert.AreEqual(-1, ui.DelayInMinutes); }
public Campfire(Rectangle position, CampfireState state, double scale, Level level) : base(position, true, scale, level) { this.state = state; textures = LoadTextures <CampfireState>(12); }