def test_slot_behaviour(self, mro_slots):
     inst = DefaultValue(1)
     for attr in inst.__slots__:
         assert getattr(inst, attr,
                        "err") != "err", f"got extra slot '{attr}'"
     assert len(mro_slots(inst)) == len(set(
         mro_slots(inst))), "duplicate slot"
class TestDefaultValue:
    def test_slot_behaviour(self, mro_slots):
        inst = DefaultValue(1)
        for attr in inst.__slots__:
            assert getattr(inst, attr,
                           "err") != "err", f"got extra slot '{attr}'"
        assert len(mro_slots(inst)) == len(set(
            mro_slots(inst))), "duplicate slot"

    def test_identity(self):
        df_1 = DefaultValue(1)
        df_2 = DefaultValue(2)
        assert df_1 is not df_2
        assert df_1 != df_2

    @pytest.mark.parametrize(
        "value,expected",
        [
            ({}, False),
            ({
                1: 2
            }, True),
            (None, False),
            (True, True),
            (1, True),
            (0, False),
            (False, False),
            ([], False),
            ([1], True),
        ],
    )
    def test_truthiness(self, value, expected):
        assert bool(DefaultValue(value)) == expected

    @pytest.mark.parametrize("value", [
        "string", 1, True, [1, 2, 3], {
            1: 3
        },
        DefaultValue(1),
        User(1, "first", False)
    ])
    def test_string_representations(self, value):
        df = DefaultValue(value)
        assert str(df) == f"DefaultValue({value})"
        assert repr(df) == repr(value)

    def test_as_function_argument(self):
        default_one = DefaultValue(1)

        def foo(arg=default_one):
            if arg is default_one:
                return 1
            else:
                return 2

        assert foo() == 1
        assert foo(None) == 2
        assert foo(1) == 2
    def test_as_function_argument(self):
        default_one = DefaultValue(1)

        def foo(arg=default_one):
            if arg is default_one:
                return 1
            else:
                return 2

        assert foo() == 1
        assert foo(None) == 2
        assert foo(1) == 2
 def __init__(self: "InitApplicationBuilder"):
     self._token: DVInput[str] = DefaultValue("")
     self._base_url: DVInput[str] = DefaultValue(
         "https://api.telegram.org/bot")
     self._base_file_url: DVInput[str] = DefaultValue(
         "https://api.telegram.org/file/bot")
     self._connection_pool_size: DVInput[int] = DEFAULT_NONE
     self._proxy_url: DVInput[str] = DEFAULT_NONE
     self._connect_timeout: ODVInput[float] = DEFAULT_NONE
     self._read_timeout: ODVInput[float] = DEFAULT_NONE
     self._write_timeout: ODVInput[float] = DEFAULT_NONE
     self._pool_timeout: ODVInput[float] = DEFAULT_NONE
     self._request: DVInput["BaseRequest"] = DEFAULT_NONE
     self._get_updates_connection_pool_size: DVInput[int] = DEFAULT_NONE
     self._get_updates_proxy_url: DVInput[str] = DEFAULT_NONE
     self._get_updates_connect_timeout: ODVInput[float] = DEFAULT_NONE
     self._get_updates_read_timeout: ODVInput[float] = DEFAULT_NONE
     self._get_updates_write_timeout: ODVInput[float] = DEFAULT_NONE
     self._get_updates_pool_timeout: ODVInput[float] = DEFAULT_NONE
     self._get_updates_request: DVInput["BaseRequest"] = DEFAULT_NONE
     self._private_key: ODVInput[bytes] = DEFAULT_NONE
     self._private_key_password: ODVInput[bytes] = DEFAULT_NONE
     self._defaults: ODVInput["Defaults"] = DEFAULT_NONE
     self._arbitrary_callback_data: DVInput[Union[bool,
                                                  int]] = DEFAULT_FALSE
     self._bot: DVInput[Bot] = DEFAULT_NONE
     self._update_queue: DVInput[Queue] = DefaultValue(Queue())
     self._job_queue: ODVInput["JobQueue"] = DefaultValue(JobQueue())
     self._persistence: ODVInput["BasePersistence"] = DEFAULT_NONE
     self._context_types: DVInput[ContextTypes] = DefaultValue(
         ContextTypes())
     self._application_class: DVInput[Type[Application]] = DefaultValue(
         Application)
     self._application_kwargs: Dict[str, object] = {}
     self._concurrent_updates: DVInput[Union[int, bool]] = DEFAULT_FALSE
     self._updater: ODVInput[Updater] = DEFAULT_NONE
     self._post_init: Optional[Callable[[Application],
                                        Coroutine[Any, Any, None]]] = None
     self._post_shutdown: Optional[Callable[[Application],
                                            Coroutine[Any, Any,
                                                      None]]] = None
 def test_string_representations(self, value):
     df = DefaultValue(value)
     assert str(df) == f"DefaultValue({value})"
     assert repr(df) == repr(value)
 def test_truthiness(self, value, expected):
     assert bool(DefaultValue(value)) == expected
 def test_identity(self):
     df_1 = DefaultValue(1)
     df_2 = DefaultValue(2)
     assert df_1 is not df_2
     assert df_1 != df_2