code: def test_valid(self) -> None:
      prop = bcpe.Either(
          Interval(Int, 0, 100), Regex("^x*$"), List(Int)
      )
  
      assert prop.is_valid(0)
      assert prop.is_valid(1)
  
      assert prop.is_valid("")
      assert prop.is_valid("xxx")
      assert prop.is_valid([])
      assert prop.is_valid([1, 2, 3])
      assert prop.is_valid(100)
  
      # TODO (bev) should fail
      assert prop.is_valid(False)
      assert prop.is_valid(True)
  
file_path: bokeh/tests/unit/bokeh/core/property/test_either.py
imports: from __future__ import annotations
  import pytest
  from bokeh.core.properties import Dict, Int, Interval, List, Regex, String
  from bokeh.core.property.wrappers import PropertyValueDict, PropertyValueList
  from tests.support.util.api import verify_all
  from _util_property import _TestHasProps, _TestModel
  import bokeh.core.property.either
label_desc: Use image node_id 2 for calling the Test_Either obj's underlying member method code with example usage: obj.test_valid() without return types