code: def setUp(self):
      self.left_rows = ((1, 4, "a"), (2, 3, "b"), (None, 2, "c"))
  
      self.right_rows = ((1, 4, "a"), (2, 3, "b"), (None, 2, "c"))
  
      self.number_type = Number()
      self.text_type = Text()
  
      self.left_column_names = ["one", "two", "three"]
      self.right_column_names = ["four", "five", "six"]
      self.column_types = [
          self.number_type,
          self.number_type,
          self.text_type,
      ]
  
      self.left = Table(
          self.left_rows, self.left_column_names, self.column_types
      )
      self.right = Table(
          self.right_rows, self.right_column_names, self.column_types
      )
  
imports: from agate import Table
  from agate.data_types import Number, Text
  from agate.testcase import AgateTestCase
label_desc: Use image node_id 1 for calling the TestJoin obj's underlying member method code with example usage: obj.setUp() without return types