Example #1
0
        public static TypeAnalysis <T> Analyze()
        {
            TypeAnalysis <T> analysis = new TypeAnalysis <T>();

            AnalyzeEquals(analysis);
            AnalyzeGetHashCode(analysis);
            AnalyzeEqualityOperator(analysis);
            AnalyzeInequalityOperator(analysis);
            AnalyzeEquatable(analysis);
            AnalyzeSealed(analysis);

            return(analysis);
        }
Example #2
0
        public EqualityTester(T targetObject)
        {
            this.TargetObject = targetObject;
            this.Analysis     = TypeAnalysis <T> .Analyze();

            this.Rules.AddRange(this.Analysis.TypeLevelRules);

            if (!typeof(T).IsValueType)
            {
                this.Rules.AddRange(this.Analysis.GetNotEqualRules(TargetObject, default(T), "inequality to null"));
                this.Rules.AddRange(this.Analysis.GetEqualityOfTwoNulls());
            }
        }
Example #3
0
 private static void AnalyzeSealed(TypeAnalysis <T> analysis)
 {
     analysis.Rules.Add(new Rules.IsTypeSealed <T>());
 }
Example #4
0
 private static void AnalyzeEquatable(TypeAnalysis <T> analysis)
 {
     Rules.ImplementsIEquatable <T> rule = new Rules.ImplementsIEquatable <T>();
     analysis.StrongEqualsMethod = rule.TryGetTargetMethod();
     analysis.Rules.Add(rule);
 }
Example #5
0
 private static void AnalyzeInequalityOperator(TypeAnalysis <T> analysis)
 {
     Rules.ImplementsMethod <T> rule = new Rules.OverloadsInequalityOperator <T>();
     analysis.InequalityOperator = rule.TryGetTargetMethod();
     analysis.Rules.Add(rule);
 }
Example #6
0
 private static void AnalyzeGetHashCode(TypeAnalysis <T> analysis)
 {
     Rules.ImplementsMethod <T> rule = new Rules.OverridesGetHashCode <T>();
     analysis.GetHashCodeMethod = rule.TryGetTargetMethod();
     analysis.Rules.Add(rule);
 }
Example #7
0
 private static void AnalyzeEquals(TypeAnalysis <T> analysis)
 {
     Rules.ImplementsMethod <T> rule = new Rules.OverridesEquals <T>();
     analysis.EqualsMethod = rule.TryGetTargetMethod();
     analysis.Rules.Add(rule);
 }