Esempio n. 1
0
        public void Parse_UserNameContainsSymbols_UserNameUnchanged()
        {
            string            line = "24.08.2011 17:00:47|TIM_!@#$%^> Hello! My name is 'TIM_!@#$%^'";
            MessageDataEntity mes  = MessageDataEntity.Parse(line);

            Assert.AreEqual("TIM_!@#$%^", mes.UserName);
        }
Esempio n. 2
0
        private void OnFileChangedHandler(object sender, FileSystemEventArgs e)
        {
            if (e.Name != _filename)
            {
                return;
            }
            string newLine = FileHelper.ReadLastLine(_path, _encoding);
            var    message = MessageDataEntity.Parse(newLine);

            switch (message.Text)
            {
            case "Logon":
                OnUserStatusChanged?.Invoke(new OnUserStatusChangedArgs(message.UserName, true, message.DateTime));
                break;

            case "Logout":
                OnUserStatusChanged?.Invoke(new OnUserStatusChangedArgs(message.UserName, false, message.DateTime));
                break;

            default:
                OnMessageReceived?.Invoke(new OnMessageReceivedArgs(new MessageData(
                                                                        message.Id,
                                                                        message.DateTime,
                                                                        message.UserName,
                                                                        message.Text,
                                                                        message.UserName == CurrentUserContext.CurrentUserName,
                                                                        message.ReplyToMessageId)));
                break;
            }
        }
Esempio n. 3
0
        public async Task <IList <MessageData> > LoadMessagesAsync(int limit = 0, CancellationToken token = default)
        {
            var messages = await _messageRepository.GetAsync(limit, token);

            if (messages == null || messages.Count == 0)
            {
                return(null);
            }
            List <MessageData> res = new List <MessageData>();

            for (int i = 0; i < messages.Count; i++)
            {
                MessageDataEntity m    = messages[i];
                string            text = m.Text;
                token.ThrowIfCancellationRequested();
                if (i + 1 < messages.Count && messages[i + 1].Id == m.Id)
                {
                    StringBuilder textBuilder = new StringBuilder(m.Text);
                    while (i + 1 < messages.Count && messages[i + 1].Id == m.Id)
                    {
                        textBuilder.Append("\n" + messages[++i].Text);
                    }
                    text = textBuilder.ToString();
                }
                res.Add(new MessageData(m.Id, m.DateTime,
                                        m.UserName, text,
                                        m.UserName == CurrentUserContext.CurrentUserName,
                                        m.ReplyToMessageId));
            }
            return(res);
        }
Esempio n. 4
0
        public void Parse_WithoutSpaceAfterDelSym_TextCorrect()
        {
            string            line = "24.08.2011 17:00:47|TIM>Hello! My name > is '5cc > 62'";
            MessageDataEntity mes  = MessageDataEntity.Parse(line);

            Assert.AreEqual("Hello! My name > is '5cc > 62'", mes.Text);
            Assert.AreEqual("TIM", mes.UserName);
        }
Esempio n. 5
0
        public void Parse_MessageContainsGtSymb_TextUnchanged()
        {
            string            line = "24.08.2011 17:00:47|TIM> Hello! My name > is '5cc > 62'";
            MessageDataEntity mes  = MessageDataEntity.Parse(line);

            Assert.AreEqual("Hello! My name > is '5cc > 62'", mes.Text);
            Assert.AreEqual("TIM", mes.UserName);
        }
Esempio n. 6
0
        public void Build_MessageContainsExtraSpaces_TextUnchanged()
        {
            string message  = "Hello! My   name  is 'Timch'";
            string username = "******";

            MessageDataEntity mes = new MessageDataEntity(username, message);

            Assert.AreEqual("Hello! My   name  is 'Timch'", mes.Text);
        }
Esempio n. 7
0
        public void Parse_UserNameContainsSpaces_UserNameUnchanged()
        {
            string            line = "24.08.2011 17:00:47|FGHFF GH DFDF> Hello! My name is '???'";
            MessageDataEntity mes  = MessageDataEntity.Parse(line);

            Assert.AreEqual(new DateTime(2011, 08, 24, 17, 0, 47), mes.DateTime);
            Assert.AreEqual("FGHFF GH DFDF", mes.UserName);
            Assert.AreEqual("Hello! My name is '???'", mes.Text);
        }
