docstr: Sanity check length and columns of function benchmarks
docstr_tok: ["Sanity","check","length","and","columns","of","function","benchmarks"]
code: def test_func_benchmarks_data(self) -> None:
      """Sanity check length and columns of function benchmarks"""
      func_benchmarks = benchmark.FuncBenchmarks()
      func_benchmarks.run()
      expected_n_rows = len(benchmark.FuncBenchmarks.UNARY)
      expected_n_rows += len(benchmark.FuncBenchmarks.BINARY)
      expected_n_rows += len(benchmark.FuncBenchmarks.LAYERS)
      n_rows = func_benchmarks.df.shape[0]
      self.assertEqual(
          n_rows,
          expected_n_rows,
          msg=f"function benchmarks {n_rows} rows. Expected {expected_n_rows}",
      )
      self.assertGreater(
          func_benchmarks.df["total abs error"].sum(),
          0,
          msg="total abs error should be greater than 0",
      )
      self.assertTrue(
          all(func_benchmarks.df["runtime"] > 0),
          msg="runtime is less than or equal to zero",
      )
      self.assertTrue(
          all(func_benchmarks.df["runtime crypten"] > 0),
          msg="crypten runtime is less than or equal to zero",
      )
  
file_path: CrypTen/test/test_benchmark.py
imports: import unittest
  import crypten
label_desc: Use image node_id 4 for calling the TestBenchmark obj's underlying member method code with example usage: obj.test_func_benchmarks_data() without return types