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); }
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; } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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)); }
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); }
public void Parse_EmptyLine_ThrowArgumentNullException() { Assert.Throws <ArgumentNullException>(() => MessageDataEntity.Parse("")); }
public void Parse_BadFormatLine_ThrowArgumentNullException(string line) { Assert.Throws <ArgumentNullException>(() => MessageDataEntity.Parse(line)); }