code: def test_build_trend_feature_df_with_changes(hourly_data):
      # test default parameters
      df = hourly_data["df"]
      df_trend = build_trend_feature_df_with_changes(
          df=df, time_col="ts"
      )
      assert df_trend.shape[0] == df.shape[0]
      assert df_trend.shape[1] == 101  # default value
      # test given parameters
      df_trend = build_trend_feature_df_with_changes(
          df=df,
          time_col="ts",
          changepoints_dict={"method": "uniform", "n_changepoints": 50},
      )
      assert df_trend.shape[0] == df.shape[0]
      assert df_trend.shape[1] == 51
      # test no change point
      df_trend = build_trend_feature_df_with_changes(
          df=df,
          time_col="ts",
          changepoints_dict={"method": "uniform", "n_changepoints": 0},
      )
      assert df_trend.shape[0] == df.shape[0]
      assert df_trend.shape[1] == 1
      # test result values
      df = pd.DataFrame(
          {
              "ts": [
                  dt(2020, 1, 1),
                  dt(2020, 1, 2),
                  dt(2020, 1, 3),
                  dt(2020, 1, 4),
                  dt(2020, 1, 5),
                  dt(2020, 1, 6),
              ],
              "y": [1, 2, 3, 4, 5, 6],
          }
      )
      df_trend = build_trend_feature_df_with_changes(
          df=df,
          time_col="ts",
          changepoints_dict={"method": "uniform", "n_changepoints": 2},
      )
      expected_df_trend = pd.DataFrame(
          {
              "changepoint0_2020_01_01_00": [
                  0,
                  1 / 366,
                  2 / 366,
                  3 / 366,
                  4 / 366,
                  5 / 366,
              ],
              "changepoint1_2020_01_03_00": [
                  0,
                  0,
                  0,
                  1 / 366,
                  2 / 366,
                  3 / 366,
              ],
              "changepoint2_2020_01_05_00": [0, 0, 0, 0, 0, 1 / 366],
          },
          index=[
              dt(2020, 1, 1),
              dt(2020, 1, 2),
              dt(2020, 1, 3),
              dt(2020, 1, 4),
              dt(2020, 1, 5),
              dt(2020, 1, 6),
          ],
      )
      assert df_trend.round(3).equals(expected_df_trend.round(3))
  
imports: from datetime import datetime
  import numpy
  import pandas
  import pytest
  from greykite.algo.changepoint.adalasso.changepoints_utils import adaptive_lasso_cv
  from greykite.algo.changepoint.adalasso.changepoints_utils import build_seasonality_feature_df_from_detection_result
  from greykite.algo.changepoint.adalasso.changepoints_utils import build_seasonality_feature_df_with_changes
  from greykite.algo.changepoint.adalasso.changepoints_utils import build_trend_feature_df_with_changes
  from greykite.algo.changepoint.adalasso.changepoints_utils import check_freq_unit_at_most_day
  from greykite.algo.changepoint.adalasso.changepoints_utils import combine_detected_and_custom_trend_changepoints
  from greykite.algo.changepoint.adalasso.changepoints_utils import compute_fitted_components
  from greykite.algo.changepoint.adalasso.changepoints_utils import compute_min_changepoint_index_distance
  from greykite.algo.changepoint.adalasso.changepoints_utils import estimate_seasonality_with_detected_changepoints
  from greykite.algo.changepoint.adalasso.changepoints_utils import estimate_trend_with_detected_changepoints
  from greykite.algo.changepoint.adalasso.changepoints_utils import filter_changepoints
  from greykite.algo.changepoint.adalasso.changepoints_utils import find_neighbor_changepoints
  from greykite.algo.changepoint.adalasso.changepoints_utils import get_changes_from_beta
  from greykite.algo.changepoint.adalasso.changepoints_utils import get_seasonality_changepoint_df_cols
  from greykite.algo.changepoint.adalasso.changepoints_utils import get_seasonality_changes_from_adaptive_lasso
  from greykite.algo.changepoint.adalasso.changepoints_utils import get_trend_changepoint_dates_from_cols
  from greykite.algo.changepoint.adalasso.changepoints_utils import get_trend_changes_from_adaptive_lasso
  from greykite.algo.changepoint.adalasso.changepoints_utils import get_yearly_seasonality_changepoint_dates_from_freq
  from greykite.algo.changepoint.adalasso.changepoints_utils import plot_change
  from greykite.common.testing_utils import generate_df_for_tests
label_desc: Use image node_id 3 for calling a global function with example usage: test_build_trend_feature_df_with_changes(hourly_data) without return types