public void DefaultIndex()
            {
                ApplicationDataPath path = new ApplicationDataPath("Foo[1].Bar");

                Assert.AreEqual(2, path.Count);
                Assert.AreEqual("Bar", path.Last().Name);
                Assert.IsNull(path.Last().Index);
            }
            public void MatchesOriginal()
            {
                ApplicationDataPath original = new ApplicationDataPath();
                original.Prepend("Bar", 42);
                original.Prepend("Foo", 10);

                ApplicationDataPath copy = new ApplicationDataPath(original);

                Assert.AreEqual(original.Count, copy.Count);
                Assert.AreEqual(original.Last().Name, copy.Last().Name);
                Assert.AreEqual(original.Last().Index, copy.Last().Index);
            }
 public void AppendsToEnd()
 {
     ApplicationDataPath path = new ApplicationDataPath();
     path.Append("Foo", 42);
     path.Append("Bar", 16);
     Assert.AreEqual(16, path.Last().Index);
 }
        /// <summary>
        /// Implements the validation logic for the receiver.
        /// </summary>
        /// <param name="objectToValidate">The object to validate.</param>
        /// <param name="currentTarget">The object on the behalf of which the validation is performed.</param>
        /// <param name="key">The key that identifies the source of objectToValidate.</param>
        /// <param name="validationResults">The validation results to which the outcome of the validation should be stored.</param>
        public override void DoValidate(object objectToValidate, object currentTarget, string key, ValidationResults validationResults)
        {
            if (objectToValidate == null)
            {
                return;
            }

            object[] arr = (object[])objectToValidate;
            Dictionary<string, object>[] items = arr.Length > 0 ? objectToValidate as Dictionary<string, object>[] : new Dictionary<string, object>[0];
            for (int i = 0; i < items.Length; i++)
            {
                Dictionary<string, object> item = items[i];
                ApplicationDataPath path = new ApplicationDataPath(key);
                path.Last().Index = i;
                this.WrappedValidator.DoValidate(item, currentTarget, path.ToString(), validationResults);
            }
        }
 public void PrependsToStart()
 {
     ApplicationDataPath path = new ApplicationDataPath();
     path.Prepend("Foo", 42);
     path.Prepend("Bar", 16);
     Assert.AreEqual(42, path.Last().Index);
 }
            public void TwoLevels()
            {
                ApplicationDataPath path = new ApplicationDataPath("Foo[1].Bar[3]");

                Assert.AreEqual(2, path.Count);
                Assert.AreEqual("Bar", path.Last().Name);
                Assert.AreEqual(3, path.Last().Index);
            }
            public void OneLevelIntegerAsName()
            {
                ApplicationDataPath path = new ApplicationDataPath("10");

                Assert.AreEqual(1, path.Count);
                Assert.AreEqual("10", path.Last().Name);
                Assert.IsNull(path.Last().Index);
            }