Esempio n. 1
0
        /// <inheritdoc />
        protected override IBindingResolverChain AddToChain(IBindingResolverChain resolver, string property)
        {
            resolver = resolver.Extend(new PartLinkShortCut());

            if (property == nameof(IIdentity.Identifier))
            {
                return(resolver.Extend(new IdentifierShortCut()));
            }

            var wpResolver = resolver as WorkplanResolver;

            if (wpResolver == null)
            {
                return(base.AddToChain(resolver, property));
            }

            var match = _wpOperationRegex.Match(property);

            if (!match.Success)
            {
                return(base.AddToChain(resolver, property));
            }

            var argument     = match.Groups["name"].Value;
            var stepResolver = new StepResolver(argument);

            return(resolver.Append(stepResolver));
        }
        public void CallAppendAppendsItemToChain(int appendCount)
        {
            // Arrange
            var data = CreateData();

            for (var i = 0; i < appendCount; ++i)
            {
                _resolver.Append(new ReflectionResolver(nameof(SomeComplexClass.SubClass)));
            }

            // Act
            var value = _resolver.Resolve(data) as SomeComplexClass;

            // Assert
            Assert.NotNull(value);
            Assert.AreEqual(appendCount + 1, value.Value);
            Assert.AreEqual(appendCount + 1, CountChainLinks(_resolver));
        }