public void NumericListCanBeSorted()
{
var sorted = sort.SortNumbers(nums);
Assert.AreEqual(sorted, nums);
}
public List<int> SortNumbers(List<int> nums)
{
List<int> sortedList = new List<int>();
for (int i = 0; i < nums.Count(); i++)
{
for (int j = i + 1; j < nums.Count; j++)
{
if (nums[i] > nums[j])
{
//Swapping values
nums[i] = nums[i] + nums[j];
nums[j] = nums[i] - nums[j];
nums[i] = nums[i] - nums[j];
}
}
sortedList.Add(nums[i]);
}
return sortedList;
}
Result Message: Assert.AreEqual failed.
Expected: <System.Collections.Generic.List`1[System.Int32]>.
Actual :<System.Collections.Generic.List`1[System.Int32]>.
Typy danych oczekiwanych i rzeczywistych są takie same. Wciąż nieudany test. Nie rozumiem, dlaczego? Czy ktoś może mi pomóc mi poznać powód. Co więcej, działa na następującą funkcję.CollectionAssert.AreEquivalent kontra Assert.Equals()
public List<int> SortNumbers(List<int> nums)
{
List<int> sortedList = new List<int>();
for (int i = 0; i < nums.Count(); i++)
{
for (int j = i + 1; j < nums.Count; j++)
{
if (nums[i] > nums[j])
{
//Swapping values
nums[i] = nums[i] + nums[j];
nums[j] = nums[i] - nums[j];
nums[i] = nums[i] - nums[j];
}
}
}
sortedList = nums;
return sortedList;
}
Czy możesz wyjaśnić nieco szczegółowo. Szukam AreEqual. –
@SravanKumar sortedList! = Nums dlatego się nie powiedzie - musisz porównać element po elemencie, a nie dwa obiekty tablicy.Debuguj i spróbuj sprawdzić, czy sortedList == nums w oknie bezpośrednim lub w zegarze. –
Jak działa druga metoda ...? –