public void No_placeholders()
        {
            var c = new Chinook();
            var p = new PlaceholderParser();
            var d = p.Parse(c, "Hello, world!");

            Assert.AreEqual(0, d.Count);
        }
        public void Invalid_path_placeholder()
        {
            var c = new Chinook();
            var p = new PlaceholderParser();
            var d = p.Parse(c, "Hello, [Track.Album.Name]!");

            Assert.AreEqual(0, d.Count);
        }
        public void Non_existant_placeholder()
        {
            var c = new Chinook();
            var p = new PlaceholderParser();
            var d = p.Parse(c, "Hello, [Does.Not.Exist]!");

            Assert.AreEqual(0, d.Count);
        }
        public void One_placeholder()
        {
            var c = new Chinook();
            var p = new PlaceholderParser();
            var d = p.Parse(c, "Hello, [Track.Name]!");

            Assert.AreEqual(1, d.Count);
            Assert.IsTrue(d.ContainsKey("[Track.Name]"));
            Assert.AreEqual(new FieldPath(c.Track["Name"]), d["[Track.Name]"]);
        }
        public void Depth2_placeholder()
        {
            var c = new Chinook();
            var p = new PlaceholderParser();
            var d = p.Parse(c, "Hello, [Track.AlbumId.Title]!");

            Assert.AreEqual(1, d.Count);
            Assert.IsTrue(d.ContainsKey("[Track.AlbumId.Title]"));
            Assert.AreEqual(new FieldPath(c.Track["AlbumId"], c.Album["Title"]), d["[Track.AlbumId.Title]"]);
        }