code: def test_add_months_and_roll(self, rolling_enum_value, data_key):
      data = test_data.add_months_data
      date_tensor = dates.dates_from_tuples(
          [item["date"] for item in data]
      )
      periods = dates.periods.months([item["months"] for item in data])
      expected_dates = dates.dates_from_tuples(
          [item[data_key] for item in data]
      )
      cal = self.impl(
          weekend_mask=dates.WeekendMask.SATURDAY_SUNDAY,
          holidays=test_data.holidays,
      )
      actual_dates = cal.add_period_and_roll(
          date_tensor, periods, roll_convention=rolling_enum_value
      )
      self.assertAllEqual(
          expected_dates.ordinal(), actual_dates.ordinal()
      )
  
imports: import datetime
  import functools
  from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v2
  import tf_quant_finance
  from tf_quant_finance.datetime import bounded_holiday_calendar
  from tf_quant_finance.datetime import test_data
  from tf_quant_finance.datetime import unbounded_holiday_calendar
  from tensorflow.python.framework import test_util
label_desc: Use image node_id 7 for calling the HolidayCalendarTest obj's underlying member method code with example usage: obj.test_add_months_and_roll(rolling_enum_value, data_key) without return types