code: def test_find_shifts():
      # create input_df
      input_val_ls = [100] * 10 + [200] * 10 + [300] * 10
      input_ts_ls = pd.date_range(
          datetime(2020, 1, 1), freq="D", periods=30
      )
      input_df = pd.DataFrame(
          {"ts": input_ts_ls, "actual": input_val_ls}
      )
  
      # create expected results
      expected_shift_dates = [
          (
              datetime(2020, 1, 11, 0, 0, 0),
              datetime(2020, 1, 11, 0, 0, 0),
          ),
          (
              datetime(2020, 1, 21, 0, 0, 0),
              datetime(2020, 1, 21, 0, 0, 0),
          ),
      ]
  
      expected_df_find_shifts = pd.DataFrame(
          {
              "ts": pd.date_range(
                  datetime(2020, 1, 1), freq="D", periods=30
              ),
              "actual": [100] * 10 + [200] * 10 + [300] * 10,
              "actual_diff": [None]
              + [0] * 9
              + [100]
              + [0] * 9
              + [100]
              + [0] * 9,
              "zscore": [None]
              + [-0.267432] * 9
              + [3.610330]
              + [-0.267432] * 9
              + [3.610330]
              + [-0.267432] * 9,
          }
      )
  
      # call the function
      detector = ShiftDetection()
      output_df_find_shifts, output_shift_dates = detector.find_shifts(
          input_df, time_col="ts", value_col="actual", z_score_cutoff=3
      )
  
      # unit test
      assert output_shift_dates == expected_shift_dates
      pd.testing.assert_frame_equal(
          output_df_find_shifts, expected_df_find_shifts
      )
  
file_path: greykite/greykite/tests/algo/changepoint/shift_detection/test_shift_detector.py
imports: from datetime import datetime
  import pandas
  import pytest
  from greykite.algo.changepoint.shift_detection.shift_detector import ShiftDetection
  from greykite.common.constants import LEVELSHIFT_COL_PREFIX_SHORT
label_desc: Use image node_id 4 for calling a global function with example usage: test_find_shifts() without return types