* Copyright (c) 2024 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef GENERATED_FOUNDATION_ACE_CAPI_TEST_SLIDER_H
#define GENERATED_FOUNDATION_ACE_CAPI_TEST_SLIDER_H
#include <gtest/gtest.h>
#include "modifier_test_base.h"
#include "modifiers_test_utils.h"
#include "test/unittest/capi/modifiers/generated/test_fixtures.h"
#include "core/components_ng/pattern/slider/slider_event_hub.h"
#include "core/components_ng/pattern/slider/slider_model.h"
#include "core/components/slider/slider_theme.h"
#include "core/interfaces/native/utility/converter.h"
#include "core/interfaces/native/utility/reverse_converter.h"
#include "core/interfaces/native/implementation/linear_gradient_peer.h"
namespace OHOS::Ace::NG {
const auto ATTRIBUTE_BLOCK_SIZE_NAME = "blockSize";
const auto ATTRIBUTE_SLIDE_RANGE_NAME = "slideRange";
const auto ATTRIBUTE_CONSTRUCTOR_NAME = "constructor";
const auto ATTRIBUTE_VALUE_NAME = "value";
const auto ATTRIBUTE_VALUE_DEFAULT_VALUE = "0.000000";
const auto ATTRIBUTE_MIN_NAME = "min";
const auto ATTRIBUTE_MIN_DEFAULT_VALUE = "0.000000";
const auto ATTRIBUTE_MAX_NAME = "max";
const auto ATTRIBUTE_MAX_DEFAULT_VALUE = "100.000000";
const auto ATTRIBUTE_STEP_NAME = "step";
const auto ATTRIBUTE_STEP_DEFAULT_VALUE = "1.000000";
const auto ATTRIBUTE_STYLE_NAME = "style";
const auto ATTRIBUTE_STYLE_DEFAULT_VALUE = "SliderStyle.OutSet";
const auto ATTRIBUTE_DIRECTION_NAME = "direction";
const auto ATTRIBUTE_DIRECTION_DEFAULT_VALUE = "Axis.Horizontal";
const auto ATTRIBUTE_REVERSE_NAME = "reverse";
const auto ATTRIBUTE_REVERSE_DEFAULT_VALUE = "false";
const auto ATTRIBUTE_BLOCK_COLOR_NAME = "blockColor";
const auto ATTRIBUTE_BLOCK_COLOR_DEFAULT_VALUE = "#FFFFFFFF";
const auto ATTRIBUTE_TRACK_COLOR_NAME = "trackColor";
const auto ATTRIBUTE_TRACK_COLOR_DEFAULT_VALUE = "#FFFF0000";
const auto ATTRIBUTE_SELECTED_COLOR_NAME = "selectedColor";
const auto ATTRIBUTE_SELECTED_COLOR_DEFAULT_VALUE = "#FFFF0000";
const auto ATTRIBUTE_MIN_LABEL_NAME = "min";
const auto ATTRIBUTE_MAX_LABEL_NAME = "max";
const auto ATTRIBUTE_SHOW_STEPS_NAME = "showSteps";
const auto ATTRIBUTE_SHOW_STEPS_DEFAULT_VALUE = "false";
const auto ATTRIBUTE_SHOW_TIPS_NAME = "showTips";
const auto ATTRIBUTE_SHOW_TIPS_DEFAULT_VALUE = "false";
const auto ATTRIBUTE_CONTENT_NAME = "content";
const auto ATTRIBUTE_CONTENT_DEFAULT_VALUE = std::nullopt;
const auto ATTRIBUTE_TRACK_THICKNESS_NAME = "trackThickness";
const auto ATTRIBUTE_TRACK_THICKNESS_DEFAULT_VALUE = "4.00vp";
const auto ATTRIBUTE_BLOCK_BORDER_COLOR_NAME = "blockBorderColor";
const auto ATTRIBUTE_BLOCK_BORDER_COLOR_DEFAULT_VALUE = "#00000000";
const auto ATTRIBUTE_BLOCK_BORDER_WIDTH_NAME = "blockBorderWidth";
const auto ATTRIBUTE_BLOCK_BORDER_WIDTH_DEFAULT_VALUE = "0.00px";
const auto ATTRIBUTE_STEP_COLOR_NAME = "stepColor";
const auto ATTRIBUTE_STEP_COLOR_DEFAULT_VALUE = "#19FF0000";
const auto ATTRIBUTE_TRACK_BORDER_RADIUS_NAME = "trackBorderRadius";
const auto ATTRIBUTE_TRACK_BORDER_RADIUS_DEFAULT_VALUE = std::nullopt;
const auto ATTRIBUTE_SELECTED_BORDER_RADIUS_NAME = "selectedBorderRadius";
const auto ATTRIBUTE_SELECTED_BORDER_RADIUS_DEFAULT_VALUE = "";
const auto ATTRIBUTE_BLOCK_SIZE_WIDTH_NAME = "width";
const auto ATTRIBUTE_BLOCK_SIZE_WIDTH_DEFAULT_VALUE = "16.00vp";
const auto ATTRIBUTE_BLOCK_SIZE_HEIGHT_NAME = "height";
const auto ATTRIBUTE_BLOCK_SIZE_HEIGHT_DEFAULT_VALUE = "16.00vp";
const auto ATTRIBUTE_BLOCK_STYLE_TYPE_NAME = "blockType";
const auto ATTRIBUTE_BLOCK_STYLE_TYPE_DEFAULT_VALUE = "BlockStyleType.DEFAULT";
const auto ATTRIBUTE_STEP_SIZE_NAME = "stepSize";
const auto ATTRIBUTE_STEP_SIZE_DEFAULT_VALUE = "4.00vp";
const auto ATTRIBUTE_SLIDER_INTERACTION_MODE_NAME = "sliderInteractionMode";
const auto ATTRIBUTE_SLIDER_INTERACTION_MODE_DEFAULT_VALUE = "SliderInteraction.SLIDE_AND_CLICK";
const auto ATTRIBUTE_MIN_RESPONSIVE_DISTANCE_NAME = "minResponsiveDistance";
const auto ATTRIBUTE_MIN_RESPONSIVE_DISTANCE_DEFAULT_VALUE = "0.000000";
const auto ATTRIBUTE_SLIDE_RANGE_FROM_NAME = "from";
const auto ATTRIBUTE_SLIDE_RANGE_FROM_DEFAULT_VALUE = std::nullopt;
const auto ATTRIBUTE_SLIDE_RANGE_TO_NAME = "to";
const auto ATTRIBUTE_SLIDE_RANGE_TO_DEFAULT_VALUE = std::nullopt;
const auto ATTRIBUTE_TRACK_COLOR_GRADIENT_COLOR_NAME = "color";
const auto ATTRIBUTE_TRACK_COLOR_GRADIENT_OFFSET_NAME = "offset";
#ifdef SUPPORT_DIGITAL_CROWN
const auto ATTRIBUTE_DIGITAL_CROWN_SENSITIVITY_NAME = "digitalCrownSensitivity";
const auto ATTRIBUTE_DIGITAL_CROWN_SENSITIVITY_DEFAULT_VALUE = "CrownSensitivity.MEDIUM";
#endif
const auto ATTRIBUTE_ENABLE_HAPTIC_FEEDBACK_NAME = "enableHapticFeedback";
const auto ATTRIBUTE_ENABLE_HAPTIC_FEEDBACK_DEFAULT_VALUE = "true";
const std::string EXPECTED_TRUE("true");
const std::string EXPECTED_FALSE("false");
namespace Fixtures {
std::vector<std::tuple<std::string, Ark_Float64, std::string>> testFixtureNumberInitialValuesSlider = {
{ "0", Converter::ArkValue<Ark_Float64>(0.), "0.000000" },
{ "100", Converter::ArkValue<Ark_Float64>(100.), "100.000000" },
{ "1", Converter::ArkValue<Ark_Float64>(1.), "1.000000" },
};
std::vector<std::tuple<std::string, Ark_Float64, std::string>> testFixtureNumberValueValidValuesSlider = {
{ "0", Converter::ArkValue<Ark_Float64>(0.), "0.000000" },
{ "2.2", Converter::ArkValue<Ark_Float64>(2.2), "2.200000" },
{ "99", Converter::ArkValue<Ark_Float64>(99.), "99.000000" },
{ "100", Converter::ArkValue<Ark_Float64>(100.), "100.000000" },
};
std::vector<std::tuple<std::string, Ark_Float64, std::string>> testFixtureNumberValueInvalidValuesSlider = {
{ "-100", Converter::ArkValue<Ark_Float64>(-100.), ATTRIBUTE_MIN_DEFAULT_VALUE },
{ "200", Converter::ArkValue<Ark_Float64>(200.), ATTRIBUTE_MAX_DEFAULT_VALUE },
};
std::vector<std::tuple<std::string, Ark_Float64, std::string>> testFixtureNumberMinValidValuesSlider = {
{ "1", Converter::ArkValue<Ark_Float64>(1.), "1.000000" },
{ "2.2", Converter::ArkValue<Ark_Float64>(2.2), "2.200000" },
{ "99", Converter::ArkValue<Ark_Float64>(99.), "99.000000" },
{ "-100", Converter::ArkValue<Ark_Float64>(-100.), "-100.000000" },
};
std::vector<std::tuple<std::string, Ark_Float64, std::string>> testFixtureNumberMinInvalidValuesSlider = {
{ "100", Converter::ArkValue<Ark_Float64>(100.), ATTRIBUTE_MIN_DEFAULT_VALUE },
{ "200", Converter::ArkValue<Ark_Float64>(200.), ATTRIBUTE_MIN_DEFAULT_VALUE },
};
std::vector<std::tuple<std::string, Ark_Float64, std::string>> testFixtureNumberMaxValidValuesSlider = {
{ "1", Converter::ArkValue<Ark_Float64>(1.), "1.000000" },
{ "2.2", Converter::ArkValue<Ark_Float64>(2.2), "2.200000" },
{ "99", Converter::ArkValue<Ark_Float64>(99.), "99.000000" },
{ "200", Converter::ArkValue<Ark_Float64>(200.), "200.000000" },
};
std::vector<std::tuple<std::string, Ark_Float64, std::string>> testFixtureNumberMaxInvalidValuesSlider = {
{ "-100", Converter::ArkValue<Ark_Float64>(-100.), ATTRIBUTE_MIN_DEFAULT_VALUE },
{ "0", Converter::ArkValue<Ark_Float64>(0.), "0.000000" },
};
std::vector<std::tuple<std::string, Ark_Float64, std::string>> testFixtureNumberStepValidValuesSlider = {
{ "1", Converter::ArkValue<Ark_Float64>(1.), "1.000000" },
{ "0.5", Converter::ArkValue<Ark_Float64>(0.5), "0.500000" },
{ "10", Converter::ArkValue<Ark_Float64>(10.), "10.000000" },
};
std::vector<std::tuple<std::string, Ark_Float64, std::string>> testFixtureNumberStepInvalidValuesSlider = {
{ "0", Converter::ArkValue<Ark_Float64>(0.), ATTRIBUTE_STEP_DEFAULT_VALUE },
{ "-1", Converter::ArkValue<Ark_Float64>(-1.), ATTRIBUTE_STEP_DEFAULT_VALUE },
{ "200", Converter::ArkValue<Ark_Float64>(200.), ATTRIBUTE_STEP_DEFAULT_VALUE },
};
std::vector<std::tuple<std::string, Ark_SliderStyle,
std::string>> testFixtureEnumSliderStyleValidValuesSlider = {
{ "ARK_SLIDER_STYLE_OUT_SET", ARK_SLIDER_STYLE_OUT_SET, "SliderStyle.OutSet" },
{ "ARK_SLIDER_STYLE_IN_SET", ARK_SLIDER_STYLE_IN_SET, "SliderStyle.InSet" },
{ "ARK_SLIDER_STYLE_NONE", ARK_SLIDER_STYLE_NONE, "SliderStyle.NONE" },
};
std::vector<std::tuple<std::string, Ark_Axis, std::string>> testFixtureEnumAxisValidValuesSlider = {
{ "ARK_AXIS_VERTICAL", ARK_AXIS_VERTICAL, "Axis.Vertical" },
{ "ARK_AXIS_HORIZONTAL", ARK_AXIS_HORIZONTAL, "Axis.Horizontal" },
};
std::vector<std::tuple<std::string, Ark_String, std::string>> testFixtureNumberMinLabelValidValuesSlider = {
{ "1", Converter::ArkValue<Ark_String>("1"), "1.000000" },
{ "2.2", Converter::ArkValue<Ark_String>("2.2"), "2.200000" },
{ "99", Converter::ArkValue<Ark_String>("99"), "99.000000" },
{ "-100", Converter::ArkValue<Ark_String>("-100"), "-100.000000" },
};
std::vector<std::tuple<std::string, Ark_String, std::string>> testFixtureNumberMaxLabelValidValuesSlider = {
{ "1", Converter::ArkValue<Ark_String>("1"), "1.000000" },
{ "2.2", Converter::ArkValue<Ark_String>("2.2"), "2.200000" },
{ "99", Converter::ArkValue<Ark_String>("99"), "99.000000" },
{ "200", Converter::ArkValue<Ark_String>("200"), "200.000000" },
};
std::vector<std::tuple<std::string, Ark_Length, std::string>> testFixtureLengthNumNonNegValidValuesThicknessSlider = {
{ "123", Converter::ArkValue<Ark_Length>("123px"), "123.00px" },
{ "0", Converter::ArkValue<Ark_Length>("0px"), "4.00vp" },
{ "1.23f", Converter::ArkValue<Ark_Length>(1.23f), "1.23vp" },
};
std::vector<std::tuple<std::string, Ark_Length, std::string>> testFixtureLengthNumNonNegValidValuesSlider = {
{ "123", Converter::ArkValue<Ark_Length>("123px"), "123.00px" },
{ "0", Converter::ArkValue<Ark_Length>("0px"), "0.00px" },
{ "1.23f", Converter::ArkValue<Ark_Length>(1.23f), "1.23vp" },
};
std::vector<std::tuple<std::string, Ark_Length, std::string>> testFixtureLengthNumNonNegValidValuesBlockSizeSlider = {
{ "123", Converter::ArkValue<Ark_Length>("123px"), "123.00px" },
{ "0", Converter::ArkValue<Ark_Length>("0px"), ATTRIBUTE_BLOCK_SIZE_WIDTH_DEFAULT_VALUE },
{ "1.23f", Converter::ArkValue<Ark_Length>(1.23f), "1.23vp" },
};
std::vector<std::tuple<std::string, Ark_SliderBlockType,
std::string>> testFixtureEnumSliderBlockTypeValidValuesSlider = {
{ "ARK_SLIDER_BLOCK_TYPE_DEFAULT", ARK_SLIDER_BLOCK_TYPE_DEFAULT, "BlockStyleType.DEFAULT" },
{ "ARK_SLIDER_BLOCK_TYPE_IMAGE", ARK_SLIDER_BLOCK_TYPE_IMAGE, "BlockStyleType.IMAGE" },
{ "ARK_SLIDER_BLOCK_TYPE_SHAPE", ARK_SLIDER_BLOCK_TYPE_SHAPE, "BlockStyleType.SHAPE" },
};
std::vector<std::tuple<std::string, Ark_Float64, std::string>> testFixtureNumberResponsiveDistanceValidValuesSlider = {
{ "0", Converter::ArkValue<Ark_Float64>(0.), "0.000000" },
{ "1", Converter::ArkValue<Ark_Float64>(1.), "1.000000" },
{ "99", Converter::ArkValue<Ark_Float64>(99.), "99.000000" },
};
std::vector<std::tuple<std::string, Ark_Float64, std::string>> testFixtureNumberRangeFromValidValuesSlider = {
{ "0", Converter::ArkValue<Ark_Float64>(0.), "0.000000" },
{ "1", Converter::ArkValue<Ark_Float64>(1.), "1.000000" },
{ "99", Converter::ArkValue<Ark_Float64>(99.), "99.000000" },
{ "100", Converter::ArkValue<Ark_Float64>(100.), "100.000000" },
};
std::vector<std::tuple<std::string, Ark_Float64, std::string>> testFixtureNumberRangeFromInvalidValuesSlider = {
{ "-1", Converter::ArkValue<Ark_Float64>(-1.), "-1.000000" },
{ "200", Converter::ArkValue<Ark_Float64>(200.), "200.000000" },
};
std::vector<std::tuple<std::string, Ark_Float64, std::string>> testFixtureNumberRangeToValidValuesSlider = {
{ "100", Converter::ArkValue<Ark_Float64>(100.), "100.000000" },
{ "0", Converter::ArkValue<Ark_Float64>(0.), "0.000000" },
{ "1", Converter::ArkValue<Ark_Float64>(1.), "1.000000" },
{ "99", Converter::ArkValue<Ark_Float64>(99.), "99.000000" },
};
std::vector<std::tuple<std::string, Ark_Float64, std::string>> testFixtureNumberRangeToInvalidValuesSlider = {
{ "-1", Converter::ArkValue<Ark_Float64>(-1.), "-1.000000" },
{ "200", Converter::ArkValue<Ark_Float64>(200.), "200.000000" },
};
}
class SliderModifierTest : public ModifierTestBase<GENERATED_ArkUISliderModifier,
&GENERATED_ArkUINodeModifiers::getSliderModifier, GENERATED_ARKUI_SLIDER> {
public:
static void SetUpTestCase()
{
ModifierTestBase::SetUpTestCase();
auto theme = SetupThemeStyle(THEME_PATTERN_SLIDER);
SetupTheme<SliderTheme>();
for (auto&& res : Fixtures::resourceInitTable) {
AddResource(std::get<0>(res), std::get<2>(res));
AddResource(std::get<1>(res), std::get<2>(res));
}
}
};
}
#endif