2016-03-24 13 views
0

Microsoft.TestApi'u kullanarak 2 nesneyi karşılaştırmaya çalışıyorum. Sorun, enum değerleri arasındaki farkları toplamadığıdır.Microsoft.TestApi Nesne Karşılaştırması enum farklarını tanıma

Aşağıdaki örnekte, enum değerleri farklı olduğu için testin geçmesini beklerdim, ancak TestApi karşılaştırması hiçbir uyumsuzluğu döndürmez.

Enum değeri farklılıklarını nasıl algılayabilirim?

Kod

public class ObjectComparer 
{ 
    public bool AreDifferent(Holiday h1, Holiday h2) 
    { 
     var comparer = new ObjectGraphComparer(); 

     var factory = new PublicPropertyObjectGraphFactory(); 
     var sourceGraph = factory.CreateObjectGraph(h1); 
     var targetGraph = factory.CreateObjectGraph(h2); 

     IEnumerable<ObjectComparisonMismatch> result; 
     comparer.Compare(sourceGraph, targetGraph, out result); 

     return result.Any(); 
    } 
} 

public class Holiday 
{ 
    public Day Day { get; set; } 
} 

public enum Day 
{ 
    Monday, 
    Tuesday, 
    Wednesday, 
    Thursday, 
    Friday 
} 

Testi

[TestMethod] 
public void ShouldDetectDifferentEnumValues() 
{ 
    var h1 = new Holiday {Day = Day.Monday}; 
    var h2 = new Holiday {Day = Day.Tuesday}; 
    var comparer = new ObjectComparer(); 

    var result = comparer.AreDifferent(h1, h2); 

    Assert.IsTrue(result); 
} 
+0

Eğer 'ObjectGraphComparer.compare()' enum türlerine bakar olmadığını görmek için 'Microsoft.TestApi' kaynak kodunu kontrol ettiniz mi? – Brad

cevap

1

Ben kodunuzu çoğaltılmış ve kaynak kodunda küçük bir araştırma yaptık. Arkadaşım şansın yok, enumlar karşılaştırılmamış.

kod

codeplex bulunabilir, ilgili kısmı bu

// compare primitives, strings, datatimes, guids 
if (leftNode.ObjectType.IsPrimitive || 
      leftNode.ObjectType == typeof(string) || 
      leftNode.ObjectType == typeof(DateTime) || 
      leftNode.ObjectType == typeof(Guid)) 
+0

Teşekkürler, bunun yerine compare-net-object kütüphanesini kullanmayı düşüneceğim. https://github.com/GregFinzer/Compare-Net-Objects – ChaoticNadirs