/**
     * @param int $mode
     * @param string $value
     * @dataProvider modeValueDataProvider
     */
    public function testWidgetClientOptions($mode, $value)
    {
        $actual = $this->getActual($mode, $value, ['clientOptions' => ['defaultDate' => -1, 'duration' => 'slow']]);
        list($id, $name) = $this->getIdName($mode);
        if (is_int($value) || is_string($value) && strlen($value) || $value instanceof DateTime || $value instanceof DateTimeInterface) {
            $formatter = Yii::$app->getFormatter();
            $encodedValueAttr = ' value="' . Html::encode($formatter->asDate($value) . ' ' . $formatter->asTime($value)) . '"';
            $encodedAltValueAttr = ' value="' . Html::encode($formatter->asDate($value, 'yyyy-MM-dd') . ' ' . $formatter->asTime($value, 'HH:mm:ss')) . '"';
        } elseif (!is_null($value)) {
            $encodedValueAttr = ' value="' . Html::encode($value) . '"';
            $encodedAltValueAttr = ' value="' . Html::encode($value) . '"';
        } else {
            $encodedValueAttr = '';
            $encodedAltValueAttr = '';
        }
        $expectedHtml = <<<EXPECTED_HTML
<input type="text" id="{$id}" class="form-control"{$encodedValueAttr}><input type="hidden" id="{$id}-alt" name="{$name}"{$encodedAltValueAttr}>
EXPECTED_HTML;
        $dateFormat = str_replace('\'', '\\u0027', FormatConverter::convertDateIcuToJui('medium'));
        $timeFormat = FormatConverter::convertDatePhpOrIcuToJui('medium', 'time');
        $expectedJs = <<<EXPECTED_JS
jQuery('#{$id}').datetimepicker({"defaultDate":-1,"duration":"slow","dateFormat":"{$dateFormat}","separator":" ","timeFormat":"{$timeFormat}","altField":"#{$id}-alt","altFieldTimeOnly":false,"altFormat":"yy-mm-dd","altSeparator":" ","altTimeFormat":"HH:mm:ss"});
EXPECTED_JS;
        $this->checkExpected($mode, $actual, $expectedHtml, $expectedJs);
    }