2018-04-10 16:26:59 +08:00
|
|
|
/*
|
2018-09-18 15:11:08 +08:00
|
|
|
* Copyright (C) 2018 Intel Corporation
|
2018-04-10 16:26:59 +08:00
|
|
|
*
|
2018-09-18 15:11:08 +08:00
|
|
|
* SPDX-License-Identifier: MIT
|
2018-04-10 16:26:59 +08:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "runtime/helpers/kmd_notify_properties.h"
|
|
|
|
#include "runtime/helpers/options.h"
|
|
|
|
#include "runtime/os_interface/windows/sys_calls.h"
|
|
|
|
|
|
|
|
#include "unit_tests/helpers/variable_backup.h"
|
|
|
|
#include "test.h"
|
|
|
|
|
|
|
|
namespace OCLRT {
|
|
|
|
|
|
|
|
namespace SysCalls {
|
|
|
|
extern BOOL systemPowerStatusRetVal;
|
|
|
|
extern BYTE systemPowerStatusACLineStatusOverride;
|
|
|
|
} // namespace SysCalls
|
|
|
|
|
|
|
|
class MockKmdNotifyHelper : public KmdNotifyHelper {
|
|
|
|
public:
|
|
|
|
using KmdNotifyHelper::acLineConnected;
|
2018-04-20 01:08:10 +08:00
|
|
|
using KmdNotifyHelper::getBaseTimeout;
|
2018-04-10 16:26:59 +08:00
|
|
|
using KmdNotifyHelper::updateAcLineStatus;
|
|
|
|
|
|
|
|
MockKmdNotifyHelper(const KmdNotifyProperties *newProperties) : KmdNotifyHelper(newProperties){};
|
|
|
|
};
|
|
|
|
|
|
|
|
TEST(KmdNotifyWindowsTests, whenGetSystemPowerStatusReturnSuccessThenUpdateAcLineStatus) {
|
|
|
|
auto properties = &(platformDevices[0]->capabilityTable.kmdNotifyProperties);
|
|
|
|
MockKmdNotifyHelper helper(properties);
|
|
|
|
EXPECT_TRUE(helper.acLineConnected);
|
|
|
|
|
|
|
|
VariableBackup<BOOL> systemPowerStatusRetValBkp(&SysCalls::systemPowerStatusRetVal);
|
|
|
|
VariableBackup<BYTE> systemPowerStatusACLineStatusOverrideBkp(&SysCalls::systemPowerStatusACLineStatusOverride);
|
|
|
|
systemPowerStatusRetValBkp = 1;
|
|
|
|
systemPowerStatusACLineStatusOverrideBkp = 0;
|
|
|
|
|
|
|
|
helper.updateAcLineStatus();
|
|
|
|
EXPECT_FALSE(helper.acLineConnected);
|
|
|
|
|
|
|
|
systemPowerStatusACLineStatusOverrideBkp = 1;
|
|
|
|
|
|
|
|
helper.updateAcLineStatus();
|
|
|
|
EXPECT_TRUE(helper.acLineConnected);
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST(KmdNotifyWindowsTests, whenGetSystemPowerStatusReturnErrorThenDontUpdateAcLineStatus) {
|
|
|
|
auto properties = &(platformDevices[0]->capabilityTable.kmdNotifyProperties);
|
|
|
|
MockKmdNotifyHelper helper(properties);
|
|
|
|
EXPECT_TRUE(helper.acLineConnected);
|
|
|
|
|
|
|
|
VariableBackup<BOOL> systemPowerStatusRetValBkp(&SysCalls::systemPowerStatusRetVal);
|
|
|
|
VariableBackup<BYTE> systemPowerStatusACLineStatusOverrideBkp(&SysCalls::systemPowerStatusACLineStatusOverride);
|
|
|
|
systemPowerStatusRetValBkp = 0;
|
|
|
|
systemPowerStatusACLineStatusOverrideBkp = 0;
|
|
|
|
|
|
|
|
helper.updateAcLineStatus();
|
|
|
|
EXPECT_TRUE(helper.acLineConnected);
|
|
|
|
}
|
2018-04-20 01:08:10 +08:00
|
|
|
|
|
|
|
TEST(KmdNotifyWindowsTests, givenTaskCountDiffGreaterThanOneWhenBaseTimeoutRequestedThenDontMultiply) {
|
|
|
|
auto localProperties = (platformDevices[0]->capabilityTable.kmdNotifyProperties);
|
|
|
|
localProperties.delayKmdNotifyMicroseconds = 10;
|
|
|
|
const int64_t multiplier = 10;
|
|
|
|
|
|
|
|
MockKmdNotifyHelper helper(&localProperties);
|
|
|
|
EXPECT_EQ(localProperties.delayKmdNotifyMicroseconds, helper.getBaseTimeout(multiplier));
|
|
|
|
}
|
|
|
|
|
2018-04-10 16:26:59 +08:00
|
|
|
} // namespace OCLRT
|