code: def test_join_keys():
      data1 = pd.DataFrame(
          {
              "a": [0, 0, 1, 1, 2, 2],
              "b": [0, 1, 2, 3, 1, 2],
              "c": [0, 1, 2, 3, 4, 5],
          }
      )
  
      # same array and columns the keys should be the same
      keys = join_keys(data1, data1, ["a", "b"])
      assert list(keys["x"]) == [1, 2, 3, 4, 5, 6]
      assert list(keys["x"]) == [1, 2, 3, 4, 5, 6]
  
      # Every other element of data2['b'] is changed
      # so every other key should be different
      data2 = pd.DataFrame(
          {
              "a": [0, 0, 1, 1, 2, 2],
              "b": [0, 11, 2, 33, 1, 22],
              "c": [1, 2, 3, 4, 5, 6],
          }
      )
  
      keys = join_keys(data1, data2, ["a", "b"])
      assert list(keys["x"]) == [1, 2, 4, 5, 7, 8]
      assert list(keys["y"]) == [1, 3, 4, 6, 7, 9]
  
file_path: plotnine/tests/test_utils.py
imports: import itertools
  import random
  import string
  import warnings
  import numpy
  import pandas
  from plotnine._utils import _margins, add_margins, join_keys, match, ninteraction, pivot_apply, remove_missing, uniquecols
  from plotnine.data import mtcars
label_desc: Use image node_id 5 for calling a global function with example usage: test_join_keys() without return types