code: def test_values(self):
      self.assertTrue(self.processor.fps == 50)
      self.assertTrue(np.allclose(self.processor.num_beats, [3, 4]))
      path, prob = self.processor.hmm.viterbi(sample_pattern_features)
      self.assertTrue(
          np.allclose(
              path[:12],
              [
                  5573,
                  5574,
                  5575,
                  5576,
                  6757,
                  6758,
                  6759,
                  6760,
                  6761,
                  6762,
                  6763,
                  6764,
              ],
          )
      )
      self.assertTrue(np.allclose(prob, -468.8014))
      patterns = self.processor.st.state_patterns[path]
      self.assertTrue(
          np.allclose(patterns, np.ones(len(sample_pattern_features)))
      )
      positions = self.processor.st.state_positions[path]
      self.assertTrue(
          np.allclose(
              positions[:6],
              [
                  1.76470588,
                  1.82352944,
                  1.88235296,
                  1.94117648,
                  2,
                  2.0588236,
              ],
          )
      )
  
imports: from __future__ import absolute_import, division, print_function
  import unittest
  from os.path import join
  from madmom.ml.hmm import HiddenMarkovModel
  from madmom.audio.chroma import CLPChroma
  from madmom.features import Activations
  from madmom.features.downbeats import *
  from madmom.models import PATTERNS_BALLROOM
  from .None import ACTIVATIONS_PATH, ANNOTATIONS_PATH, AUDIO_PATH, DETECTIONS_PATH
  from .test_utils import DETECTION_FILES
label_desc: Use image node_id 3 for calling the TestPatternTrackingProcessorClass obj's underlying member method code with example usage: obj.test_values() without return types