1 /*
2 * Copyright (c) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "base_test.h"
17
18 #include "js_debugger_config.h"
19
20 namespace OHOS {
21 namespace ACELite {
BaseTest()22 BaseTest::BaseTest() : globObj_(0), attrsObj_(0), styleObj_(0), componentNameId_(0) {}
23
SetUp(void)24 void BaseTest::SetUp(void)
25 {
26 Debugger::GetInstance().SetupJSContext();
27 jerry_init(JERRY_INIT_EMPTY);
28
29 globObj_ = jerry_get_global_object();
30 attrsObj_ = jerry_create_object();
31 JerrySetNamedProperty(globObj_, "attrs", attrsObj_);
32
33 styleObj_ = jerry_create_object();
34 JerrySetNamedProperty(globObj_, "staticStyle", styleObj_);
35 rootComponentMock_.PrepareRootContainer();
36 }
37
TearDown()38 void BaseTest::TearDown()
39 {
40 JsAppContext::GetInstance()->ReleaseStyles();
41 jerry_release_value(attrsObj_);
42 jerry_release_value(styleObj_);
43 jerry_release_value(globObj_);
44 jerry_cleanup();
45 Debugger::GetInstance().ReleaseJSContext();
46 }
47
GetRenderedComponent(uint16_t componentKeyId) const48 Component *BaseTest::GetRenderedComponent(uint16_t componentKeyId) const
49 {
50 jerry_value_t children = jerry_create_null();
51 Component *component = ComponentFactory::CreateComponent(componentKeyId, globObj_, children);
52 rootComponentMock_.RenderComponent(*component);
53 jerry_release_value(children);
54 return component;
55 }
56
ReleaseComponent(Component * & component) const57 void BaseTest::ReleaseComponent(Component *&component) const
58 {
59 if (component != nullptr) {
60 component->Release();
61 delete component;
62 component = nullptr;
63 }
64 }
65
GetRGBColor(int32_t colorIntValue) const66 ColorType BaseTest::GetRGBColor(int32_t colorIntValue) const
67 {
68 uint32_t colorValue = colorIntValue;
69 uint8_t red8 = uint8_t((colorValue & TEXT_RED_COLOR_MASK) >> RED_COLOR_START_BIT);
70 uint8_t green8 = uint8_t((colorValue & TEXT_GREEN_COLOR_MASK) >> GREEN_COLOR_START_BIT);
71 uint8_t blue8 = uint8_t((colorValue & TEXT_BLUE_COLOR_MASK));
72 return Color::GetColorFromRGB(red8, green8, blue8);
73 }
74
UpdateNumAttributeOrStyleValue(Component * component,const char * attributeName,const int32_t newNumValue,const bool isToSetAttribute) const75 void BaseTest::UpdateNumAttributeOrStyleValue(Component *component,
76 const char *attributeName,
77 const int32_t newNumValue,
78 const bool isToSetAttribute) const
79 {
80 if (component == nullptr) {
81 HILOG_WARN(HILOG_MODULE_ACE, "UpdateNumAttributeOrStyleValue component is null\n");
82 return;
83 }
84 jerry_value_t attrName = jerry_create_string(reinterpret_cast<const jerry_char_t *>(attributeName));
85 jerry_value_t attrValue = jerry_create_number(newNumValue);
86 if (isToSetAttribute) {
87 jerry_set_property(attrsObj_, attrName, attrValue);
88 } else {
89 jerry_set_property(styleObj_, attrName, attrValue);
90 }
91 component->UpdateView(KeyParser::ParseKeyId(attributeName), attrValue);
92 jerry_release_value(attrName);
93 jerry_release_value(attrValue);
94 }
95
UpdateCharAttributeOrStyleValue(Component * component,const char * attributeName,const char * newCharValue,const bool isToSetAttribute) const96 void BaseTest::UpdateCharAttributeOrStyleValue(Component *component,
97 const char *attributeName,
98 const char *newCharValue,
99 const bool isToSetAttribute) const
100 {
101 if (component == nullptr) {
102 HILOG_WARN(HILOG_MODULE_ACE, "UpdateCharAttributeOrStyleValue component is null\n");
103 return;
104 }
105 jerry_value_t attrName = jerry_create_string(reinterpret_cast<const jerry_char_t *>(attributeName));
106 jerry_value_t attrValue = jerry_create_string(reinterpret_cast<const jerry_char_t *>(newCharValue));
107 if (isToSetAttribute) {
108 jerry_set_property(attrsObj_, attrName, attrValue);
109 } else {
110 jerry_set_property(styleObj_, attrName, attrValue);
111 }
112 component->UpdateView(KeyParser::ParseKeyId(attributeName), attrValue);
113 jerry_release_value(attrName);
114 jerry_release_value(attrValue);
115 }
116
SetCompnentNameId(const char * componentName)117 uint16_t BaseTest::SetCompnentNameId(const char *componentName)
118 {
119 if (componentName == nullptr) {
120 HILOG_WARN(HILOG_MODULE_ACE, "null component name\n");
121 return K_UNKNOWN;
122 }
123 uint8_t maxLength = 9;
124 char *tarComponentName = reinterpret_cast<char *>(malloc(maxLength));
125 if (tarComponentName == nullptr) {
126 HILOG_WARN(HILOG_MODULE_ACE, "alloc memory fail\n");
127 return K_UNKNOWN;
128 }
129 tarComponentName[0] = '\0';
130 bool copyRes = false;
131 if (!strcmp(componentName, "progress")) {
132 if (strcpy_s(tarComponentName, maxLength, "progress") == 0)
133 copyRes = true;
134 } else if (!strcmp(componentName, "chart")) {
135 if (strcpy_s(tarComponentName, maxLength, "chart") == 0)
136 copyRes = true;
137 } else if (!strcmp(componentName, "marquee")) {
138 if (strcpy_s(tarComponentName, maxLength, "marquee") == 0)
139 copyRes = true;
140 }
141
142 if (copyRes) {
143 componentNameId_ = KeyParser::ParseKeyId(tarComponentName, strlen(tarComponentName));
144 } else {
145 componentNameId_ = K_UNKNOWN;
146 }
147 free(tarComponentName);
148 tarComponentName = nullptr;
149 return componentNameId_;
150 }
151 } // namespace ACELite
152 } // namespace OHOS
153