Exemplo n.º 1
0
        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)));
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }