code: def test_combine_left(self):
      # EVENTS =           [1, 1.02, 1.5, 2.0, 2.03, 2.05, 2.5, 3]
      comb = combine_events(EVENTS, 0.0, "left")
      correct = np.asarray([1, 1.02, 1.5, 2.0, 2.03, 2.05, 2.5, 3])
      self.assertTrue(np.allclose(comb, correct))
      comb = combine_events(EVENTS, 0.01, "left")
      correct = np.asarray([1, 1.02, 1.5, 2.0, 2.03, 2.05, 2.5, 3])
      self.assertTrue(np.allclose(comb, correct))
      comb = combine_events(EVENTS, 0.03, "left")
      correct = np.asarray([1, 1.5, 2, 2.05, 2.5, 3])
      self.assertTrue(np.allclose(comb, correct))
      comb = combine_events(EVENTS, 0.035, "left")
      correct = np.asarray([1, 1.5, 2, 2.05, 2.5, 3])
      self.assertTrue(np.allclose(comb, correct))
      comb = combine_events(EVENTS, 0.05, "left")
      correct = np.asarray([1, 1.5, 2, 2.5, 3])
      self.assertTrue(np.allclose(comb, correct))
  
imports: from __future__ import absolute_import, division, print_function
  import unittest
  from os.path import join
  from madmom.utils import *
  from .None import ACTIVATIONS_PATH, ANNOTATIONS_PATH, AUDIO_PATH, DATA_PATH, DETECTIONS_PATH
  from .test_evaluation_notes import ANNOTATIONS
label_desc: Use image node_id 2 for calling the TestCombineEventsFunction obj's underlying member method code with example usage: obj.test_combine_left() without return types