code: def testSteps(self):
      pe = polyphony_lib.PolyphonicEvent
      poly_events = [
          # step 0
          pe(pe.NEW_NOTE, 60),
          pe(pe.NEW_NOTE, 64),
          pe(pe.STEP_END, None),
          # step 1
          pe(pe.CONTINUED_NOTE, 60),
          pe(pe.CONTINUED_NOTE, 64),
          pe(pe.STEP_END, None),
          pe(pe.END, None),
      ]
  
      poly_seq = polyphony_lib.PolyphonicSequence(steps_per_quarter=1)
      for event in poly_events:
          poly_seq.append(event)
      self.assertListEqual([0, 0, 0, 0, 1, 1, 1, 2], poly_seq.steps)
  
      poly_seq = polyphony_lib.PolyphonicSequence(
          steps_per_quarter=1, start_step=2
      )
      for event in poly_events:
          poly_seq.append(event)
      self.assertListEqual([2, 2, 2, 2, 3, 3, 3, 4], poly_seq.steps)
  
imports: import copy
  from magenta.common import testing_lib
  from magenta.models.polyphony_rnn import polyphony_lib
  from note_seq import sequences_lib
  from note_seq import testing_lib
  from note_seq.protobuf import music_pb2
  import tensorflow.compat.v1
label_desc: Use image node_id 18 for calling the PolyphonyLibTest obj's underlying member method code with example usage: obj.testSteps() without return types