Ejemplo n.º 1
0
        public bool Equals(ISpecimenBuilder x, ISpecimenBuilder y)
        {
            var fx = x as FilteringSpecimenBuilder;
            var fy = y as FilteringSpecimenBuilder;

            if (fx != null &&
                fy != null &&
                this.specificationComparer.Equals(fx.Specification, fy.Specification))
            {
                return(true);
            }

            if (x is CompositeSpecimenBuilder && y is CompositeSpecimenBuilder)
            {
                return(true);
            }

            var gx = x as NoSpecimenOutputGuard;
            var gy = y as NoSpecimenOutputGuard;

            if (gx != null &&
                gy != null &&
                this.specificationComparer.Equals(gx.Specification, gy.Specification))
            {
                return(true);
            }

            var sirx = x as SeedIgnoringRelay;
            var siry = y as SeedIgnoringRelay;

            if (sirx != null && siry != null)
            {
                return(true);
            }

            var mix = x as MethodInvoker;
            var miy = y as MethodInvoker;

            if (mix != null &&
                miy != null &&
                this.queryComparer.Equals(mix.Query, miy.Query))
            {
                return(true);
            }

            var omx = x as Omitter;
            var omy = y as Omitter;

            if (omx != null &&
                omy != null &&
                this.specificationComparer.Equals(omx.Specification, omy.Specification))
            {
                return(true);
            }

            var dx = x as DelegatingSpecimenBuilder;
            var dy = y as DelegatingSpecimenBuilder;

            if (dx != null &&
                dy != null &&
                object.Equals(dx.OnCreate, dy.OnCreate))
            {
                return(true);
            }

            if (GenericComparer.CreateFromTemplate(x).Equals(y))
            {
                return(true);
            }

            return(EqualityComparer <ISpecimenBuilder> .Default.Equals(x, y));
        }
Ejemplo n.º 2
0
        public bool Equals(ISpecimenBuilder x, ISpecimenBuilder y)
        {
            if (x is FilteringSpecimenBuilder fx &&
                y is FilteringSpecimenBuilder fy &&
                this.specificationComparer.Equals(fx.Specification, fy.Specification))
            {
                return(true);
            }

            if (x is CompositeSpecimenBuilder && y is CompositeSpecimenBuilder)
            {
                return(true);
            }

            if (x is NoSpecimenOutputGuard gx &&
                y is NoSpecimenOutputGuard gy &&
                this.specificationComparer.Equals(gx.Specification, gy.Specification))
            {
                return(true);
            }

            if (x is SeedIgnoringRelay && y is SeedIgnoringRelay)
            {
                return(true);
            }

            if (x is MethodInvoker mix &&
                y is MethodInvoker miy &&
                this.queryComparer.Equals(mix.Query, miy.Query))
            {
                return(true);
            }

            if (x is Omitter omx &&
                y is Omitter omy &&
                this.specificationComparer.Equals(omx.Specification, omy.Specification))
            {
                return(true);
            }

            if (x is DelegatingSpecimenBuilder dx &&
                y is DelegatingSpecimenBuilder dy &&
                object.Equals(dx.OnCreate, dy.OnCreate))
            {
                return(true);
            }

            if (x is Postprocessor px &&
                y is Postprocessor py &&
                this.commandComparer.Equals(px.Command, py.Command) &&
                this.specificationComparer.Equals(px.Specification, py.Specification))
            {
                return(true);
            }

            if (GenericComparer.CreateFromTemplate(x).Equals(y))
            {
                return(true);
            }

            return(EqualityComparer <ISpecimenBuilder> .Default.Equals(x, y));
        }