Czesc. Mam male watpliwosci i prosilbym o wyjasnienie ich.
Posiadam:
Obiekt B, ktory jest gleboka kopia Obiektu A.
Zrobilem to przez utworzenie Obiektu B i kopiowanie odpowiednio kazdej wlasciwosci z Obiektu A.
Nastepnie chce w testach jednostkowych sprawdzic czy aby na pewno sie udalo. (Przegladanie debuggera wskazuje, ze tak)
I tutaj powstaje problem. Jak porownac typy referencyjne, gdzie porownuje sie ich referencje, a nie wartosci? Najwiekszym problemem jest lista.
List<Klasa z ktorej wywodzi sie A oraz B> .
Czyli lista mogaca zawierac inne obiekty tej samej klasy, a one z kolei zawieraja kolejne.
Sprawdzanie obiektow polega na przejsciu po kazdej wlasciwosci (od intow, przez tablice itp.) i porownaniu z tymi w drugim obiekcie.
Jesli to cokolwiek zmienia to kod w testach dziala w wiekszosci na refleksjach (wszystko zamyka sie w jednej petli iterujacej po kazdej wlasciwosci
Wpadlem na takie rozwiazanie:
if(ListA.Count == ListaB.Count)
{
for(int i = 0; i < ListaA.Count; i++)
{
if(ListaA[i].ToString() != ListaB[i].ToString())
Assert>False()
}
}
Zastanawiam sie czy takie rozwiazanie jest malo eleganckie i raczej powinienem szukac czegos innego, czy moze byc, bo przeciez dziala.
Jesli ilosc obiektow w liscie sie zgadza oraz ich nazwy[konkretnych obiektow w liscie] to jest OK.
Jesli rozwiazanie jest beznadziejne, a macie jakies pomysly to rowniez prosilbym o rady.
P.S. Wyczytalem o nadpisaniu Equal itp. ale wszystko wydaje sie sprowadzac do tego samego.