code: def test_optimization_pipeline(self):
      skip_if_blas_ldflags_empty()
      f = self.function([self.x, self.y], pt.outer(self.x, self.y))
      self.assertFunctionContains(f, CGer(destructive=True))
      f(self.xval, self.yval)
  
imports: from warnings import warn
  import numpy
  import pytest
  import pytensor
  import pytensor.tensor
  from pytensor.misc.safe_asarray import _asarray
  from pytensor.tensor.basic import AllocEmpty
  from pytensor.tensor.blas import Ger
  from pytensor.tensor.blas_c import CGemv, CGer, check_force_gemv_init
  from pytensor.tensor.blas_scipy import ScipyGer
  from pytensor.tensor.type import dmatrix, dvector, matrix, scalar, tensor, vector
  from tests import unittest_tools
  from tests.tensor.test_blas import BaseGemv, TestBlasStrides
  from tests.unittest_tools import OptimizationTestMixin
label_desc: Use image node_id 8 for calling the TestCGer obj's underlying member method code with example usage: obj.test_optimization_pipeline() without return types