code: def test_add(self):
      pdf, psdf = self.array_pdf, self.array_psdf
      for col in self.array_df_cols:
          self.assert_eq(pdf[col] + pdf[col], psdf[col] + psdf[col])
  
      # Numeric array + Numeric array
      for col in self.numeric_array_df_cols:
          pser1, psser1 = pdf[col], psdf[col]
          for other_col in self.numeric_array_df_cols:
              pser2, psser2 = pdf[other_col], psdf[other_col]
              self.assert_eq(
                  (pser1 + pser2).sort_values(),
                  (psser1 + psser2).sort_values(),
              )
  
      # Non-numeric array + Non-numeric array
      self.assertRaises(
          TypeError,
          lambda: psdf["string"] + psdf["bool"],
      )
      self.assertRaises(
          TypeError,
          lambda: psdf["string"] + psdf["date"],
      )
      self.assertRaises(
          TypeError,
          lambda: psdf["bool"] + psdf["date"],
      )
  
      for col in self.non_numeric_array_df_cols:
          pser, psser = pdf[col], psdf[col]
          self.assert_eq(pser + pser, psser + psser)
  
      # Numeric array + Non-numeric array
      for numeric_col in self.numeric_array_df_cols:
          for non_numeric_col in self.non_numeric_array_df_cols:
              self.assertRaises(
                  TypeError,
                  lambda: psdf[numeric_col] + psdf[non_numeric_col],
              )
  
imports: import decimal
  import datetime
  import pandas
  from pyspark import pandas
  from pyspark.testing.pandasutils import PandasOnSparkTestCase
  from pyspark.pandas.tests.data_type_ops.testing_utils import OpsTestBase
label_desc: Use image node_id 14 for calling the ComplexOpsTestsMixin obj's underlying member method code with example usage: obj.test_add() without return types