Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
 public AnimatedTexture this[CampfireState s]
 {
     get
     {
         return(textures[s]);
     }
 }
Ejemplo n.º 4
0
    IEnumerator WaitTime(float waitAmount, CampfireState nextState)
    {
        currentState = CampfireState.WaitTime;
        yield return(new WaitForSeconds(waitAmount));

        currentState = nextState;
    }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 8
0
 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);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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"));
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        /// <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;
            }
        }
Ejemplo n.º 15
0
        //
        //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 == "*****@*****.**"));
        }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 20
0
        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);
        }
Ejemplo n.º 22
0
        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);
        }
Ejemplo n.º 23
0
 public Campfire(Rectangle position, CampfireState state, double scale, Level level) : base(position, true, scale, level)
 {
     this.state = state;
     textures   = LoadTextures <CampfireState>(12);
 }