public void NoValidators()
        {
            var provider   = new ElementMetadataProviderFeature();
            var attributes = provider.GetMetadata(new NoValidatorsElement());
            var attribute  = Assert.Single(attributes.Attributes);

            var single = Assert.Single(attribute.Validators);

            Assert.IsType <StringValidator>(single);
        }
        public void RequiredValidation()
        {
            var provider   = new ElementMetadataProviderFeature();
            var attributes = provider.GetMetadata(new ContainsRequiredValidator());
            var attribute  = Assert.Single(attributes.Attributes);

            Assert.Collection(
                attribute.Validators,
                t => Assert.IsType <RequiredValidator>(t),
                t => Assert.IsType <StringValidator>(t));
        }
        public void JustUnion()
        {
            var provider   = new ElementMetadataProviderFeature();
            var attributes = provider.GetMetadata(new JustUnionValidator());
            var attribute  = Assert.Single(attributes.Attributes);

            Assert.Collection(
                attribute.Validators,
                t =>
            {
                var union = Assert.IsType <UnionValidator>(t);

                Assert.Collection(
                    union.Validators,
                    v => Assert.IsType <StringValidator>(v),
                    v => Assert.IsType <StringValidator>(v));
            },
                t => Assert.IsType <StringValidator>(t));
        }
        public object CreateWithInstance()
        {
            object o = _provider.GetMetadata(_element);

            return(o); // return the object to make the release build do not optimize it
        }