code: def test_errors(self):
      # detections / annotations must not be None
      with self.assertRaises(TypeError):
          tempo_evaluation(None, ANN_TEMPI)
      with self.assertRaises(TypeError):
          tempo_evaluation(DETECTIONS, None)
      # tolerance must be > 0
      with self.assertRaises(ValueError):
          tempo_evaluation(DETECTIONS, ANNOTATIONS, 0)
      # tolerance must be correct type
      with self.assertRaises(TypeError):
          tempo_evaluation(DETECTIONS, ANN_TEMPI, None)
      with self.assertRaises(TypeError):
          tempo_evaluation(DETECTIONS, ANN_TEMPI, [])
      with self.assertRaises(TypeError):
          tempo_evaluation(DETECTIONS, ANN_TEMPI, {})
  
imports: from __future__ import absolute_import, division, print_function
  import math
  import unittest
  from madmom.evaluation.tempo import *
  from .None import ANNOTATIONS_PATH, DETECTIONS_PATH
label_desc: Use image node_id 2 for calling the TestTempoEvaluationFunction obj's underlying member method code with example usage: obj.test_errors() without return types