* Copyright (c) 2025 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 "UTTest_ipc_model_codec_test.h"
#include "dm_constants.h"
#include "dm_subscribe_info.h"
namespace OHOS {
namespace DistributedHardware {
void IpcModelCodecTest::SetUpTestCase()
{
}
void IpcModelCodecTest::TearDownTestCase()
{
}
void IpcModelCodecTest::SetUp()
{
}
void IpcModelCodecTest::TearDown()
{
}
* @tc.name: EncodeDmRegServiceInfo_001
* @tc.desc: EncodeDmRegServiceInfo with normal input
* Step 1: Prepare DmRegisterServiceInfo with normal values
* Step 2: Call EncodeDmRegServiceInfo
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeDmRegServiceInfo_001, testing::ext::TestSize.Level1)
{
DmRegisterServiceInfo regServiceInfo;
regServiceInfo.userId = 100;
regServiceInfo.displayId = 1000;
regServiceInfo.serviceOwnerTokenId = 12345;
regServiceInfo.serviceOwnerPkgName = "com.test.owner";
regServiceInfo.serviceRegisterTokenId = 54321;
regServiceInfo.serviceType = "testType";
regServiceInfo.serviceName = "testServiceName";
regServiceInfo.serviceDisplayName = "Test Display Name";
regServiceInfo.serviceCode = "testCode";
regServiceInfo.customData = "custom data";
regServiceInfo.dataLen = 100;
regServiceInfo.timeStamp = 1234567890;
regServiceInfo.description = "test description";
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeDmRegServiceInfo(regServiceInfo, parcel);
EXPECT_EQ(ret, true);
DmRegisterServiceInfo decodedInfo;
bool decodeRet = IpcModelCodec::DecodeDmRegServiceInfo(parcel, decodedInfo);
EXPECT_EQ(decodeRet, true);
EXPECT_EQ(decodedInfo.userId, 100);
EXPECT_EQ(decodedInfo.displayId, 1000);
EXPECT_EQ(decodedInfo.serviceOwnerTokenId, 12345);
EXPECT_EQ(decodedInfo.serviceOwnerPkgName, "com.test.owner");
EXPECT_EQ(decodedInfo.serviceRegisterTokenId, 54321);
EXPECT_EQ(decodedInfo.serviceType, "testType");
EXPECT_EQ(decodedInfo.serviceName, "testServiceName");
EXPECT_EQ(decodedInfo.serviceDisplayName, "Test Display Name");
EXPECT_EQ(decodedInfo.serviceCode, "testCode");
EXPECT_EQ(decodedInfo.customData, "custom data");
EXPECT_EQ(decodedInfo.dataLen, 100);
EXPECT_EQ(decodedInfo.timeStamp, 1234567890);
EXPECT_EQ(decodedInfo.description, "test description");
}
* @tc.name: EncodeDmRegServiceInfo_002
* @tc.desc: EncodeDmRegServiceInfo with empty strings
* Step 1: Prepare DmRegisterServiceInfo with empty string values
* Step 2: Call EncodeDmRegServiceInfo
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeDmRegServiceInfo_002, testing::ext::TestSize.Level1)
{
DmRegisterServiceInfo regServiceInfo;
regServiceInfo.userId = 0;
regServiceInfo.displayId = 0;
regServiceInfo.serviceOwnerTokenId = 0;
regServiceInfo.serviceOwnerPkgName = "";
regServiceInfo.serviceRegisterTokenId = 0;
regServiceInfo.serviceType = "";
regServiceInfo.serviceName = "";
regServiceInfo.serviceDisplayName = "";
regServiceInfo.serviceCode = "";
regServiceInfo.customData = "";
regServiceInfo.dataLen = 0;
regServiceInfo.timeStamp = 0;
regServiceInfo.description = "";
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeDmRegServiceInfo(regServiceInfo, parcel);
EXPECT_EQ(ret, true);
DmRegisterServiceInfo decodedInfo;
bool decodeRet = IpcModelCodec::DecodeDmRegServiceInfo(parcel, decodedInfo);
EXPECT_EQ(decodeRet, true);
EXPECT_EQ(decodedInfo.userId, 0);
EXPECT_EQ(decodedInfo.serviceOwnerPkgName, "");
EXPECT_EQ(decodedInfo.serviceType, "");
}
* @tc.name: DecodeDmRegServiceInfo_001
* @tc.desc: DecodeDmRegServiceInfo with normal parcel data
* Step 1: Prepare MessageParcel with encoded data
* Step 2: Call DecodeDmRegServiceInfo
* Step 3: Verify decoded values match original data
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, DecodeDmRegServiceInfo_001, testing::ext::TestSize.Level1)
{
DmRegisterServiceInfo originalInfo;
originalInfo.userId = 200;
originalInfo.displayId = 2000;
originalInfo.serviceOwnerTokenId = 22345;
originalInfo.serviceOwnerPkgName = "com.test.owner2";
originalInfo.serviceRegisterTokenId = 254321;
originalInfo.serviceType = "testType2";
originalInfo.serviceName = "testServiceName2";
originalInfo.serviceDisplayName = "Test Display Name 2";
originalInfo.serviceCode = "testCode2";
originalInfo.customData = "custom data 2";
originalInfo.dataLen = 200;
originalInfo.timeStamp = 2234567890;
originalInfo.description = "test description 2";
MessageParcel parcel;
IpcModelCodec::EncodeDmRegServiceInfo(originalInfo, parcel);
DmRegisterServiceInfo decodedInfo;
bool ret = IpcModelCodec::DecodeDmRegServiceInfo(parcel, decodedInfo);
EXPECT_EQ(ret, true);
EXPECT_EQ(decodedInfo.userId, 200);
EXPECT_EQ(decodedInfo.displayId, 2000);
EXPECT_EQ(decodedInfo.serviceOwnerTokenId, 22345);
EXPECT_EQ(decodedInfo.serviceOwnerPkgName, "com.test.owner2");
EXPECT_EQ(decodedInfo.serviceRegisterTokenId, 254321);
}
* @tc.name: EncodeDmSrvDiscParam_001
* @tc.desc: EncodeDmSrvDiscParam with normal input
* Step 1: Prepare DmDiscoveryServiceParam with normal values
* Step 2: Call EncodeDmSrvDiscParam
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeDmSrvDiscParam_001, testing::ext::TestSize.Level1)
{
DmDiscoveryServiceParam param;
param.serviceName = "testService";
param.serviceType = "testType";
param.serviceDisplayName = "Test Service Display";
param.freq = DmExchangeFreq::DM_HIGH;
param.medium = DMSrvMediumType::SERVICE_MEDIUM_TYPE_BLE;
param.mode = DMSrvDiscoveryMode::SERVICE_PUBLISH_MODE_ACTIVE;
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeDmSrvDiscParam(param, parcel);
EXPECT_EQ(ret, true);
DmDiscoveryServiceParam decodedParam;
bool decodeRet = IpcModelCodec::DecodeDmSrvDiscParam(parcel, decodedParam);
EXPECT_EQ(decodeRet, true);
EXPECT_EQ(decodedParam.serviceName, "testService");
EXPECT_EQ(decodedParam.serviceType, "testType");
EXPECT_EQ(decodedParam.serviceDisplayName, "Test Service Display");
EXPECT_EQ(decodedParam.freq, DmExchangeFreq::DM_HIGH);
EXPECT_EQ(decodedParam.medium, DMSrvMediumType::SERVICE_MEDIUM_TYPE_BLE);
EXPECT_EQ(decodedParam.mode, DMSrvDiscoveryMode::SERVICE_PUBLISH_MODE_ACTIVE);
}
* @tc.name: EncodeDmSrvDiscParam_002
* @tc.desc: EncodeDmSrvDiscParam with different enum values
* Step 1: Prepare DmDiscoveryServiceParam with PASSIVE mode and AUTO medium
* Step 2: Call EncodeDmSrvDiscParam
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeDmSrvDiscParam_002, testing::ext::TestSize.Level1)
{
DmDiscoveryServiceParam param;
param.serviceName = "testService2";
param.serviceType = "testType2";
param.serviceDisplayName = "Test Service Display 2";
param.freq = DmExchangeFreq::DM_LOW;
param.medium = DMSrvMediumType::SERVICE_MEDIUM_TYPE_AUTO;
param.mode = DMSrvDiscoveryMode::SERVICE_PUBLISH_MODE_PASSIVE;
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeDmSrvDiscParam(param, parcel);
EXPECT_EQ(ret, true);
DmDiscoveryServiceParam decodedParam;
bool decodeRet = IpcModelCodec::DecodeDmSrvDiscParam(parcel, decodedParam);
EXPECT_EQ(decodeRet, true);
EXPECT_EQ(decodedParam.freq, DmExchangeFreq::DM_LOW);
EXPECT_EQ(decodedParam.medium, DMSrvMediumType::SERVICE_MEDIUM_TYPE_AUTO);
EXPECT_EQ(decodedParam.mode, DMSrvDiscoveryMode::SERVICE_PUBLISH_MODE_PASSIVE);
}
* @tc.name: DecodeDmSrvDiscParam_001
* @tc.desc: DecodeDmSrvDiscParam with normal parcel data
* Step 1: Prepare MessageParcel with encoded data
* Step 2: Call DecodeDmSrvDiscParam
* Step 3: Verify decoded values match original data
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, DecodeDmSrvDiscParam_001, testing::ext::TestSize.Level1)
{
DmDiscoveryServiceParam originalParam;
originalParam.serviceName = "discoverService";
originalParam.serviceType = "discoverType";
originalParam.serviceDisplayName = "Discover Service";
originalParam.freq = DmExchangeFreq::DM_MID;
originalParam.medium = DMSrvMediumType::SERVICE_MEDIUM_TYPE_MDNS;
originalParam.mode = DMSrvDiscoveryMode::SERVICE_PUBLISH_MODE_ACTIVE;
MessageParcel parcel;
IpcModelCodec::EncodeDmSrvDiscParam(originalParam, parcel);
DmDiscoveryServiceParam decodedParam;
bool ret = IpcModelCodec::DecodeDmSrvDiscParam(parcel, decodedParam);
EXPECT_EQ(ret, true);
EXPECT_EQ(decodedParam.serviceName, "discoverService");
EXPECT_EQ(decodedParam.serviceType, "discoverType");
EXPECT_EQ(decodedParam.freq, DmExchangeFreq::DM_MID);
EXPECT_EQ(decodedParam.medium, DMSrvMediumType::SERVICE_MEDIUM_TYPE_MDNS);
}
* @tc.name: EncodeDmPublishServiceParam_001
* @tc.desc: EncodeDmPublishServiceParam with ACTIVE mode
* Step 1: Prepare DmPublishServiceParam with ACTIVE mode and BLE medium
* Step 2: Call EncodeDmPublishServiceParam
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeDmPublishServiceParam_001, testing::ext::TestSize.Level1)
{
DmPublishServiceParam publishServiceParam;
publishServiceParam.discoverMode = DMSrvDiscoveryMode::SERVICE_PUBLISH_MODE_ACTIVE;
publishServiceParam.media = DMSrvMediumType::SERVICE_MEDIUM_TYPE_BLE;
publishServiceParam.freq = DmExchangeFreq::DM_HIGH;
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeDmPublishServiceParam(publishServiceParam, parcel);
EXPECT_EQ(ret, true);
DmPublishServiceParam decodedParam;
bool decodeRet = IpcModelCodec::DecodeDmPublishServiceParam(parcel, decodedParam);
EXPECT_EQ(decodeRet, true);
EXPECT_EQ(decodedParam.discoverMode, DMSrvDiscoveryMode::SERVICE_PUBLISH_MODE_ACTIVE);
EXPECT_EQ(decodedParam.media, DMSrvMediumType::SERVICE_MEDIUM_TYPE_BLE);
EXPECT_EQ(decodedParam.freq, DmExchangeFreq::DM_HIGH);
}
* @tc.name: EncodeDmPublishServiceParam_002
* @tc.desc: EncodeDmPublishServiceParam with PASSIVE mode and AUTO medium
* Step 1: Prepare DmPublishServiceParam with PASSIVE mode and AUTO medium
* Step 2: Call EncodeDmPublishServiceParam
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeDmPublishServiceParam_002, testing::ext::TestSize.Level1)
{
DmPublishServiceParam publishServiceParam;
publishServiceParam.discoverMode = DMSrvDiscoveryMode::SERVICE_PUBLISH_MODE_PASSIVE;
publishServiceParam.media = DMSrvMediumType::SERVICE_MEDIUM_TYPE_AUTO;
publishServiceParam.freq = DmExchangeFreq::DM_LOW;
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeDmPublishServiceParam(publishServiceParam, parcel);
EXPECT_EQ(ret, true);
DmPublishServiceParam decodedParam;
bool decodeRet = IpcModelCodec::DecodeDmPublishServiceParam(parcel, decodedParam);
EXPECT_EQ(decodeRet, true);
EXPECT_EQ(decodedParam.discoverMode, DMSrvDiscoveryMode::SERVICE_PUBLISH_MODE_PASSIVE);
EXPECT_EQ(decodedParam.media, DMSrvMediumType::SERVICE_MEDIUM_TYPE_AUTO);
EXPECT_EQ(decodedParam.freq, DmExchangeFreq::DM_LOW);
}
* @tc.name: DecodeDmPublishServiceParam_001
* @tc.desc: DecodeDmPublishServiceParam with BLE_TRIGGER medium
* Step 1: Prepare MessageParcel with encoded data
* Step 2: Call DecodeDmPublishServiceParam
* Step 3: Verify decoded values match original data
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, DecodeDmPublishServiceParam_001, testing::ext::TestSize.Level1)
{
DmPublishServiceParam originalParam;
originalParam.discoverMode = DMSrvDiscoveryMode::SERVICE_PUBLISH_MODE_ACTIVE;
originalParam.media = DMSrvMediumType::SERVICE_MEDIUM_TYPE_BLE_TRIGGER;
originalParam.freq = DmExchangeFreq::DM_MID;
MessageParcel parcel;
IpcModelCodec::EncodeDmPublishServiceParam(originalParam, parcel);
DmPublishServiceParam decodedParam;
bool ret = IpcModelCodec::DecodeDmPublishServiceParam(parcel, decodedParam);
EXPECT_EQ(ret, true);
EXPECT_EQ(decodedParam.discoverMode, DMSrvDiscoveryMode::SERVICE_PUBLISH_MODE_ACTIVE);
EXPECT_EQ(decodedParam.media, DMSrvMediumType::SERVICE_MEDIUM_TYPE_BLE_TRIGGER);
EXPECT_EQ(decodedParam.freq, DmExchangeFreq::DM_MID);
}
* @tc.name: EncodeDmServiceInfo_001
* @tc.desc: EncodeDmServiceInfo with normal input
* Step 1: Prepare DmServiceInfo with normal values
* Step 2: Call EncodeDmServiceInfo
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeDmServiceInfo_001, testing::ext::TestSize.Level1)
{
DmServiceInfo serviceInfo;
serviceInfo.userId = 100;
serviceInfo.serviceId = 1000;
serviceInfo.displayId = 5000;
serviceInfo.deviceId = "device123";
serviceInfo.networkId = "network123";
serviceInfo.serviceOwnerTokenId = 11111;
serviceInfo.serviceOwnerPkgName = "com.owner.pkg";
serviceInfo.serviceRegisterTokenId = 22222;
serviceInfo.serviceType = "serviceType";
serviceInfo.serviceName = "serviceName";
serviceInfo.serviceDisplayName = "Service Display Name";
serviceInfo.publishState = 1;
serviceInfo.serviceCode = "serviceCode";
serviceInfo.customData = "custom data";
serviceInfo.dataLen = 50;
serviceInfo.timeStamp = 9876543210;
serviceInfo.description = "service description";
serviceInfo.authform = DmAuthForm::PEER_TO_PEER;
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeDmServiceInfo(serviceInfo, parcel);
EXPECT_EQ(ret, true);
DmServiceInfo decodedInfo;
bool decodeRet = IpcModelCodec::DecodeDmServiceInfo(parcel, decodedInfo);
EXPECT_EQ(decodeRet, true);
EXPECT_EQ(decodedInfo.userId, 100);
EXPECT_EQ(decodedInfo.serviceId, 1000);
EXPECT_EQ(decodedInfo.displayId, 5000);
EXPECT_EQ(decodedInfo.deviceId, "device123");
EXPECT_EQ(decodedInfo.networkId, "network123");
EXPECT_EQ(decodedInfo.serviceOwnerTokenId, 11111);
EXPECT_EQ(decodedInfo.serviceOwnerPkgName, "com.owner.pkg");
EXPECT_EQ(decodedInfo.serviceRegisterTokenId, 22222);
EXPECT_EQ(decodedInfo.serviceType, "serviceType");
EXPECT_EQ(decodedInfo.serviceName, "serviceName");
EXPECT_EQ(decodedInfo.serviceDisplayName, "Service Display Name");
EXPECT_EQ(decodedInfo.publishState, 1);
EXPECT_EQ(decodedInfo.serviceCode, "serviceCode");
EXPECT_EQ(decodedInfo.customData, "custom data");
EXPECT_EQ(decodedInfo.dataLen, 50);
EXPECT_EQ(decodedInfo.timeStamp, 9876543210);
EXPECT_EQ(decodedInfo.description, "service description");
EXPECT_EQ(decodedInfo.authform, DmAuthForm::PEER_TO_PEER);
}
* @tc.name: EncodeDmServiceInfo_002
* @tc.desc: EncodeDmServiceInfo with IDENTICAL_ACCOUNT authform
* Step 1: Prepare DmServiceInfo with IDENTICAL_ACCOUNT authform
* Step 2: Call EncodeDmServiceInfo
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeDmServiceInfo_002, testing::ext::TestSize.Level1)
{
DmServiceInfo serviceInfo;
serviceInfo.userId = 200;
serviceInfo.serviceId = 2000;
serviceInfo.displayId = 6000;
serviceInfo.deviceId = "device456";
serviceInfo.networkId = "network456";
serviceInfo.serviceOwnerTokenId = 33333;
serviceInfo.serviceOwnerPkgName = "com.owner.pkg2";
serviceInfo.serviceRegisterTokenId = 44444;
serviceInfo.serviceType = "serviceType2";
serviceInfo.serviceName = "serviceName2";
serviceInfo.serviceDisplayName = "Service Display Name 2";
serviceInfo.publishState = 0;
serviceInfo.serviceCode = "serviceCode2";
serviceInfo.customData = "custom data 2";
serviceInfo.dataLen = 60;
serviceInfo.timeStamp = 9876543211;
serviceInfo.description = "service description 2";
serviceInfo.authform = DmAuthForm::IDENTICAL_ACCOUNT;
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeDmServiceInfo(serviceInfo, parcel);
EXPECT_EQ(ret, true);
DmServiceInfo decodedInfo;
bool decodeRet = IpcModelCodec::DecodeDmServiceInfo(parcel, decodedInfo);
EXPECT_EQ(decodeRet, true);
EXPECT_EQ(decodedInfo.userId, 200);
EXPECT_EQ(decodedInfo.serviceId, 2000);
EXPECT_EQ(decodedInfo.publishState, 0);
EXPECT_EQ(decodedInfo.authform, DmAuthForm::IDENTICAL_ACCOUNT);
}
* @tc.name: DecodeDmServiceInfo_001
* @tc.desc: DecodeDmServiceInfo with normal parcel data
* Step 1: Prepare MessageParcel with encoded data
* Step 2: Call DecodeDmServiceInfo
* Step 3: Verify decoded values match original data
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, DecodeDmServiceInfo_001, testing::ext::TestSize.Level1)
{
DmServiceInfo originalInfo;
originalInfo.userId = 300;
originalInfo.serviceId = 3000;
originalInfo.displayId = 7000;
originalInfo.deviceId = "device789";
originalInfo.networkId = "network789";
originalInfo.serviceOwnerTokenId = 55555;
originalInfo.serviceOwnerPkgName = "com.owner.pkg3";
originalInfo.serviceRegisterTokenId = 66666;
originalInfo.serviceType = "serviceType3";
originalInfo.serviceName = "serviceName3";
originalInfo.serviceDisplayName = "Service Display Name 3";
originalInfo.publishState = 2;
originalInfo.serviceCode = "serviceCode3";
originalInfo.customData = "custom data 3";
originalInfo.dataLen = 70;
originalInfo.timeStamp = 9876543212;
originalInfo.description = "service description 3";
originalInfo.authform = DmAuthForm::ACROSS_ACCOUNT;
MessageParcel parcel;
IpcModelCodec::EncodeDmServiceInfo(originalInfo, parcel);
DmServiceInfo decodedInfo;
bool ret = IpcModelCodec::DecodeDmServiceInfo(parcel, decodedInfo);
EXPECT_EQ(ret, true);
EXPECT_EQ(decodedInfo.userId, 300);
EXPECT_EQ(decodedInfo.serviceId, 3000);
EXPECT_EQ(decodedInfo.publishState, 2);
EXPECT_EQ(decodedInfo.authform, DmAuthForm::ACROSS_ACCOUNT);
}
* @tc.name: DecodeDmServiceInfo_002
* @tc.desc: DecodeDmServiceInfo with SHARE authform
* Step 1: Prepare MessageParcel with encoded data with SHARE authform
* Step 2: Call DecodeDmServiceInfo
* Step 3: Verify decoded authform is SHARE
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, DecodeDmServiceInfo_002, testing::ext::TestSize.Level1)
{
DmServiceInfo originalInfo;
originalInfo.userId = 400;
originalInfo.serviceId = 4000;
originalInfo.deviceId = "device999";
originalInfo.networkId = "network999";
originalInfo.serviceOwnerTokenId = 77777;
originalInfo.serviceOwnerPkgName = "com.owner.pkg4";
originalInfo.serviceRegisterTokenId = 88888;
originalInfo.serviceType = "serviceType4";
originalInfo.serviceName = "serviceName4";
originalInfo.serviceDisplayName = "Service Display Name 4";
originalInfo.publishState = 1;
originalInfo.serviceCode = "serviceCode4";
originalInfo.customData = "custom data 4";
originalInfo.dataLen = 80;
originalInfo.timeStamp = 9876543213;
originalInfo.description = "service description 4";
originalInfo.authform = DmAuthForm::SHARE;
MessageParcel parcel;
IpcModelCodec::EncodeDmServiceInfo(originalInfo, parcel);
DmServiceInfo decodedInfo;
bool ret = IpcModelCodec::DecodeDmServiceInfo(parcel, decodedInfo);
EXPECT_EQ(ret, true);
EXPECT_EQ(decodedInfo.authform, DmAuthForm::SHARE);
}
* @tc.name: EncodeDmRegisterServiceState_001
* @tc.desc: EncodeDmRegisterServiceState with normal input
* Step 1: Prepare DmRegisterServiceState with normal values
* Step 2: Call EncodeDmRegisterServiceState
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeDmRegisterServiceState_001, testing::ext::TestSize.Level1)
{
DmRegisterServiceState serviceState;
serviceState.userId = 100;
serviceState.tokenId = 12345;
serviceState.pkgName = "com.test.package";
serviceState.serviceId = 9999;
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeDmRegisterServiceState(serviceState, parcel);
EXPECT_EQ(ret, true);
DmRegisterServiceState decodedState;
bool decodeRet = IpcModelCodec::DecodeDmRegisterServiceState(parcel, decodedState);
EXPECT_EQ(decodeRet, true);
EXPECT_EQ(decodedState.userId, 100);
EXPECT_EQ(decodedState.tokenId, 12345);
EXPECT_EQ(decodedState.pkgName, "com.test.package");
EXPECT_EQ(decodedState.serviceId, 9999);
}
* @tc.name: EncodeDmRegisterServiceState_002
* @tc.desc: EncodeDmRegisterServiceState with zero values
* Step 1: Prepare DmRegisterServiceState with zero values
* Step 2: Call EncodeDmRegisterServiceState
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeDmRegisterServiceState_002, testing::ext::TestSize.Level1)
{
DmRegisterServiceState serviceState;
serviceState.userId = 0;
serviceState.tokenId = 0;
serviceState.pkgName = "";
serviceState.serviceId = 0;
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeDmRegisterServiceState(serviceState, parcel);
EXPECT_EQ(ret, true);
DmRegisterServiceState decodedState;
bool decodeRet = IpcModelCodec::DecodeDmRegisterServiceState(parcel, decodedState);
EXPECT_EQ(decodeRet, true);
EXPECT_EQ(decodedState.userId, 0);
EXPECT_EQ(decodedState.tokenId, 0);
EXPECT_EQ(decodedState.pkgName, "");
EXPECT_EQ(decodedState.serviceId, 0);
}
* @tc.name: DecodeDmRegisterServiceState_001
* @tc.desc: DecodeDmRegisterServiceState with normal parcel data
* Step 1: Prepare MessageParcel with encoded data
* Step 2: Call DecodeDmRegisterServiceState
* Step 3: Verify decoded values match original data
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, DecodeDmRegisterServiceState_001, testing::ext::TestSize.Level1)
{
DmRegisterServiceState originalState;
originalState.userId = 200;
originalState.tokenId = 54321;
originalState.pkgName = "com.test.package2";
originalState.serviceId = 8888;
MessageParcel parcel;
IpcModelCodec::EncodeDmRegisterServiceState(originalState, parcel);
DmRegisterServiceState decodedState;
bool ret = IpcModelCodec::DecodeDmRegisterServiceState(parcel, decodedState);
EXPECT_EQ(ret, true);
EXPECT_EQ(decodedState.userId, 200);
EXPECT_EQ(decodedState.tokenId, 54321);
EXPECT_EQ(decodedState.pkgName, "com.test.package2");
EXPECT_EQ(decodedState.serviceId, 8888);
}
* @tc.name: EncodeServiceSyncInfo_001
* @tc.desc: EncodeServiceSyncInfo with normal input
* Step 1: Prepare ServiceSyncInfo with normal values
* Step 2: Call EncodeServiceSyncInfo
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeServiceSyncInfo_001, testing::ext::TestSize.Level1)
{
ServiceSyncInfo serviceSyncInfo;
serviceSyncInfo.pkgName = "com.test.sync";
serviceSyncInfo.localUserId = 100;
serviceSyncInfo.networkId = "network123";
serviceSyncInfo.serviceId = 7777;
serviceSyncInfo.callerUserId = 200;
serviceSyncInfo.callerTokenId = 300;
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeServiceSyncInfo(serviceSyncInfo, parcel);
EXPECT_EQ(ret, true);
ServiceSyncInfo decodedInfo;
IpcModelCodec::DecodeServiceSyncInfo(parcel, decodedInfo);
EXPECT_EQ(decodedInfo.pkgName, "com.test.sync");
EXPECT_EQ(decodedInfo.localUserId, 100);
EXPECT_EQ(decodedInfo.networkId, "network123");
EXPECT_EQ(decodedInfo.serviceId, 7777);
EXPECT_EQ(decodedInfo.callerUserId, 200);
EXPECT_EQ(decodedInfo.callerTokenId, 300);
}
* @tc.name: EncodeServiceSyncInfo_002
* @tc.desc: EncodeServiceSyncInfo with zero values
* Step 1: Prepare ServiceSyncInfo with zero values
* Step 2: Call EncodeServiceSyncInfo
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeServiceSyncInfo_002, testing::ext::TestSize.Level1)
{
ServiceSyncInfo serviceSyncInfo;
serviceSyncInfo.pkgName = "";
serviceSyncInfo.localUserId = 0;
serviceSyncInfo.networkId = "";
serviceSyncInfo.serviceId = 0;
serviceSyncInfo.callerUserId = 0;
serviceSyncInfo.callerTokenId = 0;
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeServiceSyncInfo(serviceSyncInfo, parcel);
EXPECT_EQ(ret, true);
ServiceSyncInfo decodedInfo;
IpcModelCodec::DecodeServiceSyncInfo(parcel, decodedInfo);
EXPECT_EQ(decodedInfo.pkgName, "");
EXPECT_EQ(decodedInfo.localUserId, 0);
EXPECT_EQ(decodedInfo.networkId, "");
EXPECT_EQ(decodedInfo.serviceId, 0);
EXPECT_EQ(decodedInfo.callerUserId, 0);
EXPECT_EQ(decodedInfo.callerTokenId, 0);
}
* @tc.name: DecodeServiceSyncInfo_001
* @tc.desc: DecodeServiceSyncInfo with normal parcel data
* Step 1: Prepare MessageParcel with encoded data
* Step 2: Call DecodeServiceSyncInfo
* Step 3: Verify decoded values match original data
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, DecodeServiceSyncInfo_001, testing::ext::TestSize.Level1)
{
ServiceSyncInfo originalInfo;
originalInfo.pkgName = "com.test.sync2";
originalInfo.localUserId = 300;
originalInfo.networkId = "network456";
originalInfo.serviceId = 6666;
originalInfo.callerUserId = 400;
originalInfo.callerTokenId = 500;
MessageParcel parcel;
IpcModelCodec::EncodeServiceSyncInfo(originalInfo, parcel);
ServiceSyncInfo decodedInfo;
IpcModelCodec::DecodeServiceSyncInfo(parcel, decodedInfo);
EXPECT_EQ(decodedInfo.pkgName, "com.test.sync2");
EXPECT_EQ(decodedInfo.localUserId, 300);
EXPECT_EQ(decodedInfo.networkId, "network456");
EXPECT_EQ(decodedInfo.serviceId, 6666);
EXPECT_EQ(decodedInfo.callerUserId, 400);
EXPECT_EQ(decodedInfo.callerTokenId, 500);
}
* @tc.name: EncodeDmSrvDiscParam_003
* @tc.desc: EncodeDmSrvDiscParam with SUPER_HIGH and BUTT enum values
* Step 1: Prepare DmDiscoveryServiceParam with DM_SUPER_HIGH freq and BUTT medium
* Step 2: Call EncodeDmSrvDiscParam
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeDmSrvDiscParam_003, testing::ext::TestSize.Level1)
{
DmDiscoveryServiceParam param;
param.serviceName = "testService3";
param.serviceType = "testType3";
param.serviceDisplayName = "Test Service Display 3";
param.freq = DmExchangeFreq::DM_SUPER_HIGH;
param.medium = DMSrvMediumType::SERVICE_MEDIUM_TYPE_BUTT;
param.mode = DMSrvDiscoveryMode::SERVICE_PUBLISH_MODE_ACTIVE;
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeDmSrvDiscParam(param, parcel);
EXPECT_EQ(ret, true);
DmDiscoveryServiceParam decodedParam;
bool decodeRet = IpcModelCodec::DecodeDmSrvDiscParam(parcel, decodedParam);
EXPECT_EQ(decodeRet, true);
EXPECT_EQ(decodedParam.freq, DmExchangeFreq::DM_SUPER_HIGH);
EXPECT_EQ(decodedParam.medium, DMSrvMediumType::SERVICE_MEDIUM_TYPE_BUTT);
}
* @tc.name: EncodeDmPublishServiceParam_003
* @tc.desc: EncodeDmPublishServiceParam with BLE_TRIGGER and DM_SUPER_HIGH
* Step 1: Prepare DmPublishServiceParam with BLE_TRIGGER medium and DM_SUPER_HIGH freq
* Step 2: Call EncodeDmPublishServiceParam
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeDmPublishServiceParam_003, testing::ext::TestSize.Level1)
{
DmPublishServiceParam publishServiceParam;
publishServiceParam.discoverMode = DMSrvDiscoveryMode::SERVICE_PUBLISH_MODE_ACTIVE;
publishServiceParam.media = DMSrvMediumType::SERVICE_MEDIUM_TYPE_BLE_TRIGGER;
publishServiceParam.freq = DmExchangeFreq::DM_SUPER_HIGH;
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeDmPublishServiceParam(publishServiceParam, parcel);
EXPECT_EQ(ret, true);
DmPublishServiceParam decodedParam;
bool decodeRet = IpcModelCodec::DecodeDmPublishServiceParam(parcel, decodedParam);
EXPECT_EQ(decodeRet, true);
EXPECT_EQ(decodedParam.discoverMode, DMSrvDiscoveryMode::SERVICE_PUBLISH_MODE_ACTIVE);
EXPECT_EQ(decodedParam.media, DMSrvMediumType::SERVICE_MEDIUM_TYPE_BLE_TRIGGER);
EXPECT_EQ(decodedParam.freq, DmExchangeFreq::DM_SUPER_HIGH);
}
* @tc.name: EncodeDmServiceInfo_003
* @tc.desc: EncodeDmServiceInfo with INVALID_TYPE authform
* Step 1: Prepare DmServiceInfo with INVALID_TYPE authform
* Step 2: Call EncodeDmServiceInfo
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeDmServiceInfo_003, testing::ext::TestSize.Level1)
{
DmServiceInfo serviceInfo;
serviceInfo.userId = 500;
serviceInfo.serviceId = 5000;
serviceInfo.displayId = 9000;
serviceInfo.deviceId = "deviceInvalid";
serviceInfo.networkId = "networkInvalid";
serviceInfo.serviceOwnerTokenId = 99999;
serviceInfo.serviceOwnerPkgName = "com.owner.invalid";
serviceInfo.serviceRegisterTokenId = 88888;
serviceInfo.serviceType = "invalidType";
serviceInfo.serviceName = "invalidName";
serviceInfo.serviceDisplayName = "Invalid Display";
serviceInfo.publishState = 0;
serviceInfo.serviceCode = "invalidCode";
serviceInfo.customData = "invalid data";
serviceInfo.dataLen = 90;
serviceInfo.timeStamp = 1111111111;
serviceInfo.description = "invalid description";
serviceInfo.authform = DmAuthForm::INVALID_TYPE;
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeDmServiceInfo(serviceInfo, parcel);
EXPECT_EQ(ret, true);
DmServiceInfo decodedInfo;
bool decodeRet = IpcModelCodec::DecodeDmServiceInfo(parcel, decodedInfo);
EXPECT_EQ(decodeRet, true);
EXPECT_EQ(decodedInfo.authform, DmAuthForm::INVALID_TYPE);
EXPECT_EQ(decodedInfo.publishState, 0);
}
* @tc.name: DecodeDmServiceInfo_003
* @tc.desc: DecodeDmServiceInfo with publishState boundary values
* Step 1: Prepare MessageParcel with publishState = 2
* Step 2: Call DecodeDmServiceInfo
* Step 3: Verify decoded publishState is correct
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, DecodeDmServiceInfo_003, testing::ext::TestSize.Level1)
{
DmServiceInfo originalInfo;
originalInfo.userId = 600;
originalInfo.serviceId = 6000;
originalInfo.deviceId = "deviceBoundary";
originalInfo.networkId = "networkBoundary";
originalInfo.serviceOwnerTokenId = 101010;
originalInfo.serviceOwnerPkgName = "com.owner.boundary";
originalInfo.serviceRegisterTokenId = 202020;
originalInfo.serviceType = "boundaryType";
originalInfo.serviceName = "boundaryName";
originalInfo.serviceDisplayName = "Boundary Display";
originalInfo.publishState = 2;
originalInfo.serviceCode = "boundaryCode";
originalInfo.customData = "boundary data";
originalInfo.dataLen = 100;
originalInfo.timeStamp = 2222222222;
originalInfo.description = "boundary description";
originalInfo.authform = DmAuthForm::PEER_TO_PEER;
MessageParcel parcel;
IpcModelCodec::EncodeDmServiceInfo(originalInfo, parcel);
DmServiceInfo decodedInfo;
bool ret = IpcModelCodec::DecodeDmServiceInfo(parcel, decodedInfo);
EXPECT_EQ(ret, true);
EXPECT_EQ(decodedInfo.publishState, 2);
EXPECT_EQ(decodedInfo.authform, DmAuthForm::PEER_TO_PEER);
}
* @tc.name: EncodeDmRegServiceInfo_003
* @tc.desc: EncodeDmRegServiceInfo with maximum boundary values
* Step 1: Prepare DmRegisterServiceInfo with max int32 and uint64 values
* Step 2: Call EncodeDmRegServiceInfo
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeDmRegServiceInfo_003, testing::ext::TestSize.Level1)
{
DmRegisterServiceInfo regServiceInfo;
regServiceInfo.userId = 2147483647;
regServiceInfo.displayId = 9223372036854775807;
regServiceInfo.serviceOwnerTokenId = 18446744073709551615ULL;
regServiceInfo.serviceOwnerPkgName = "com.test.max";
regServiceInfo.serviceRegisterTokenId = 18446744073709551615ULL;
regServiceInfo.serviceType = "maxType";
regServiceInfo.serviceName = "maxServiceName";
regServiceInfo.serviceDisplayName = "Max Display Name";
regServiceInfo.serviceCode = "maxCode";
regServiceInfo.customData = "max data";
regServiceInfo.dataLen = 4294967295U;
regServiceInfo.timeStamp = 9223372036854775807;
regServiceInfo.description = "max description";
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeDmRegServiceInfo(regServiceInfo, parcel);
EXPECT_EQ(ret, true);
DmRegisterServiceInfo decodedInfo;
bool decodeRet = IpcModelCodec::DecodeDmRegServiceInfo(parcel, decodedInfo);
EXPECT_EQ(decodeRet, true);
EXPECT_EQ(decodedInfo.userId, 2147483647);
EXPECT_EQ(decodedInfo.dataLen, 4294967295U);
}
* @tc.name: EncodeDmRegServiceInfo_004
* @tc.desc: EncodeDmRegServiceInfo with minimum negative values
* Step 1: Prepare DmRegisterServiceInfo with negative int values
* Step 2: Call EncodeDmRegServiceInfo
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeDmRegServiceInfo_004, testing::ext::TestSize.Level1)
{
DmRegisterServiceInfo regServiceInfo;
regServiceInfo.userId = -2147483648;
regServiceInfo.displayId = -9223372036854775807LL;
regServiceInfo.serviceOwnerTokenId = 0;
regServiceInfo.serviceOwnerPkgName = "com.test.min";
regServiceInfo.serviceRegisterTokenId = 0;
regServiceInfo.serviceType = "minType";
regServiceInfo.serviceName = "minServiceName";
regServiceInfo.serviceDisplayName = "Min Display Name";
regServiceInfo.serviceCode = "minCode";
regServiceInfo.customData = "min data";
regServiceInfo.dataLen = 0;
regServiceInfo.timeStamp = -9223372036854775807LL;
regServiceInfo.description = "min description";
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeDmRegServiceInfo(regServiceInfo, parcel);
EXPECT_EQ(ret, true);
DmRegisterServiceInfo decodedInfo;
bool decodeRet = IpcModelCodec::DecodeDmRegServiceInfo(parcel, decodedInfo);
EXPECT_EQ(decodeRet, true);
EXPECT_EQ(decodedInfo.userId, -2147483648);
EXPECT_EQ(decodedInfo.timeStamp, -9223372036854775807LL);
}
* @tc.name: EncodeDmServiceInfo_004
* @tc.desc: EncodeDmServiceInfo with all authform enum values
* Step 1: Test all remaining authform values systematically
* Step 2: Call EncodeDmServiceInfo for each
* Step 3: Verify all encode and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeDmServiceInfo_004, testing::ext::TestSize.Level1)
{
std::vector<DmAuthForm> authForms = {
DmAuthForm::INVALID_TYPE,
DmAuthForm::PEER_TO_PEER,
DmAuthForm::IDENTICAL_ACCOUNT,
DmAuthForm::ACROSS_ACCOUNT,
DmAuthForm::SHARE
};
for (size_t i = 0; i < authForms.size(); ++i) {
DmServiceInfo serviceInfo;
serviceInfo.userId = 700 + static_cast<int32_t>(i);
serviceInfo.serviceId = 7000 + static_cast<int64_t>(i);
serviceInfo.deviceId = "device" + std::to_string(i);
serviceInfo.networkId = "network" + std::to_string(i);
serviceInfo.serviceOwnerTokenId = 30303 + i;
serviceInfo.serviceOwnerPkgName = "com.owner.all" + std::to_string(i);
serviceInfo.serviceRegisterTokenId = 40404 + i;
serviceInfo.serviceType = "allType";
serviceInfo.serviceName = "allName";
serviceInfo.serviceDisplayName = "All Display";
serviceInfo.publishState = static_cast<int8_t>(i % 3);
serviceInfo.serviceCode = "allCode";
serviceInfo.customData = "all data";
serviceInfo.dataLen = 110;
serviceInfo.timeStamp = 3333333333;
serviceInfo.description = "all description";
serviceInfo.authform = authForms[i];
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeDmServiceInfo(serviceInfo, parcel);
EXPECT_EQ(ret, true);
DmServiceInfo decodedInfo;
bool decodeRet = IpcModelCodec::DecodeDmServiceInfo(parcel, decodedInfo);
EXPECT_EQ(decodeRet, true);
EXPECT_EQ(decodedInfo.authform, authForms[i]);
EXPECT_EQ(decodedInfo.publishState, static_cast<int8_t>(i % 3));
}
}
* @tc.name: DecodeDmPublishServiceParam_002
* @tc.desc: DecodeDmPublishServiceParam with all freq enum values
* Step 1: Test all DmExchangeFreq enum values
* Step 2: Call DecodeDmPublishServiceParam for each
* Step 3: Verify all decode correctly
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, DecodeDmPublishServiceParam_002, testing::ext::TestSize.Level1)
{
std::vector<DmExchangeFreq> freqs = {
DmExchangeFreq::DM_LOW,
DmExchangeFreq::DM_MID,
DmExchangeFreq::DM_HIGH,
DmExchangeFreq::DM_SUPER_HIGH
};
for (size_t i = 0; i < freqs.size(); ++i) {
DmPublishServiceParam originalParam;
originalParam.discoverMode = (i % 2 == 0) ?
DMSrvDiscoveryMode::SERVICE_PUBLISH_MODE_ACTIVE :
DMSrvDiscoveryMode::SERVICE_PUBLISH_MODE_PASSIVE;
originalParam.media = DMSrvMediumType::SERVICE_MEDIUM_TYPE_BLE;
originalParam.freq = freqs[i];
MessageParcel parcel;
IpcModelCodec::EncodeDmPublishServiceParam(originalParam, parcel);
DmPublishServiceParam decodedParam;
bool ret = IpcModelCodec::DecodeDmPublishServiceParam(parcel, decodedParam);
EXPECT_EQ(ret, true);
EXPECT_EQ(decodedParam.freq, freqs[i]);
}
}
* @tc.name: EncodeDmRegisterServiceState_003
* @tc.desc: EncodeDmRegisterServiceState with maximum values
* Step 1: Prepare DmRegisterServiceState with max values
* Step 2: Call EncodeDmRegisterServiceState
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeDmRegisterServiceState_003, testing::ext::TestSize.Level1)
{
DmRegisterServiceState serviceState;
serviceState.userId = 2147483647;
serviceState.tokenId = 18446744073709551615ULL;
serviceState.pkgName = "com.test.max.state";
serviceState.serviceId = 9223372036854775807;
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeDmRegisterServiceState(serviceState, parcel);
EXPECT_EQ(ret, true);
DmRegisterServiceState decodedState;
bool decodeRet = IpcModelCodec::DecodeDmRegisterServiceState(parcel, decodedState);
EXPECT_EQ(decodeRet, true);
EXPECT_EQ(decodedState.userId, 2147483647);
EXPECT_EQ(decodedState.tokenId, 18446744073709551615ULL);
EXPECT_EQ(decodedState.serviceId, 9223372036854775807);
}
* @tc.name: EncodeServiceSyncInfo_003
* @tc.desc: EncodeServiceSyncInfo with negative userId values
* Step 1: Prepare ServiceSyncInfo with negative userId
* Step 2: Call EncodeServiceSyncInfo
* Step 3: Verify return value is true and decode successfully
* @tc.type: FUNC
*/
HWTEST_F(IpcModelCodecTest, EncodeServiceSyncInfo_003, testing::ext::TestSize.Level1)
{
ServiceSyncInfo serviceSyncInfo;
serviceSyncInfo.pkgName = "com.test.negative";
serviceSyncInfo.localUserId = -1;
serviceSyncInfo.networkId = "networkNegative";
serviceSyncInfo.serviceId = -9999;
serviceSyncInfo.callerUserId = -100;
serviceSyncInfo.callerTokenId = 0;
MessageParcel parcel;
bool ret = IpcModelCodec::EncodeServiceSyncInfo(serviceSyncInfo, parcel);
EXPECT_EQ(ret, true);
ServiceSyncInfo decodedInfo;
IpcModelCodec::DecodeServiceSyncInfo(parcel, decodedInfo);
EXPECT_EQ(decodedInfo.pkgName, "com.test.negative");
EXPECT_EQ(decodedInfo.localUserId, -1);
EXPECT_EQ(decodedInfo.serviceId, -9999);
EXPECT_EQ(decodedInfo.callerUserId, -100);
}
}
}