158ec469eSopenharmony_ci/* 258ec469eSopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 358ec469eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 458ec469eSopenharmony_ci * you may not use this file except in compliance with the License. 558ec469eSopenharmony_ci * You may obtain a copy of the License at 658ec469eSopenharmony_ci * 758ec469eSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 858ec469eSopenharmony_ci * 958ec469eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1058ec469eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1158ec469eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1258ec469eSopenharmony_ci * See the License for the specific language governing permissions and 1358ec469eSopenharmony_ci * limitations under the License. 1458ec469eSopenharmony_ci */ 1558ec469eSopenharmony_ci 1658ec469eSopenharmony_ci#include <gtest/gtest.h> 1758ec469eSopenharmony_ci#include <thread> 1858ec469eSopenharmony_ci 1958ec469eSopenharmony_ci#include "accesstoken_kit.h" 2058ec469eSopenharmony_ci#include "nativetoken_kit.h" 2158ec469eSopenharmony_ci#include "token_setproc.h" 2258ec469eSopenharmony_ci#include "light_agent.h" 2358ec469eSopenharmony_ci#include "sensors_errors.h" 2458ec469eSopenharmony_ci 2558ec469eSopenharmony_ci#undef LOG_TAG 2658ec469eSopenharmony_ci#define LOG_TAG "LightAgentTest" 2758ec469eSopenharmony_ci 2858ec469eSopenharmony_cinamespace OHOS { 2958ec469eSopenharmony_cinamespace Sensors { 3058ec469eSopenharmony_ciusing namespace testing::ext; 3158ec469eSopenharmony_ciusing namespace Security::AccessToken; 3258ec469eSopenharmony_ciusing Security::AccessToken::AccessTokenID; 3358ec469eSopenharmony_ci 3458ec469eSopenharmony_cinamespace { 3558ec469eSopenharmony_ciconstexpr int32_t TIME_WAIT_FOR_OP = 2; 3658ec469eSopenharmony_ci 3758ec469eSopenharmony_ciPermissionStateFull g_infoManagerTestState = { 3858ec469eSopenharmony_ci .grantFlags = {1}, 3958ec469eSopenharmony_ci .grantStatus = {PermissionState::PERMISSION_GRANTED}, 4058ec469eSopenharmony_ci .isGeneral = true, 4158ec469eSopenharmony_ci .permissionName = "ohos.permission.SYSTEM_LIGHT_CONTROL", 4258ec469eSopenharmony_ci .resDeviceID = {"local"} 4358ec469eSopenharmony_ci}; 4458ec469eSopenharmony_ci 4558ec469eSopenharmony_ciHapPolicyParams g_infoManagerTestPolicyPrams = { 4658ec469eSopenharmony_ci .apl = APL_NORMAL, 4758ec469eSopenharmony_ci .domain = "test.domain", 4858ec469eSopenharmony_ci .permList = {}, 4958ec469eSopenharmony_ci .permStateList = {g_infoManagerTestState} 5058ec469eSopenharmony_ci}; 5158ec469eSopenharmony_ci 5258ec469eSopenharmony_ciHapInfoParams g_infoManagerTestInfoParms = { 5358ec469eSopenharmony_ci .bundleName = "lightagent_test", 5458ec469eSopenharmony_ci .userID = 1, 5558ec469eSopenharmony_ci .instIndex = 0, 5658ec469eSopenharmony_ci .appIDDesc = "LightAgentTest" 5758ec469eSopenharmony_ci}; 5858ec469eSopenharmony_ci} // namespace 5958ec469eSopenharmony_ci 6058ec469eSopenharmony_ciclass LightAgentTest : public testing::Test { 6158ec469eSopenharmony_cipublic: 6258ec469eSopenharmony_ci static void SetUpTestCase(); 6358ec469eSopenharmony_ci static void TearDownTestCase(); 6458ec469eSopenharmony_ci void SetUp() {} 6558ec469eSopenharmony_ci void TearDown() {} 6658ec469eSopenharmony_ciprivate: 6758ec469eSopenharmony_ci static AccessTokenID tokenID_; 6858ec469eSopenharmony_ci}; 6958ec469eSopenharmony_ci 7058ec469eSopenharmony_ciAccessTokenID LightAgentTest::tokenID_ = 0; 7158ec469eSopenharmony_ci 7258ec469eSopenharmony_ciLightInfo *g_lightInfo = nullptr; 7358ec469eSopenharmony_ciint32_t g_lightId = -1; 7458ec469eSopenharmony_ciint32_t g_invalidLightId = -1; 7558ec469eSopenharmony_ciint32_t g_lightType = -1; 7658ec469eSopenharmony_ci 7758ec469eSopenharmony_civoid LightAgentTest::SetUpTestCase() 7858ec469eSopenharmony_ci{ 7958ec469eSopenharmony_ci AccessTokenIDEx tokenIdEx = {0}; 8058ec469eSopenharmony_ci tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms, g_infoManagerTestPolicyPrams); 8158ec469eSopenharmony_ci tokenID_ = tokenIdEx.tokenIdExStruct.tokenID; 8258ec469eSopenharmony_ci ASSERT_NE(0, tokenID_); 8358ec469eSopenharmony_ci ASSERT_EQ(0, SetSelfTokenID(tokenID_)); 8458ec469eSopenharmony_ci} 8558ec469eSopenharmony_ci 8658ec469eSopenharmony_civoid LightAgentTest::TearDownTestCase() 8758ec469eSopenharmony_ci{ 8858ec469eSopenharmony_ci int32_t ret = AccessTokenKit::DeleteToken(tokenID_); 8958ec469eSopenharmony_ci if (tokenID_ != 0) { 9058ec469eSopenharmony_ci ASSERT_EQ(RET_SUCCESS, ret); 9158ec469eSopenharmony_ci } 9258ec469eSopenharmony_ci} 9358ec469eSopenharmony_ci 9458ec469eSopenharmony_ci/** 9558ec469eSopenharmony_ci * @tc.name: StartLightTest_001 9658ec469eSopenharmony_ci * @tc.desc: Verify GetLightList 9758ec469eSopenharmony_ci * @tc.type: FUNC 9858ec469eSopenharmony_ci * @tc.require: I63TFA 9958ec469eSopenharmony_ci */ 10058ec469eSopenharmony_ciHWTEST_F(LightAgentTest, StartLightTest_001, TestSize.Level1) 10158ec469eSopenharmony_ci{ 10258ec469eSopenharmony_ci CALL_LOG_ENTER; 10358ec469eSopenharmony_ci int32_t count = -1; 10458ec469eSopenharmony_ci int32_t ret = GetLightList(&g_lightInfo, count); 10558ec469eSopenharmony_ci for (int32_t i = 0; i < count; ++i) { 10658ec469eSopenharmony_ci MISC_HILOGI("lightId:%{public}d, lightName:%{public}s, lightNumber:%{public}d, lightType:%{public}d", 10758ec469eSopenharmony_ci g_lightInfo[i].lightId, g_lightInfo[i].lightName, g_lightInfo[i].lightNumber, g_lightInfo[i].lightType); 10858ec469eSopenharmony_ci g_lightId = g_lightInfo[i].lightId; 10958ec469eSopenharmony_ci g_lightType = g_lightInfo[i].lightType; 11058ec469eSopenharmony_ci } 11158ec469eSopenharmony_ci ASSERT_EQ(ret, 0); 11258ec469eSopenharmony_ci} 11358ec469eSopenharmony_ci 11458ec469eSopenharmony_ci/** 11558ec469eSopenharmony_ci * @tc.name: StartLightTest_002 11658ec469eSopenharmony_ci * @tc.desc: Verify GetLightList 11758ec469eSopenharmony_ci * @tc.type: FUNC 11858ec469eSopenharmony_ci * @tc.require: I63TFA 11958ec469eSopenharmony_ci */ 12058ec469eSopenharmony_ciHWTEST_F(LightAgentTest, StartLightTest_002, TestSize.Level1) 12158ec469eSopenharmony_ci{ 12258ec469eSopenharmony_ci CALL_LOG_ENTER; 12358ec469eSopenharmony_ci int32_t count = -1; 12458ec469eSopenharmony_ci int32_t ret = GetLightList(nullptr, count); 12558ec469eSopenharmony_ci ASSERT_EQ(ret, -1); 12658ec469eSopenharmony_ci} 12758ec469eSopenharmony_ci 12858ec469eSopenharmony_cibool GetLightColor(LightColor &color, int32_t lightType) 12958ec469eSopenharmony_ci{ 13058ec469eSopenharmony_ci switch (lightType) { 13158ec469eSopenharmony_ci case LIGHT_TYPE_SINGLE_COLOR: { 13258ec469eSopenharmony_ci color.singleColor = 0Xff; 13358ec469eSopenharmony_ci return true; 13458ec469eSopenharmony_ci } 13558ec469eSopenharmony_ci case LIGHT_TYPE_RGB_COLOR: { 13658ec469eSopenharmony_ci color.rgbColor = { 13758ec469eSopenharmony_ci .r = 0Xff, 13858ec469eSopenharmony_ci .g = 0Xff, 13958ec469eSopenharmony_ci .b = 0Xff 14058ec469eSopenharmony_ci }; 14158ec469eSopenharmony_ci return true; 14258ec469eSopenharmony_ci } 14358ec469eSopenharmony_ci case LIGHT_TYPE_WRGB_COLOR: { 14458ec469eSopenharmony_ci color.wrgbColor = { 14558ec469eSopenharmony_ci .w = 0Xff, 14658ec469eSopenharmony_ci .r = 0Xff, 14758ec469eSopenharmony_ci .g = 0Xff, 14858ec469eSopenharmony_ci .b = 0Xff 14958ec469eSopenharmony_ci }; 15058ec469eSopenharmony_ci return true; 15158ec469eSopenharmony_ci } 15258ec469eSopenharmony_ci default: { 15358ec469eSopenharmony_ci MISC_HILOGE("lightType:%{public}d invalid", lightType); 15458ec469eSopenharmony_ci return false; 15558ec469eSopenharmony_ci } 15658ec469eSopenharmony_ci } 15758ec469eSopenharmony_ci} 15858ec469eSopenharmony_ci 15958ec469eSopenharmony_ci/** 16058ec469eSopenharmony_ci * @tc.name: StartLightTest_003 16158ec469eSopenharmony_ci * @tc.desc: Verify TurnOn 16258ec469eSopenharmony_ci * @tc.type: FUNC 16358ec469eSopenharmony_ci * @tc.require: I63TFA 16458ec469eSopenharmony_ci */ 16558ec469eSopenharmony_ciHWTEST_F(LightAgentTest, StartLightTest_003, TestSize.Level1) 16658ec469eSopenharmony_ci{ 16758ec469eSopenharmony_ci CALL_LOG_ENTER; 16858ec469eSopenharmony_ci int32_t powerLightId = 1; 16958ec469eSopenharmony_ci TurnOff(powerLightId); 17058ec469eSopenharmony_ci LightColor color; 17158ec469eSopenharmony_ci bool flag = GetLightColor(color, g_lightType); 17258ec469eSopenharmony_ci if (!flag) { 17358ec469eSopenharmony_ci ASSERT_FALSE(flag); 17458ec469eSopenharmony_ci } else { 17558ec469eSopenharmony_ci LightAnimation animation; 17658ec469eSopenharmony_ci animation.mode = LIGHT_MODE_DEFAULT; 17758ec469eSopenharmony_ci animation.onTime = 50; 17858ec469eSopenharmony_ci animation.offTime = 50; 17958ec469eSopenharmony_ci int32_t ret = TurnOn(g_lightId, color, animation); 18058ec469eSopenharmony_ci std::this_thread::sleep_for(std::chrono::milliseconds(TIME_WAIT_FOR_OP)); 18158ec469eSopenharmony_ci ASSERT_EQ(ret, 0); 18258ec469eSopenharmony_ci } 18358ec469eSopenharmony_ci} 18458ec469eSopenharmony_ci 18558ec469eSopenharmony_ci/** 18658ec469eSopenharmony_ci * @tc.name: StartLightTest_004 18758ec469eSopenharmony_ci * @tc.desc: Verify TurnOn 18858ec469eSopenharmony_ci * @tc.type: FUNC 18958ec469eSopenharmony_ci * @tc.require: I63TFA 19058ec469eSopenharmony_ci */ 19158ec469eSopenharmony_ciHWTEST_F(LightAgentTest, StartLightTest_004, TestSize.Level1) 19258ec469eSopenharmony_ci{ 19358ec469eSopenharmony_ci CALL_LOG_ENTER; 19458ec469eSopenharmony_ci LightColor color; 19558ec469eSopenharmony_ci bool flag = GetLightColor(color, g_lightType); 19658ec469eSopenharmony_ci if (!flag) { 19758ec469eSopenharmony_ci ASSERT_FALSE(flag); 19858ec469eSopenharmony_ci } else { 19958ec469eSopenharmony_ci LightAnimation animation; 20058ec469eSopenharmony_ci animation.mode = LIGHT_MODE_BUTT; 20158ec469eSopenharmony_ci animation.onTime = 50; 20258ec469eSopenharmony_ci animation.offTime = 50; 20358ec469eSopenharmony_ci int32_t ret = TurnOn(g_lightId, color, animation); 20458ec469eSopenharmony_ci ASSERT_EQ(ret, -1); 20558ec469eSopenharmony_ci } 20658ec469eSopenharmony_ci} 20758ec469eSopenharmony_ci 20858ec469eSopenharmony_ci/** 20958ec469eSopenharmony_ci * @tc.name: StartLightTest_005 21058ec469eSopenharmony_ci * @tc.desc: Verify TurnOn 21158ec469eSopenharmony_ci * @tc.type: FUNC 21258ec469eSopenharmony_ci * @tc.require: I63TFA 21358ec469eSopenharmony_ci */ 21458ec469eSopenharmony_ciHWTEST_F(LightAgentTest, StartLightTest_005, TestSize.Level1) 21558ec469eSopenharmony_ci{ 21658ec469eSopenharmony_ci CALL_LOG_ENTER; 21758ec469eSopenharmony_ci LightColor color; 21858ec469eSopenharmony_ci bool flag = GetLightColor(color, g_lightType); 21958ec469eSopenharmony_ci if (!flag) { 22058ec469eSopenharmony_ci ASSERT_FALSE(flag); 22158ec469eSopenharmony_ci } else { 22258ec469eSopenharmony_ci LightAnimation animation; 22358ec469eSopenharmony_ci animation.mode = -1; 22458ec469eSopenharmony_ci animation.onTime = 50; 22558ec469eSopenharmony_ci animation.offTime = 50; 22658ec469eSopenharmony_ci int32_t ret = TurnOn(g_lightId, color, animation); 22758ec469eSopenharmony_ci ASSERT_EQ(ret, -1); 22858ec469eSopenharmony_ci } 22958ec469eSopenharmony_ci} 23058ec469eSopenharmony_ci 23158ec469eSopenharmony_ci/** 23258ec469eSopenharmony_ci * @tc.name: StartLightTest_006 23358ec469eSopenharmony_ci * @tc.desc: Verify TurnOn 23458ec469eSopenharmony_ci * @tc.type: FUNC 23558ec469eSopenharmony_ci * @tc.require: I63TFA 23658ec469eSopenharmony_ci */ 23758ec469eSopenharmony_ciHWTEST_F(LightAgentTest, StartLightTest_006, TestSize.Level1) 23858ec469eSopenharmony_ci{ 23958ec469eSopenharmony_ci CALL_LOG_ENTER; 24058ec469eSopenharmony_ci LightColor color; 24158ec469eSopenharmony_ci bool flag = GetLightColor(color, g_lightType); 24258ec469eSopenharmony_ci if (!flag) { 24358ec469eSopenharmony_ci ASSERT_FALSE(flag); 24458ec469eSopenharmony_ci } else { 24558ec469eSopenharmony_ci LightAnimation animation; 24658ec469eSopenharmony_ci animation.mode = LIGHT_MODE_DEFAULT; 24758ec469eSopenharmony_ci animation.onTime = -1; 24858ec469eSopenharmony_ci animation.offTime = 50; 24958ec469eSopenharmony_ci int32_t ret = TurnOn(g_lightId, color, animation); 25058ec469eSopenharmony_ci ASSERT_EQ(ret, -1); 25158ec469eSopenharmony_ci } 25258ec469eSopenharmony_ci} 25358ec469eSopenharmony_ci 25458ec469eSopenharmony_ci/** 25558ec469eSopenharmony_ci * @tc.name: StartLightTest_007 25658ec469eSopenharmony_ci * @tc.desc: Verify TurnOn 25758ec469eSopenharmony_ci * @tc.type: FUNC 25858ec469eSopenharmony_ci * @tc.require: I63TFA 25958ec469eSopenharmony_ci */ 26058ec469eSopenharmony_ciHWTEST_F(LightAgentTest, StartLightTest_007, TestSize.Level1) 26158ec469eSopenharmony_ci{ 26258ec469eSopenharmony_ci CALL_LOG_ENTER; 26358ec469eSopenharmony_ci LightColor color; 26458ec469eSopenharmony_ci bool flag = GetLightColor(color, g_lightType); 26558ec469eSopenharmony_ci if (!flag) { 26658ec469eSopenharmony_ci ASSERT_FALSE(flag); 26758ec469eSopenharmony_ci } else { 26858ec469eSopenharmony_ci LightAnimation animation; 26958ec469eSopenharmony_ci animation.mode = LIGHT_MODE_DEFAULT; 27058ec469eSopenharmony_ci animation.onTime = 50; 27158ec469eSopenharmony_ci animation.offTime = -1; 27258ec469eSopenharmony_ci int32_t ret = TurnOn(g_lightId, color, animation); 27358ec469eSopenharmony_ci ASSERT_EQ(ret, -1); 27458ec469eSopenharmony_ci } 27558ec469eSopenharmony_ci} 27658ec469eSopenharmony_ci 27758ec469eSopenharmony_ci/** 27858ec469eSopenharmony_ci * @tc.name: StartLightTest_008 27958ec469eSopenharmony_ci * @tc.desc: Verify TurnOn 28058ec469eSopenharmony_ci * @tc.type: FUNC 28158ec469eSopenharmony_ci * @tc.require: I63TFA 28258ec469eSopenharmony_ci */ 28358ec469eSopenharmony_ciHWTEST_F(LightAgentTest, StartLightTest_008, TestSize.Level1) 28458ec469eSopenharmony_ci{ 28558ec469eSopenharmony_ci CALL_LOG_ENTER; 28658ec469eSopenharmony_ci LightColor color; 28758ec469eSopenharmony_ci bool flag = GetLightColor(color, g_lightType); 28858ec469eSopenharmony_ci if (!flag) { 28958ec469eSopenharmony_ci ASSERT_FALSE(flag); 29058ec469eSopenharmony_ci } else { 29158ec469eSopenharmony_ci LightAnimation animation; 29258ec469eSopenharmony_ci animation.mode = LIGHT_MODE_DEFAULT; 29358ec469eSopenharmony_ci animation.onTime = 2; 29458ec469eSopenharmony_ci animation.offTime = 2; 29558ec469eSopenharmony_ci int32_t ret = TurnOn(g_lightId, color, animation); 29658ec469eSopenharmony_ci std::this_thread::sleep_for(std::chrono::milliseconds(TIME_WAIT_FOR_OP)); 29758ec469eSopenharmony_ci ASSERT_EQ(ret, 0); 29858ec469eSopenharmony_ci } 29958ec469eSopenharmony_ci} 30058ec469eSopenharmony_ci 30158ec469eSopenharmony_ci/** 30258ec469eSopenharmony_ci * @tc.name: StartLightTest_009 30358ec469eSopenharmony_ci * @tc.desc: Verify TurnOn 30458ec469eSopenharmony_ci * @tc.type: FUNC 30558ec469eSopenharmony_ci * @tc.require: I63TFA 30658ec469eSopenharmony_ci */ 30758ec469eSopenharmony_ciHWTEST_F(LightAgentTest, StartLightTest_009, TestSize.Level1) 30858ec469eSopenharmony_ci{ 30958ec469eSopenharmony_ci CALL_LOG_ENTER; 31058ec469eSopenharmony_ci LightColor color; 31158ec469eSopenharmony_ci bool flag = GetLightColor(color, g_lightType); 31258ec469eSopenharmony_ci if (!flag) { 31358ec469eSopenharmony_ci ASSERT_FALSE(flag); 31458ec469eSopenharmony_ci } else { 31558ec469eSopenharmony_ci LightAnimation animation; 31658ec469eSopenharmony_ci animation.mode = LIGHT_MODE_DEFAULT; 31758ec469eSopenharmony_ci animation.onTime = 2; 31858ec469eSopenharmony_ci animation.offTime = 2; 31958ec469eSopenharmony_ci int32_t ret = TurnOn(g_invalidLightId, color, animation); 32058ec469eSopenharmony_ci ASSERT_EQ(ret, -1); 32158ec469eSopenharmony_ci } 32258ec469eSopenharmony_ci} 32358ec469eSopenharmony_ci 32458ec469eSopenharmony_ci/** 32558ec469eSopenharmony_ci * @tc.name: StartLightTest_010 32658ec469eSopenharmony_ci * @tc.desc: Verify TurnOff 32758ec469eSopenharmony_ci * @tc.type: FUNC 32858ec469eSopenharmony_ci * @tc.require: I63TFA 32958ec469eSopenharmony_ci */ 33058ec469eSopenharmony_ciHWTEST_F(LightAgentTest, StartLightTest_010, TestSize.Level1) 33158ec469eSopenharmony_ci{ 33258ec469eSopenharmony_ci CALL_LOG_ENTER; 33358ec469eSopenharmony_ci int32_t ret = TurnOff(g_lightId); 33458ec469eSopenharmony_ci ASSERT_EQ(ret, 0); 33558ec469eSopenharmony_ci} 33658ec469eSopenharmony_ci 33758ec469eSopenharmony_ci/** 33858ec469eSopenharmony_ci * @tc.name: StartLightTest_011 33958ec469eSopenharmony_ci * @tc.desc: Verify TurnOff 34058ec469eSopenharmony_ci * @tc.type: FUNC 34158ec469eSopenharmony_ci * @tc.require: I63TFA 34258ec469eSopenharmony_ci */ 34358ec469eSopenharmony_ciHWTEST_F(LightAgentTest, StartLightTest_011, TestSize.Level1) 34458ec469eSopenharmony_ci{ 34558ec469eSopenharmony_ci CALL_LOG_ENTER; 34658ec469eSopenharmony_ci int32_t ret = TurnOff(g_invalidLightId); 34758ec469eSopenharmony_ci ASSERT_EQ(ret, -1); 34858ec469eSopenharmony_ci} 34958ec469eSopenharmony_ci} // namespace Sensors 35058ec469eSopenharmony_ci} // namespace OHOS 351