public void HashCanBeUsedToDeclareStatementsInsteadOfOutputExpressions()
 {
     var viewFolder = new InMemoryViewFolder { { "bindings.xml", "<bindings><element name='foo'><start>#bar;</start><end>#quux;</end></element></bindings>" } };
     var provider = new DefaultBindingProvider();
     var bindings = provider.GetBindings(viewFolder).ToList();
     Assert.That(bindings[0].Phrases.All(phrase => phrase.Type == BindingPhrase.PhraseType.Statement));
 }
        public void MissingFileDoesNotCauseException()
        {
            var viewFolder = new InMemoryViewFolder();
            var provider = new DefaultBindingProvider();
            var bindings = provider.GetBindings(viewFolder).ToList();

            Assert.That(bindings.Count, Is.EqualTo(0));
        }
        public void BindingTableCanLoadFromViewFolder()
        {
            var viewFolder = new InMemoryViewFolder { { "bindings.xml", "<bindings><element name='foo'>bar</element></bindings>" } };
            var provider = new DefaultBindingProvider();
            var bindings = provider.GetBindings(viewFolder).ToList();

            Assert.That(bindings.Count, Is.EqualTo(1));
            Assert.That(bindings[0].ElementName, Is.EqualTo("foo"));
            Assert.That(bindings[0].Nodes.Count, Is.EqualTo(1));
            Assert.That(((BindingLiteral)bindings[0].Nodes[0]).Text, Is.EqualTo("bar"));
        }
        public void TwoPartBindingsAreRecognized()
        {
            var viewFolder = new InMemoryViewFolder { { "bindings.xml", "<bindings><element name='foo'><start>bar</start><end>quux</end></element></bindings>" } };
            var provider = new DefaultBindingProvider();
            var bindings = provider.GetBindings(viewFolder).ToList();

            Assert.That(bindings.Count, Is.EqualTo(1));
            Assert.That(bindings[0].ElementName, Is.EqualTo("foo"));
            Assert.That(bindings[0].Phrases.Count(), Is.EqualTo(2));
            Assert.That(bindings[0].Phrases.First().Nodes.Count, Is.EqualTo(1));
            Assert.That(bindings[0].Phrases.Last().Nodes.Count, Is.EqualTo(1));
            Assert.That(((BindingLiteral)bindings[0].Phrases.First().Nodes[0]).Text, Is.EqualTo("bar"));
            Assert.That(((BindingLiteral)bindings[0].Phrases.Last().Nodes[0]).Text, Is.EqualTo("quux"));
            Assert.That(bindings[0].Phrases.All(phrase => phrase.Type == BindingPhrase.PhraseType.Expression));
        }
 public void ChildReferenceMayNotAppearInStartPhrase()
 {
     var viewFolder = new InMemoryViewFolder { { "bindings.xml", "<bindings><element name='foo'><start>child::*</start><end>foo</end></element></bindings>" } };
     var provider = new DefaultBindingProvider();
     provider.GetBindings(viewFolder).ToList();
 }
 public void ChildReferenceMayNotAppearInStartPhrase()
 {
     var viewFolder = new InMemoryViewFolder { { "bindings.xml", "<bindings><element name='foo'><start>child::*</start><end>foo</end></element></bindings>" } };
     var provider = new DefaultBindingProvider();
     Assert.That(() => provider.GetBindings(viewFolder).ToList(), Throws.TypeOf<CompilerException>());
 }