/* * Copyright (c) 2021 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. */ #include "base_test.h" #include "js_debugger_config.h" namespace OHOS { namespace ACELite { BaseTest::BaseTest() : globObj_(0), attrsObj_(0), styleObj_(0), componentNameId_(0) {} void BaseTest::SetUp(void) { Debugger::GetInstance().SetupJSContext(); jerry_init(JERRY_INIT_EMPTY); globObj_ = jerry_get_global_object(); attrsObj_ = jerry_create_object(); JerrySetNamedProperty(globObj_, "attrs", attrsObj_); styleObj_ = jerry_create_object(); JerrySetNamedProperty(globObj_, "staticStyle", styleObj_); rootComponentMock_.PrepareRootContainer(); } void BaseTest::TearDown() { JsAppContext::GetInstance()->ReleaseStyles(); jerry_release_value(attrsObj_); jerry_release_value(styleObj_); jerry_release_value(globObj_); jerry_cleanup(); Debugger::GetInstance().ReleaseJSContext(); } Component *BaseTest::GetRenderedComponent(uint16_t componentKeyId) const { jerry_value_t children = jerry_create_null(); Component *component = ComponentFactory::CreateComponent(componentKeyId, globObj_, children); rootComponentMock_.RenderComponent(*component); jerry_release_value(children); return component; } void BaseTest::ReleaseComponent(Component *&component) const { if (component != nullptr) { component->Release(); delete component; component = nullptr; } } ColorType BaseTest::GetRGBColor(int32_t colorIntValue) const { uint32_t colorValue = colorIntValue; uint8_t red8 = uint8_t((colorValue & TEXT_RED_COLOR_MASK) >> RED_COLOR_START_BIT); uint8_t green8 = uint8_t((colorValue & TEXT_GREEN_COLOR_MASK) >> GREEN_COLOR_START_BIT); uint8_t blue8 = uint8_t((colorValue & TEXT_BLUE_COLOR_MASK)); return Color::GetColorFromRGB(red8, green8, blue8); } void BaseTest::UpdateNumAttributeOrStyleValue(Component *component, const char *attributeName, const int32_t newNumValue, const bool isToSetAttribute) const { if (component == nullptr) { HILOG_WARN(HILOG_MODULE_ACE, "UpdateNumAttributeOrStyleValue component is null\n"); return; } jerry_value_t attrName = jerry_create_string(reinterpret_cast(attributeName)); jerry_value_t attrValue = jerry_create_number(newNumValue); if (isToSetAttribute) { jerry_set_property(attrsObj_, attrName, attrValue); } else { jerry_set_property(styleObj_, attrName, attrValue); } component->UpdateView(KeyParser::ParseKeyId(attributeName), attrValue); jerry_release_value(attrName); jerry_release_value(attrValue); } void BaseTest::UpdateCharAttributeOrStyleValue(Component *component, const char *attributeName, const char *newCharValue, const bool isToSetAttribute) const { if (component == nullptr) { HILOG_WARN(HILOG_MODULE_ACE, "UpdateCharAttributeOrStyleValue component is null\n"); return; } jerry_value_t attrName = jerry_create_string(reinterpret_cast(attributeName)); jerry_value_t attrValue = jerry_create_string(reinterpret_cast(newCharValue)); if (isToSetAttribute) { jerry_set_property(attrsObj_, attrName, attrValue); } else { jerry_set_property(styleObj_, attrName, attrValue); } component->UpdateView(KeyParser::ParseKeyId(attributeName), attrValue); jerry_release_value(attrName); jerry_release_value(attrValue); } uint16_t BaseTest::SetCompnentNameId(const char *componentName) { if (componentName == nullptr) { HILOG_WARN(HILOG_MODULE_ACE, "null component name\n"); return K_UNKNOWN; } uint8_t maxLength = 9; char *tarComponentName = reinterpret_cast(malloc(maxLength)); if (tarComponentName == nullptr) { HILOG_WARN(HILOG_MODULE_ACE, "alloc memory fail\n"); return K_UNKNOWN; } tarComponentName[0] = '\0'; bool copyRes = false; if (!strcmp(componentName, "progress")) { if (strcpy_s(tarComponentName, maxLength, "progress") == 0) copyRes = true; } else if (!strcmp(componentName, "chart")) { if (strcpy_s(tarComponentName, maxLength, "chart") == 0) copyRes = true; } else if (!strcmp(componentName, "marquee")) { if (strcpy_s(tarComponentName, maxLength, "marquee") == 0) copyRes = true; } if (copyRes) { componentNameId_ = KeyParser::ParseKeyId(tarComponentName, strlen(tarComponentName)); } else { componentNameId_ = K_UNKNOWN; } free(tarComponentName); tarComponentName = nullptr; return componentNameId_; } } // namespace ACELite } // namespace OHOS