Nunit TestCase attribute with Jagged Array ? c#

40 views Asked by At

I'm working on a feature where a jagged array is used as a param, i coult not found any information to create a test case using a jagged array.

  static public int[][] jaggedValues()
  {
      int[][] jagged = new int[3][];

      jagged[0] = [1, 1, 1, 0];
      jagged[1] = [0,5,0,1];
      jagged[2] = [2,1,3,10];
      return jagged;
  }
  [TestCaseSource(nameof(jaggedValues))]

How can i do ? Thanks!.

i tried to search for information however i could not found anything useful

2

There are 2 answers

0
stuartd On BEST ANSWER

OK, here's an example for you.

[TestFixture]
internal class JaggedArrayExample {

    [TestCaseSource(typeof(JaggedArrayDataSource), nameof(JaggedArrayDataSource.TestData))]
    public void Demo(int[][] data) {
        Console.WriteLine(data.GetType());
    }
}


internal class JaggedArrayDataSource {
    internal static IEnumerable TestData() {
        yield return Array.Empty<int[]>();
    }
}

Output:

System.Int32[][]
3
Leonardo Sasso On

Thanks a lot, your answer was my guide, finally I changed some pieces of code to readapt it

 [TestCaseSource(nameof(TestSet1))]
  [TestCaseSource(nameof(TestSet2))]
  public void testCodeSignal_matrixElementsSum((int[][] matrix, int expectedResult) td)
  {
      {
          Assert.That(td.expectedResult, Is.EqualTo(_codeSignal.matrixElementsSum(td.matrix)));
      }
  }


     
      internal static IEnumerable<(int[][], int)> TestSet1() 
      {
          int[][] jagged = new int[3][];

          jagged[0] = [1, 1, 1, 0];
          jagged[1] = [0, 5, 0, 1];
          jagged[2] = [2, 1, 3, 10];
          yield return (jagged, 9);
      }


      internal static IEnumerable<(int[][], int)> TestSet2()
      {
          int[][] jagged = new int[3][];

          jagged[0] = [0,1,1,2];
          jagged[1] = [0,5,0,0];
          jagged[2] = [2,0,3,3];
          yield return (jagged,9);
      }