public override bool Equals(object obj) { if (obj == null) { return(false); } if (this.GetType() != obj.GetType()) { return(false); } Nugget other = (Nugget)obj; // Compare non-array members. if (MsgId != other.MsgId || // NB: the operator==() on string objects handles null value on either side just fine. Comment != other.Comment) { return(false); } // Compare arrays. if ((FormatItems == null) != (other.FormatItems == null) || (FormatItems != null && !FormatItems.SequenceEqual(other.FormatItems))) { return(false); } return(true); }
public static async Task SendEmailAsync_MessageHasExpectedFormatItems() { object[] formatItems = { 1, "2" }; var service = new MockEmailService(); var template = new EmailMessageTemplate(new EmailAddressTemplate("*****@*****.**")); await service.SendEmailAsync(template, new EmailAddress("*****@*****.**"), formatItems); service.SentMessage.HtmlBody !.FormatItems.Should().BeEquivalentTo(formatItems); service.SentMessage.TextBody !.FormatItems.Should().BeEquivalentTo(formatItems); }
private static int GetValidArgumentsCount(FormatItems formatItems) { if (formatItems == null) return -1; IWithArguments withArguments = formatItems.ParentMethodCall; if (withArguments == null) return -1; int argsCount = withArguments.Args.Count; if (argsCount > 0) { if (PlugIn1.IsPrimitiveExpressionArg(withArguments.Args[0])) return argsCount; else return argsCount - 1; // skip IFormatter argument... } return -1; }
public FormatItem(FormatItems parent, int id, IExpression argument) { Argument = argument; Parent = parent; Id = id; }
public int CalculateCustomFormatScore(List <CustomFormat> formats) { return(FormatItems.Where(x => formats.Contains(x.Format)).Sum(x => x.Score)); }
/// <summary> /// Parses the text in the specified PrimitiveExpression, collecting and returning a dictionary of FormatItems, indexed by the format item number. /// </summary> public static FormatItems GetFormatItems(IPrimitiveExpression primitiveExpression) { FormatItems formatItems = new FormatItems(); formatItems.ParentMethodCall = GetValidMethodCallExpression(primitiveExpression.Parent) as IWithArguments; int argumentCount = formatItems.ParentMethodCall.Args.Count; formatItems.PrimitiveExpression = primitiveExpression; if (primitiveExpression == null) return formatItems; string text = primitiveExpression.Value as string; if (String.IsNullOrEmpty(text)) return formatItems; bool lastCharWasOpenBrace = false; bool insideFormatItem = false; bool collectingFormatItemNumber = false; string numberStr = String.Empty; int lastOpenBraceOffset = 0; int length = 0; for (int i = 0; i < text.Length; i++) { char thisChar = text[i]; if (thisChar == '{') { lastCharWasOpenBrace = !lastCharWasOpenBrace; lastOpenBraceOffset = i; } else if (thisChar == '}') { if (insideFormatItem) { insideFormatItem = false; if (numberStr != String.Empty) { int number = int.Parse(numberStr); const int INT_CountForBraceDelimeters = 2; int argumentIndex = number + 1; IExpression argument = null; if (argumentIndex < argumentCount) argument = formatItems.ParentMethodCall.Args[argumentIndex]; if (!formatItems.HasFormatItem(number)) formatItems.AddFormatItem(number, argument); formatItems[number].AddPosition(lastOpenBraceOffset, length + INT_CountForBraceDelimeters); } } } else if (lastCharWasOpenBrace) { length = 0; lastCharWasOpenBrace = false; insideFormatItem = true; collectingFormatItemNumber = true; numberStr = String.Empty; if (char.IsDigit(thisChar)) numberStr = thisChar.ToString(); // First digit... } else if (collectingFormatItemNumber) { if (char.IsDigit(thisChar)) numberStr += thisChar.ToString(); // Subsequent digit... else collectingFormatItemNumber = false; } length++; } return formatItems; }