Esempio n. 8
0
        public void Parse_UserNameShort_ExtraSpacesRemoved()
        {
            string            line = "24.08.2011 17:00:47|VI        > Hello! My name is 'Vi'";
            MessageDataEntity mes  = MessageDataEntity.Parse(line);

            Assert.AreEqual(new DateTime(2011, 08, 24, 17, 0, 47), mes.DateTime);
            Assert.AreEqual("VI", mes.UserName);
            Assert.AreEqual("Hello! My name is 'Vi'", mes.Text);
        }
Esempio n. 9
0
        public void Build_UserNameContainsSpaces_UserNameUnchanged()
        {
            string message  = "Hello! My name is 'Timch'";
            string username = "******";

            MessageDataEntity mes = new MessageDataEntity(username, message);

            Assert.AreEqual("TIMCH AH DEL S", mes.UserName);
        }
Esempio n. 10
0
        public void Build_UserNameInLowerCase_ConvertToUpperCase()
        {
            string message  = "Hello! My name is 'Timch'";
            string username = "******";

            MessageDataEntity mes = new MessageDataEntity(username, message);

            Assert.AreEqual("TIMCH", mes.UserName);
        }
Esempio n. 11
0
        public void Parse_ReplyYearNotSpecified(string text, string expReplyId, string expText = null)
        {
            string line = "24.08.2011 17:00:47|NAMEORIG> " + text;

            MessageDataEntity mes = MessageDataEntity.Parse(line);

            Assert.AreEqual(expReplyId, mes.ReplyToMessageId);
            Assert.AreEqual(expReplyId == null ? text : expText, mes.Text);
        }
Esempio n. 12
0
        public void Parse_CleanLine()
        {
            string            line = "24.08.2011 17:00:47|5cc62> Hello! My name is '5cc62'";
            MessageDataEntity mes  = MessageDataEntity.Parse(line);

            Assert.AreEqual(new DateTime(2011, 08, 24, 17, 0, 47), mes.DateTime);
            Assert.AreEqual("5CC62", mes.UserName);
            Assert.AreEqual("Hello! My name is '5cc62'", mes.Text);
        }
Esempio n. 13
0
        public void Build_ReplyIdIsEmpty_ReplyIdIsNull()
        {
            string message  = "Hello! My name is 'Timch'";
            string username = "******";
            string replyId  = "";

            MessageDataEntity mes = new MessageDataEntity(username, message, DateTime.Now, replyId);

            Assert.IsNull(mes.ReplyToMessageId);
        }
Esempio n. 14
0
        public void Build_ReplyIdGoodCases_ReplyIdNotNull(string replyId)
        {
            string message  = "Hello! My name is 'Timch'";
            string username = "******";

            var mes = new MessageDataEntity(username, message, DateTime.Now, replyId);

            Assert.NotNull(mes.ReplyToMessageId);
            Assert.AreEqual(replyId, mes.ReplyToMessageId);
        }
Esempio n. 15
0
        public void Build_IdIsCorrect()
        {
            string   message  = "Test message";
            string   username = "******";
            DateTime dateTime = DateTime.Now;

            MessageDataEntity mes = new MessageDataEntity(username, message);

            Assert.AreEqual($"{dateTime:dd.MM.yyyy HH:mm:ss}|TIMCH_Q", mes.Id);
        }
Esempio n. 16
0
        public void Parse_HasCleanReply_ReplyNotNull()
        {
            string            line = "24.08.2011 17:00:47|NAME1     > 23.08.2011 15:01:02|NAME2     > Hello! My name is '5cc62'";
            MessageDataEntity mes  = MessageDataEntity.Parse(line);

            Assert.AreEqual(new DateTime(2011, 08, 24, 17, 0, 47), mes.DateTime);
            Assert.AreEqual("NAME1", mes.UserName);
            Assert.AreEqual("Hello! My name is '5cc62'", mes.Text);
            Assert.NotNull(mes.ReplyToMessageId);
            Assert.AreEqual("23.08.2011 15:01:02|NAME2", mes.ReplyToMessageId);
        }
Esempio n. 17
0
        public void ToString_UserNameShort_PaddedWithSpaces()
        {
            string            message  = "Hello! My name is 'Sn'";
            string            username = "******";
            DateTime          dateTime = DateTime.Now;
            MessageDataEntity mes      = new MessageDataEntity(username, message, dateTime);

            string res = mes.ToString();

            Assert.AreEqual(
                $"{dateTime:dd.MM.yyyy HH:mm:ss}|SN        > Hello! My name is 'Sn'",
                res);
        }
