code: def test_deviceparam(self):
      cp = configparser.DeviceParam("cpu", mutable=False)
      assert cp.default == "cpu"
      with pytest.raises(
          ValueError, match="It was removed from PyTensor"
      ):
          cp._apply("cuda123")
      with pytest.raises(
          ValueError, match="It was removed from PyTensor"
      ):
          cp._apply("gpu123")
      with pytest.raises(
          ValueError, match='Valid options start with one of "cpu".'
      ):
          cp._apply("notadevice")
      assert str(cp) == "None (cpu)"
  
imports: import configparser
  import io
  import pickle
  import pytest
  from pytensor import configdefaults, configparser
  from pytensor.configdefaults import short_platform
  from pytensor.configparser import ConfigParam
label_desc: Use image node_id 3 for calling the TestConfigTypes obj's underlying member method code with example usage: obj.test_deviceparam() without return types