suma - saber el tamaño de una matriz en c#
Asegúrate de que las matrices son iguales en el marco de prueba de Visual Studio 2008 (4)
¿Existe una forma fácil de verificar en una prueba unitaria que dos matrices son iguales (es decir, tienen el mismo número de elementos y cada elemento es el mismo?).
En Java, usaría assertArrayEquals (foo, bar);
, pero parece que no hay equivalente para C #. Intenté Assert.AreEqual(new string[]{"a", "b"}, MyFunc("ab"));
, pero aunque la función devuelve una matriz con "a", "b", el cheque sigue fallando
Esto es usando Visual Studio 2008 Team Suite, con el marco de prueba de unidad incorporado.
Class1.cs:
namespace ClassLibrary1
{
public class Class1
{
Array arr1 = new[] { 1, 2, 3, 4, 5 };
public Array getArray()
{
return arr1;
}
}
}
ArrayEqualTest.cs:
[TestMethod()]
public void getArrayTest()
{
Class1 target = new Class1();
Array expected = new []{1,2,3,4,5};
Array actual;
actual = target.getArray();
CollectionAssert.AreEqual(expected, actual);
//Assert.IsTrue(expected.S actual, "is the test results");
}
Prueba de éxito, encontró el error:
CollectionAssert.AreEqual failed. (Element at index 3 do not match.)
En .NET 3.5, tal vez considere Assert.IsTrue(foo.SequenceEqual(bar));
Sin embargo, no le dirá a qué índice difiere.
Es CollectionAssert.AreEqual
, consulte también la documentación de CollectionAssert .
Ok aquí hay una forma un poco más larga de hacerlo ...
static void Main(string[] args)
{
var arr1 = new[] { 1, 2, 3, 4, 5 };
var arr2 = new[] { 1, 2, 4, 4, 5 };
Console.WriteLine("Arrays are equal: {0}", equals(arr1, arr2));
}
private static bool equals(IEnumerable arr1, IEnumerable arr2)
{
var enumerable1 = arr1.OfType<object>();
var enumerable2 = arr2.OfType<object>();
if (enumerable1.Count() != enumerable2.Count())
return false;
var iter1 = enumerable1.GetEnumerator();
var iter2 = enumerable2.GetEnumerator();
while (iter1.MoveNext() && iter2.MoveNext())
{
if (!iter1.Current.Equals(iter2.Current))
return false;
}
return true;
}