public void Format_With_Null_Values_In_ValueTuples(string format, bool shouldSucceed) { var addr = new DictionarySourceTests.Address { City = null }; var dict1 = new Dictionary <string, string> { { "dict1key", "dict1 Value" } }; var dict2 = new Dictionary <string, string> { { "dict2key", "dict2 Value" } }; var expected = $"Name: {addr.Person.FirstName} {addr.City?.AreaCode}"; var formatter = GetSmartFormatter(); if (shouldSucceed) { var result = formatter.Format(format, (dict1, dict2, addr)); Assert.That(result, Is.EqualTo(expected)); } else { Assert.That(() => formatter.Format(format, (dict1, dict2, addr)), Throws.Exception.TypeOf(typeof(FormattingException))); } }
public void Format_With_ValueTuples() { var addr = new DictionarySourceTests.Address(); var dict1 = new Dictionary <string, string> { { "dict1key", "dict1 Value" } }; var dict2 = new Dictionary <string, string> { { "dict2key", "dict2 Value" } }; // format for ValueTuples as argument 1 to Smart.Format const string format = "Name: {Person.FirstName} {Person.LastName}\n" + "Dictionaries: {dict1key}, {dict2key}"; var expected = $"Name: {addr.Person.FirstName} {addr.Person.LastName}\n" + $"Dictionaries: {dict1["dict1key"]}, {dict2["dict2key"]}"; var formatter = GetSmartFormatter(); var result = formatter.Format(format, (addr, dict1, dict2)); Assert.AreEqual(expected, result); }
public void Format_With_ValueTuples_2nd_Argument() { var addr = new DictionarySourceTests.Address(); var dict1 = new Dictionary <string, string> { { "dict1key", "dict1 Value" } }; var dict2 = new Dictionary <string, string> { { "dict2key", "dict2 Value" } }; // format for ValueTuples as argument 2 to Smart.Format: // works although unnecessary and leading to argument references in the format string const string format = "Name: {1.Person.FirstName} {1.Person.LastName}\n" + "Dictionaries: {1.dict1key}, {1.dict2key}"; var expected = $"Name: {addr.Person.FirstName} {addr.Person.LastName}\n" + $"Dictionaries: {dict1["dict1key"]}, {dict2["dict2key"]}"; var formatter = GetSmartFormatter(); var result = formatter.Format(format, null !, (addr, dict1, dict2)); Assert.AreEqual(expected, result); }