code: def test_join_index_mixed(self, join_type):
      # no overlapping blocks
      df1 = DataFrame(index=np.arange(10))
      df1["bool"] = True
      df1["string"] = "foo"
  
      df2 = DataFrame(index=np.arange(5, 15))
      df2["int"] = 1
      df2["float"] = 1.0
  
      joined = df1.join(df2, how=join_type)
      expected = _join_by_hand(df1, df2, how=join_type)
      tm.assert_frame_equal(joined, expected)
  
      joined = df2.join(df1, how=join_type)
      expected = _join_by_hand(df2, df1, how=join_type)
      tm.assert_frame_equal(joined, expected)
  
imports: import re
  import numpy
  import pytest
  import pandas.util._test_decorators
  import pandas
  from pandas import Categorical, DataFrame, Index, MultiIndex, Series, Timestamp, bdate_range, concat, merge, option_context
  import pandas._testing
label_desc: Use image node_id 21 for calling the TestJoin obj's underlying member method code with example usage: obj.test_join_index_mixed(join_type) without return types