Esempio n. 18
0
        public void ToString_UserNameLong_UserNameIsNotTruncated()
        {
            string            message  = "Hello! My name is 'VeryLongNameSurnameLastname'";
            string            username = "******";
            DateTime          dateTime = DateTime.Now;
            MessageDataEntity mes      = new MessageDataEntity(username, message, dateTime);

            string res = mes.ToString();

            Assert.AreEqual(
                $"{dateTime:dd.MM.yyyy HH:mm:ss}|VERYLONGNAMESURNAMELASTNAME> " +
                "Hello! My name is 'VeryLongNameSurnameLastname'",
                res);
        }
Esempio n. 19
0
        public async Task SetUserStatusOffline()
        {
            await _repo.SetUserStatus(new UserStatus()
            {
                UserId         = "User1",
                IsOnline       = false,
                UpdateDateTime = DateTime.Now
            });

            var lines = File.ReadAllLines(_filename);

            var m = MessageDataEntity.Parse(lines[0]);

            Assert.AreEqual(1, lines.Length);
            Assert.AreEqual("Logout", m.Text);
            Assert.AreEqual("USER1", m.UserName);
        }
Esempio n. 20
0
        public void ToString_HasReply_ResultHasReplyId()
        {
            string            reply_message  = "Hello! My name is 'Name1'";
            string            reply_username = "******";
            DateTime          reply_dateTime = DateTime.Now;
            MessageDataEntity reply_mes      =
                new MessageDataEntity(reply_username, reply_message, reply_dateTime);

            string            origin_message  = "Hello! My name is 'Name2'";
            string            origin_username = "******";
            DateTime          origin_dateTime = DateTime.Now;
            MessageDataEntity origin_mes      =
                new MessageDataEntity(origin_username, origin_message, origin_dateTime, reply_mes.Id);

            string res = origin_mes.ToString();

            Assert.AreEqual(
                $"{origin_dateTime:dd.MM.yyyy HH:mm:ss}|NAME2     > " +
                $"{reply_dateTime:dd.MM.yyyy HH:mm:ss}|NAME1     > " +
                $"Hello! My name is 'Name2'",
                res);
        }
Esempio n. 21
0
        public async Task <MessageData> SendMessage(InputMessageData inputMessageData)
        {
            MessageDataEntity messageEntity = null;

            if (inputMessageData.Text.Contains("\n"))
            {
                var messageLines = inputMessageData.Text.Split('\n');
                var messages     = messageLines
                                   .Select(t =>
                                           new MessageDataEntity(
                                               inputMessageData.SenderId,
                                               t,
                                               inputMessageData.DateTime,
                                               inputMessageData.ReplyToMessageId))
                                   .ToList();
                messageEntity =
                    (await _messageRepository.AddSomeAsync(messages))
                    .First(m => m != null);
            }
            else
            {
                messageEntity =
                    (await _messageRepository.AddAsync(
                         new MessageDataEntity(
                             inputMessageData.SenderId,
                             inputMessageData.Text,
                             inputMessageData.DateTime,
                             inputMessageData.ReplyToMessageId)));
            }
            return(new MessageData(messageEntity.Id,
                                   messageEntity.DateTime,
                                   messageEntity.UserName,
                                   inputMessageData.Text,
                                   messageEntity.UserName == CurrentUserContext.CurrentUserName,
                                   inputMessageData.ReplyToMessageId));
        }
Esempio n. 22
0
        public async Task <IList <UserStatus> > GetUsersStatuses(CancellationToken token = default)
        {
            var res = await Task.Run(() =>
            {
                var lines = File.ReadAllLines(_filename, _encoding);
                return(lines
                       .Select(l => MessageDataEntity.Parse(l))
                       .GroupBy(m => m.UserName)
                       .Select(g =>
                {
                    var mes = g.Last();
                    return new UserStatus()
                    {
                        UserId = mes.UserName,
                        IsOnline = mes.Text != "Logout",
                        UpdateDateTime = mes.DateTime
                    };
                })
                       .OrderBy(u => u.UserId)
                       .ToArray());
            }, token);

            return(res);
        }
Esempio n. 23
0
 public void Parse_EmptyLine_ThrowArgumentNullException()
 {
     Assert.Throws <ArgumentNullException>(() => MessageDataEntity.Parse(""));
 }
Esempio n. 24
0
 public void Parse_BadFormatLine_ThrowArgumentNullException(string line)
 {
     Assert.Throws <ArgumentNullException>(() => MessageDataEntity.Parse(line));
 }