code: def test_set(self) -> None:
      class Foo(HasProps):
          x = Int(12)
          y = Enum("red", "blue", "green")
          z = String("blah")
  
      f = Foo()
      assert f.x == 12
      assert f.y == "red"
      assert f.z == "blah"
      f.update(**dict(x=20, y="green", z="hello"))
      assert f.x == 20
      assert f.y == "green"
      assert f.z == "hello"
      with pytest.raises(ValueError):
          f.update(y="orange")
  
imports: from __future__ import annotations
  import pytest
  import numpy
  from bokeh.core.has_props import HasProps, Local
  from bokeh.core.properties import Alias, Dict, Enum, Float, Instance, Int, List, NotSerialized, Nullable, NumberSpec, Override, Readonly, String, UnsetValueError
  from bokeh.model import Model
  from tests.support.util.api import verify_all
  import bokeh.core.properties
label_desc: Use image node_id 4 for calling the TestBasic obj's underlying member method code with example usage: obj.test_set() without return types