code: def test_values(self):
      # no tempi should return perfect score
      scores = tempo_evaluation([], [])
      self.assertEqual(scores, (1, True, True))
      # no detections should return worst score
      scores = tempo_evaluation([], ANNOTATIONS)
      self.assertEqual(scores, (0, False, False))
      # no annotations should return worst score
      scores = tempo_evaluation(DETECTIONS, np.zeros(0))
      self.assertEqual(scores, (0, False, False))
      # normal calculation
      scores = tempo_evaluation(DETECTIONS, ANNOTATIONS)
      self.assertEqual(scores, (0.3, True, False))
      # uniform strength calculation
      scores = tempo_evaluation(DETECTIONS, ANN_TEMPI)
      self.assertEqual(scores, (0.5, True, False))
  
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 3 for calling the TestTempoEvaluationFunction obj's underlying member method code with example usage: obj.test_values() without return types