public void Weave_AllByLabelWithTestClassFormattableAndFallbackAsGivenToFormattedValue_ResultAsExpected(String flb, String fmt1, String fmt2, String fmt3, String expected, params Object[] args) { this.options.Fallback = flb; this.tokens = new List <BaseToken>() { new HoleToken(0, 0, new StringBuilder(fmt1)), new TextToken(0, new StringBuilder("txtA")), new HoleToken(0, 1, new StringBuilder(fmt2)), new TextToken(0, new StringBuilder("txtB")), new HoleToken(0, 2, new StringBuilder(fmt3)), new TextToken(0, new StringBuilder("txtC")), }; List <Object> helper = new List <Object>(); foreach (Object arg in args) { helper.Add(new TestClassFormattable(arg)); } this.arguments = helper.ToArray(); TemplateWeaver.Weave(this.options, this.tokens, this.output, this.arguments); Assert.That(this.output.ToString(), Is.EqualTo(expected)); }
public void Weave_GetFormattedValueHandlesException_ResultAsExpected() { this.tokens = new List <BaseToken>() { new HoleToken(0, 0, new StringBuilder("{label}")), }; this.arguments = new Object[] { new TestClassWithException("Value") }; TemplateWeaver.Weave(this.options, this.tokens, this.output, this.arguments); Assert.That(this.output.ToString(), Is.EqualTo("[{label} => FormatException: \"Value => TEST FORMAT EXCEPTION\"]")); }
public void Weave_AllByLabelFallbackArgumentsLiningFormatAsGivenToStringifyValue_ResultAsExpected(String flb, String fmt1, String fmt2, String fmt3, String expected, params Object[] args) { this.options.Fallback = flb; this.tokens = new List <BaseToken>() { new HoleToken(0, 0, new StringBuilder(fmt1)), new TextToken(0, new StringBuilder("txtA")), new HoleToken(0, 1, new StringBuilder(fmt2)), new TextToken(0, new StringBuilder("txtB")), new HoleToken(0, 2, new StringBuilder(fmt3)), new TextToken(0, new StringBuilder("txtC")), }; this.arguments = args; TemplateWeaver.Weave(this.options, this.tokens, this.output, this.arguments); Assert.That(this.output.ToString(), Is.EqualTo(expected)); }
public void Weave_AllByIndexWithTestClassCustomFormatterAndFallbackAsGivenToFormattedValue_ResultAsExpected(String flb, String fmt1, String fmt2, String fmt3, String expected, params Object[] args) { this.options.Fallback = flb; this.options.Provider = new TestClassCustomFormatter(); this.tokens = new List <BaseToken>() { new HoleToken(0, -1, new StringBuilder(fmt1)), new TextToken(0, new StringBuilder("txtA")), new HoleToken(0, -1, new StringBuilder(fmt2)), new TextToken(0, new StringBuilder("txtB")), new HoleToken(0, -1, new StringBuilder(fmt3)), new TextToken(0, new StringBuilder("txtC")), }; this.arguments = args; TemplateWeaver.Weave(this.options, this.tokens, this.output, this.arguments); Assert.That(this.output.ToString(), Is.EqualTo(expected)); }
/// <summary> /// Formats the list of <paramref name="arguments"/> into the <paramref name="format"/> string using /// given <paramref name="options"/>. /// </summary> /// <remarks> /// This method formats the list of <paramref name="arguments"/> into the <paramref name="format"/> /// string using given <paramref name="options"/>. /// </remarks> /// <param name="discard"> /// This parameter is only for internal handling and tells the method to resolve relation assignments /// or not. /// </param> /// <param name="options"> /// An instance of class <see cref="Options"/> with detailed formatting instructions. /// </param> /// <param name="relations"> /// When this method returns, this parameter contains a list of Label-Value relations consisting /// of the labels taken from <paramref name="format"/> and the <paramref name="arguments"/> as /// their values. /// </param> /// <param name="format"> /// A string containing formatting instructions, either for index-based formatting, like /// <c>"{0}, {1}, ..."</c>, or for template-based formatting, like <c>"{name1}, {name2}, ..."</c>). /// </param> /// <param name="arguments"> /// The optional list of arguments to be used. /// </param> /// <returns> /// A copy of <paramref name="format"/> with the format elements replaced by the string representation /// of the corresponding objects in <paramref name="arguments"/>. /// </returns> private static String Format(Boolean discard, Options options, out IArgumentRelations relations, String format, params Object[] arguments) { relations = RelationsAssigner.Default; if (format == null || format.Length == 0) { return(String.Empty); } StringBuilder output = new StringBuilder(512); IEnumerable <BaseToken> tokens = TemplateParser.Parse(format); arguments = arguments.ExpandArguments(); TemplateWeaver.Weave(options, tokens, output, arguments); if (!discard) { relations = RelationsAssigner.Assign(tokens, arguments); } return(Template.Truncate(options, output).ToString()); }
public void Weave_ArgumentsIsNull_ThrowsNothing() { Assert.That(() => TemplateWeaver.Weave(this.options, this.tokens, this.output, null), Throws.Nothing); }
public void Weave_TokensIsEmpty_ThrowsNothing() { Assert.That(() => TemplateWeaver.Weave(this.options, new List <BaseToken>(), this.output, this.arguments), Throws.Nothing); }