code: def test_outer_join(self, freq):
      # should just behave as union
      start, end = datetime(2009, 1, 1), datetime(2010, 1, 1)
      rng = date_range(start=start, end=end, freq=freq)
  
      # overlapping
      left = rng[:10]
      right = rng[5:10]
  
      the_join = left.join(right, how="outer")
      assert isinstance(the_join, DatetimeIndex)
  
      # non-overlapping, gap in middle
      left = rng[:5]
      right = rng[10:]
  
      the_join = left.join(right, how="outer")
      assert isinstance(the_join, DatetimeIndex)
      assert the_join.freq is None
  
      # non-overlapping, no gap
      left = rng[:5]
      right = rng[5:10]
  
      the_join = left.join(right, how="outer")
      assert isinstance(the_join, DatetimeIndex)
  
      # overlapping, but different offset
      other = date_range(start, end, freq=BMonthEnd())
  
      the_join = rng.join(other, how="outer")
      assert isinstance(the_join, DatetimeIndex)
      assert the_join.freq is None
  
file_path: pandas/pandas/tests/indexes/datetimes/test_join.py
imports: from datetime import datetime, timezone
  import numpy
  import pytest
  from pandas import DataFrame, DatetimeIndex, Index, Timestamp, date_range, period_range, to_datetime
  import pandas._testing
  from pandas.tseries.offsets import BDay, BMonthEnd
label_desc: Use image node_id 8 for calling the TestJoin obj's underlying member method code with example usage: obj.test_outer_join(freq) without return types