public void Parse_should_handle_unescaped_dollar_sign(string text, string canonical)
        {
            // gets doubled in the canonical representation
            var f = PropertyProviderFormat.Parse(text);

            Assert.Equal(canonical, f.ToString());
        }
        public void Format_should_fill_nominal()
        {
            var f  = PropertyProviderFormat.Parse("Hello, ${planet}");
            var pp = PropertyProvider.FromValue(new {
                planet = "Phazon",
            });

            Assert.Equal("Hello, Phazon", f.Format(pp));
        }
        public void Format_should_invoke_delegates()
        {
            var           f     = PropertyProviderFormat.Parse("Hello, ${planet}");
            Func <string> thunk = () => "Phazon";
            var           pp    = PropertyProvider.FromValue(new {
                planet = thunk,
            });

            Assert.Equal("Hello, Phazon", f.Format(pp));
        }
        public void Format_should_invoke_delegates_with_arg()
        {
            var f = PropertyProviderFormat.Parse("Hello, ${Planet}");
            Func <string, string> thunk2 = k => (k + " Phazon");
            var pp = PropertyProvider.FromValue(new {
                planet = thunk2,
            });

            Assert.Equal("Hello, Planet Phazon", f.Format(pp));
        }
        public void TryParse_should_return_false_on_malformed(string text)
        {
            PropertyProviderFormat s;

            Assert.False(PropertyProviderFormat.TryParse(text, out s));
        }
        public void Parse_should_escape_double_dollar()
        {
            var f = PropertyProviderFormat.Parse("$$");

            Assert.Equal("$$", f.ToString());
        }
        public void Parse_should_handle_inline_expansions(string text, string id)
        {
            var f = PropertyProviderFormat.Parse(text);

            Assert.Equal("${" + id + "}", f.ToString());
        }
        public void Parse_should_handle_expansions(string text)
        {
            var f = PropertyProviderFormat.Parse(text);

            Assert.Equal("${expr} literal", f.ToString());
        }
        public void Parse_should_handle_literal_nominal()
        {
            var f = PropertyProviderFormat.Parse("just a literal");

            Assert.Equal("just a literal", f.ToString());
        }