def test_deep_nest_bson_subst():
    assert (
        validate_type(
            Union[  # type: ignore
                Dict[List[bson.ObjectId], Dict[bson.ObjectId, bson.Decimal128]],
                Dict[Dict[Set[bson.Int64], bson.Binary], Tuple[bson.Regex, ...]],
            ]
        )
        == Union[
            Dict[List[ObjectId], Dict[ObjectId, Decimal128]],
            Dict[Dict[Set[Int64], Binary], Tuple[Regex, ...]],
        ]
    )
def test_forbidden_field():
    with pytest.raises(TypeError, match="fields are not supported"):
        validate_type(Callable)  # type: ignore
def test_optional_bson_subst(base, replacement):
    assert validate_type(Optional[base]) == Optional[replacement]  # type: ignore
def test_single_arg_type_bson_subst(origin, base, replacement):
    assert validate_type(origin[base]) == origin[replacement]
def test_validate_type_bson_substituted(base, replacement):
    assert validate_type(base) == replacement