code: def test_window_array(
      self, dur, win_len, frame_step_ratio, expected_shape
  ):
      sr = 16000
      sw = np.sin(np.linspace(start=0.0, stop=dur, num=int(sr * dur)))
  
      wa = heuristics.window_array(sw, sr, win_len, frame_step_ratio)
      self.assertSequenceEqual(wa.shape, expected_shape)
      self.assertEqual(wa.shape[-1], int(sr * win_len))
  
file_path: ddsp/ddsp/training/heuristics_test.py
imports: from absl.testing import parameterized
  from ddsp.training import heuristics
  import numpy
  import tensorflow.compat.v2
label_desc: Use image node_id 3 for calling the HeuristicsTest obj's underlying member method code with example usage: obj.test_window_array(dur, win_len, frame_step_ratio, expected_shape) without return types