code: def test_binary_operator_add(self):
      # Positive
      pdf = pd.DataFrame({"a": ["x"], "b": ["y"], "c": [1], "d": [2]})
      psdf = ps.from_pandas(pdf)
  
      self.assert_eq(psdf["a"] + psdf["b"], pdf["a"] + pdf["b"])
      self.assert_eq(psdf["c"] + psdf["d"], pdf["c"] + pdf["d"])
  
      # Negative
      ks_err_msg = "Addition can not be applied to given types"
  
      self.assertRaisesRegex(
          TypeError, ks_err_msg, lambda: psdf["a"] + psdf["c"]
      )
      self.assertRaisesRegex(
          TypeError, ks_err_msg, lambda: psdf["c"] + psdf["a"]
      )
      self.assertRaisesRegex(
          TypeError, ks_err_msg, lambda: psdf["c"] + "literal"
      )
      self.assertRaisesRegex(
          TypeError, ks_err_msg, lambda: "literal" + psdf["c"]
      )
      self.assertRaisesRegex(
          TypeError, ks_err_msg, lambda: 1 + psdf["a"]
      )
      self.assertRaisesRegex(
          TypeError, ks_err_msg, lambda: psdf["a"] + 1
      )
  
imports: import unittest
  import numpy
  import pandas
  from pyspark import pandas
  from pyspark.testing.pandasutils import ComparisonTestBase
  from pyspark.testing.sqlutils import SQLTestUtils
label_desc: Use image node_id 3 for calling the FrameBinaryOpsMixin obj's underlying member method code with example usage: obj.test_binary_operator_add() without return types