code: def test_multiple_udfs(self):
      df = self.data
      w = self.unbounded_window
  
      result1 = (
          df.withColumn(
              "mean_v", self.pandas_agg_mean_udf(df["v"]).over(w)
          )
          .withColumn("max_v", self.pandas_agg_max_udf(df["v"]).over(w))
          .withColumn("min_w", self.pandas_agg_min_udf(df["w"]).over(w))
      )
  
      expected1 = (
          df.withColumn("mean_v", mean(df["v"]).over(w))
          .withColumn("max_v", max(df["v"]).over(w))
          .withColumn("min_w", min(df["w"]).over(w))
      )
  
      assert_frame_equal(expected1.toPandas(), result1.toPandas())
  
imports: import unittest
  from typing import cast
  from pyspark.errors import AnalysisException, PythonException
  from pyspark.sql.functions import array, explode, col, lit, mean, min, max, rank, udf, pandas_udf, PandasUDFType
  from pyspark.sql.window import Window
  from pyspark.testing.sqlutils import ReusedSQLTestCase, have_pandas, have_pyarrow, pandas_requirement_message, pyarrow_requirement_message
  from pyspark.testing.utils import QuietTest, assertDataFrameEqual
label_desc: Use image node_id 19 for calling the WindowPandasUDFTestsMixin obj's underlying member method code with example usage: obj.test_multiple_udfs() without return types