code: def test_values(self):
      # 2 beats, intervals 1 to 4
      bss = BarStateSpace(2, 1, 4)
      self.assertTrue(bss.num_beats == 2)
      self.assertTrue(bss.num_states == 20)
      # self.assertTrue(np.allclose(bss.intervals, [1, 2, 3, 4]))
      self.assertTrue(
          np.allclose(
              bss.state_positions,
              [
                  0,
                  0,
                  0.5,
                  0,
                  1.0 / 3,
                  2.0 / 3,
                  0,
                  0.25,
                  0.5,
                  0.75,
                  1,
                  1,
                  1.5,
                  1,
                  4.0 / 3,
                  5.0 / 3,
                  1,
                  1.25,
                  1.5,
                  1.75,
              ],
          )
      )
      self.assertTrue(
          np.allclose(
              bss.state_intervals,
              [
                  1,
                  2,
                  2,
                  3,
                  3,
                  3,
                  4,
                  4,
                  4,
                  4,
                  1,
                  2,
                  2,
                  3,
                  3,
                  3,
                  4,
                  4,
                  4,
                  4,
              ],
          )
      )
      self.assertTrue(
          np.allclose(
              bss.first_states, [[0, 1, 3, 6], [10, 11, 13, 16]]
          )
      )
      self.assertTrue(
          np.allclose(bss.last_states, [[0, 2, 5, 9], [10, 12, 15, 19]])
      )
      # other values: 1 beat, intervals 2 to 6
      bss = BarStateSpace(1, 2, 6)
      self.assertTrue(bss.num_beats == 1)
      self.assertTrue(bss.num_states == 20)
      # self.assertTrue(np.allclose(bss.intervals, [2, 3, 4, 5, 6]))
      self.assertTrue(
          np.allclose(
              bss.state_positions,
              [
                  0,
                  0.5,
                  0,
                  1.0 / 3,
                  2.0 / 3,
                  0,
                  0.25,
                  0.5,
                  0.75,
                  0,
                  0.2,
                  0.4,
                  0.6,
                  0.8,
                  0,
                  1.0 / 6,
                  2.0 / 6,
                  0.5,
                  4.0 / 6,
                  5.0 / 6,
              ],
          )
      )
      self.assertTrue(
          np.allclose(
              bss.state_intervals,
              [
                  2,
                  2,
                  3,
                  3,
                  3,
                  4,
                  4,
                  4,
                  4,
                  5,
                  5,
                  5,
                  5,
                  5,
                  6,
                  6,
                  6,
                  6,
                  6,
                  6,
              ],
          )
      )
      self.assertTrue(np.allclose(bss.first_states, [[0, 2, 5, 9, 14]]))
      self.assertTrue(np.allclose(bss.last_states, [[1, 4, 8, 13, 19]]))
  
imports: from __future__ import absolute_import, division, print_function
  import unittest
  from madmom.features.beats_hmm import *
label_desc: Use image node_id 2 for calling the TestBarStateSpaceClass obj's underlying member method code with example usage: obj.test_values() without return types