obj-build/dist/include/gtest/gtest.h(1440,28): error: comparison of integers of different signs: 'const unsigned long long' and 'const int' [-Werror,-Wsign-compare]
GTEST_IMPL_CMP_HELPER_(GT, >)
~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
obj-build/dist/include/gtest/gtest.h(1422,14): note: expanded from macro 'GTEST_IMPL_CMP_HELPER_'
if (val1 op val2) { \
~~~~ ^ ~~~~
toolkit/system/windowsPackageManager/tests/gtest/TestWindowsPackageManager.cpp(22,3): note: in instantiation of function template specialization 'testing::internal::CmpHelperGT<unsigned long long, int>' requested here
ASSERT_GT(packages.Length(), 0);
^
obj-build/dist/include/gtest/gtest.h(1891,31): note: expanded from macro 'ASSERT_GT'
^
obj-build/dist/include/gtest/gtest.h(1865,44): note: expanded from macro 'GTEST_ASSERT_GT'
ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
^
obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned long long' and 'const int' [-Werror,-Wsign-compare]
if (lhs == rhs) {
~~~ ^ ~~~
obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned long long, int>' requested here
return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
^
toolkit/system/windowsPackageManager/tests/gtest/TestWindowsPackageManager.cpp(33,3): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned long long, int, nullptr>' requested here
ASSERT_EQ(packages.Length(), 0);
^
obj-build/dist/include/gtest/gtest.h(1871,31): note: expanded from macro 'ASSERT_EQ'
^
obj-build/dist/include/gtest/gtest.h(1855,54): note: expanded from macro 'GTEST_ASSERT_EQ'
ASSERT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
^
obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const int' and 'const unsigned int' [-Werror,-Wsign-compare]
if (lhs == rhs) {
~~~ ^ ~~~
obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<int, unsigned int>' requested here
return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
^
toolkit/system/windowsDHCPClient/tests/gtest/TestDHCPUtils.cpp(232,3): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<int, unsigned int, nullptr>' requested here
ASSERT_EQ(0, size);
^
obj-build/dist/include/gtest/gtest.h(1871,31): note: expanded from macro 'ASSERT_EQ'
^
obj-build/dist/include/gtest/gtest.h(1855,54): note: expanded from macro 'GTEST_ASSERT_EQ'
ASSERT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
^
obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned int' and 'const int' [-Werror,-Wsign-compare]
if (lhs == rhs) {
~~~ ^ ~~~
obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned int, int>' requested here
return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
^
toolkit/mozapps/defaultagent/tests/gtest/CacheTest.cpp(67,3): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned int, int, nullptr>' requested here
ASSERT_EQ(Cache::kDefaultCapacity, 2);
^
obj-build/dist/include/gtest/gtest.h(1871,31): note: expanded from macro 'ASSERT_EQ'
^
obj-build/dist/include/gtest/gtest.h(1855,54): note: expanded from macro 'GTEST_ASSERT_EQ'
ASSERT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
^
obj-build/dist/include/gtest/gtest.h(1440,28): error: comparison of integers of different signs: 'const unsigned long long' and 'const int' [-Werror,-Wsign-compare]
GTEST_IMPL_CMP_HELPER_(GT, >)
~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
obj-build/dist/include/gtest/gtest.h(1422,14): note: expanded from macro 'GTEST_IMPL_CMP_HELPER_'
if (val1 op val2) { \
~~~~ ^ ~~~~
toolkit/xre/dllservices/tests/gtest/TestDLLBlocklist.cpp(123,5): note: in instantiation of function template specialization 'testing::internal::CmpHelperGT<unsigned long long, int>' requested here
EXPECT_GT(strlen(pEntry->mName), 3);
^
obj-build/dist/include/gtest/gtest.h(1852,44): note: expanded from macro 'EXPECT_GT'
EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
^
In file included from Unified_cpp_xpcom_tests_gtest0.cpp:2:
In file included from xpcom/tests/gtest/Helpers.cpp:12:
obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned long long' and 'const int' [-Werror,-Wsign-compare]
if (lhs == rhs) {
~~~ ^ ~~~
obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned long long, int>' requested here
return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
^
xpcom/tests/gtest/TestAvailableMemoryWatcherWin.cpp(483,5): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned long long, int, nullptr>' requested here
EXPECT_EQ(tokens.Length(), 3);
^
obj-build/dist/include/gtest/gtest.h(1842,54): note: expanded from macro 'EXPECT_EQ'
EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
^
obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned long long' and 'const int' [-Werror,-Wsign-compare]
if (lhs == rhs) {
~~~ ^ ~~~
obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned long long, int>' requested here
return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
^
toolkit/xre/dllservices/tests/gtest/TestUntrustedModules.cpp(211,5): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned long long, int, nullptr>' requested here
EXPECT_EQ(collector.Data().length(), 1);
^
obj-build/dist/include/gtest/gtest.h(1842,54): note: expanded from macro 'EXPECT_EQ'
EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
^
obj-build/dist/include/gtest/gtest.h(1354,11): error: comparison of integers of different signs: 'const unsigned int' and 'const int' [-Werror,-Wsign-compare]
if (lhs == rhs) {
~~~ ^ ~~~
obj-build/dist/include/gtest/gtest.h(1373,12): note: in instantiation of function template specialization 'testing::internal::CmpHelperEQ<unsigned int, int>' requested here
return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
^
toolkit/xre/dllservices/tests/gtest/TestUntrustedModules.cpp(310,7): note: in instantiation of function template specialization 'testing::internal::EqHelper::Compare<unsigned int, int, nullptr>' requested here
EXPECT_EQ(evt.mLoadStatus, 0);
^
obj-build/dist/include/gtest/gtest.h(1842,54): note: expanded from macro 'EXPECT_EQ'
EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
^
obj-build/dist/include/gtest/gtest.h(1440,28): error: comparison of integers of different signs: 'const unsigned int' and 'const int' [-Werror,-Wsign-compare]
GTEST_IMPL_CMP_HELPER_(GT, >)
~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
obj-build/dist/include/gtest/gtest.h(1422,14): note: expanded from macro 'GTEST_IMPL_CMP_HELPER_'
if (val1 op val2) { \
~~~~ ^ ~~~~
toolkit/xre/dllservices/tests/gtest/TestUntrustedModules.cpp(332,3): note: in instantiation of function template specialization 'testing::internal::CmpHelperGT<unsigned int, int>' requested here
EXPECT_GT(aData.mNumEvents, 0);
^
obj-build/dist/include/gtest/gtest.h(1852,44): note: expanded from macro 'EXPECT_GT'
EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
^
Differential Revision: https://phabricator.services.mozilla.com/D144694
307 lines
11 KiB
C++
307 lines
11 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "DHCPUtils.h"
|
|
#include "gtest/gtest.h"
|
|
#include "nsCOMPtr.h"
|
|
#include "nsString.h"
|
|
#include "nsWindowsDHCPClient.h"
|
|
|
|
using namespace mozilla::toolkit::system::windowsDHCPClient;
|
|
|
|
class WindowsNetworkFunctionsMock : public WindowsNetworkFunctionsWrapper {
|
|
public:
|
|
WindowsNetworkFunctionsMock() : mAddressesToReturn(nullptr) {
|
|
memset(mOptions, 0, sizeof(char*) * 256);
|
|
}
|
|
|
|
ULONG GetAdaptersAddressesWrapped(
|
|
_In_ ULONG Family, _In_ ULONG Flags, _In_ PVOID Reserved,
|
|
_Inout_ PIP_ADAPTER_ADDRESSES AdapterAddresses,
|
|
_Inout_ PULONG SizePointer) {
|
|
if (*SizePointer < sizeof(*mAddressesToReturn)) {
|
|
*SizePointer = sizeof(*mAddressesToReturn);
|
|
return ERROR_BUFFER_OVERFLOW;
|
|
}
|
|
|
|
*SizePointer = sizeof(*mAddressesToReturn);
|
|
memcpy(AdapterAddresses, mAddressesToReturn, *SizePointer);
|
|
return 0;
|
|
}
|
|
|
|
DWORD DhcpRequestParamsWrapped(_In_ DWORD Flags, _In_ LPVOID Reserved,
|
|
_In_ LPWSTR AdapterName,
|
|
_In_ LPDHCPCAPI_CLASSID ClassId,
|
|
_In_ DHCPCAPI_PARAMS_ARRAY SendParams,
|
|
_Inout_ DHCPCAPI_PARAMS_ARRAY RecdParams,
|
|
_In_ LPBYTE Buffer, _Inout_ LPDWORD pSize,
|
|
_In_ LPWSTR RequestIdStr) {
|
|
mLastRequestedNetworkAdapterName.Assign(AdapterName);
|
|
|
|
if (mOptions[RecdParams.Params[0].OptionId] == nullptr) {
|
|
RecdParams.Params[0].nBytesData = 0;
|
|
} else {
|
|
RecdParams.Params[0].Data = Buffer;
|
|
size_t lengthOfValue = strlen(mOptions[RecdParams.Params[0].OptionId]);
|
|
if (*pSize > lengthOfValue) {
|
|
memcpy(Buffer, mOptions[RecdParams.Params[0].OptionId], lengthOfValue);
|
|
RecdParams.Params[0].nBytesData = lengthOfValue;
|
|
} else {
|
|
*pSize = lengthOfValue;
|
|
return ERROR_MORE_DATA;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
void AddAdapterAddresses(IP_ADAPTER_ADDRESSES& aAddressesToAdd) {
|
|
if (mAddressesToReturn == nullptr) {
|
|
mAddressesToReturn = &aAddressesToAdd;
|
|
return;
|
|
}
|
|
IP_ADAPTER_ADDRESSES* tail = mAddressesToReturn;
|
|
|
|
while (tail->Next != nullptr) {
|
|
tail = tail->Next;
|
|
}
|
|
tail->Next = &aAddressesToAdd;
|
|
}
|
|
|
|
void SetDHCPOption(uint8_t option, const char* value) {
|
|
mOptions[option] = value;
|
|
}
|
|
|
|
nsString GetLastRequestedNetworkAdapterName() {
|
|
return mLastRequestedNetworkAdapterName;
|
|
}
|
|
|
|
private:
|
|
IP_ADAPTER_ADDRESSES* mAddressesToReturn = nullptr;
|
|
const char* mOptions[256];
|
|
nsString mLastRequestedNetworkAdapterName;
|
|
};
|
|
|
|
class TestDHCPUtils : public ::testing::Test {
|
|
protected:
|
|
RefPtr<WindowsNetworkFunctionsMock> mMockWindowsFunctions;
|
|
nsCString mDefaultAdapterName;
|
|
|
|
virtual void SetUp() {
|
|
mMockWindowsFunctions = new WindowsNetworkFunctionsMock();
|
|
mDefaultAdapterName.AssignLiteral("my favourite network adapter");
|
|
}
|
|
|
|
void Given_DHCP_Option_Is(uint8_t option, const char* value) {
|
|
mMockWindowsFunctions.get()->SetDHCPOption(option, value);
|
|
}
|
|
|
|
void Given_Network_Adapter_Called(IP_ADAPTER_ADDRESSES& adapterAddresses,
|
|
const char* adapterName) {
|
|
adapterAddresses.AdapterName = const_cast<char*>(adapterName);
|
|
adapterAddresses.Next = nullptr;
|
|
adapterAddresses.Dhcpv4Server.iSockaddrLength = 0;
|
|
adapterAddresses.Dhcpv6Server.iSockaddrLength = 0;
|
|
AddAdapterAddresses(adapterAddresses);
|
|
}
|
|
|
|
void Given_Network_Adapter_Supports_DHCP_V4(
|
|
IP_ADAPTER_ADDRESSES& adapterAddresses) {
|
|
adapterAddresses.Dhcpv4Server.iSockaddrLength = 4;
|
|
}
|
|
|
|
void Given_Network_Adapter_Supports_DHCP_V6(
|
|
IP_ADAPTER_ADDRESSES& adapterAddresses) {
|
|
adapterAddresses.Dhcpv6Server.iSockaddrLength = 12;
|
|
}
|
|
|
|
void Given_Network_Adapter_Has_Operational_Status(
|
|
IP_ADAPTER_ADDRESSES& adapterAddresses, IF_OPER_STATUS operStatus) {
|
|
adapterAddresses.OperStatus = operStatus;
|
|
}
|
|
|
|
private:
|
|
void AddAdapterAddresses(IP_ADAPTER_ADDRESSES& aAddressToAdd) {
|
|
mMockWindowsFunctions.get()->AddAdapterAddresses(aAddressToAdd);
|
|
}
|
|
};
|
|
|
|
// following class currently just distinguishes tests of nsWindowsDHCPClient
|
|
// from tests of DHCPUtils.
|
|
class TestNsWindowsDHCPClient : public TestDHCPUtils {};
|
|
|
|
TEST_F(TestDHCPUtils, TestGetAdaptersAddresses) {
|
|
IP_ADAPTER_ADDRESSES adapterAddresses = {};
|
|
Given_Network_Adapter_Called(adapterAddresses,
|
|
"my favourite network adapter");
|
|
Given_Network_Adapter_Supports_DHCP_V4(adapterAddresses);
|
|
Given_Network_Adapter_Has_Operational_Status(adapterAddresses,
|
|
IfOperStatusUp);
|
|
|
|
nsCString networkAdapterName;
|
|
|
|
ASSERT_EQ(NS_OK, GetActiveDHCPNetworkAdapterName(networkAdapterName,
|
|
mMockWindowsFunctions));
|
|
|
|
ASSERT_STREQ(networkAdapterName.Data(), "my favourite network adapter");
|
|
}
|
|
|
|
TEST_F(TestDHCPUtils, TestGetAdaptersAddressesNoAvailableNetworks) {
|
|
IP_ADAPTER_ADDRESSES adapterAddresses = {};
|
|
Given_Network_Adapter_Called(adapterAddresses,
|
|
"my favourite network adapter");
|
|
Given_Network_Adapter_Supports_DHCP_V4(adapterAddresses);
|
|
Given_Network_Adapter_Has_Operational_Status(adapterAddresses,
|
|
IfOperStatusDown);
|
|
|
|
nsCString networkAdapterName;
|
|
ASSERT_EQ(NS_ERROR_NOT_AVAILABLE,
|
|
GetActiveDHCPNetworkAdapterName(networkAdapterName,
|
|
mMockWindowsFunctions));
|
|
|
|
ASSERT_STREQ(networkAdapterName.Data(), "");
|
|
}
|
|
|
|
TEST_F(TestDHCPUtils, TestGetAdaptersAddressesNoNetworksWithDHCP) {
|
|
IP_ADAPTER_ADDRESSES adapterAddresses = {};
|
|
Given_Network_Adapter_Called(adapterAddresses,
|
|
"my favourite network adapter");
|
|
Given_Network_Adapter_Has_Operational_Status(adapterAddresses,
|
|
IfOperStatusUp);
|
|
|
|
nsCString networkAdapterName;
|
|
ASSERT_EQ(NS_ERROR_NOT_AVAILABLE,
|
|
GetActiveDHCPNetworkAdapterName(networkAdapterName,
|
|
mMockWindowsFunctions));
|
|
|
|
ASSERT_STREQ(networkAdapterName.Data(), "");
|
|
}
|
|
|
|
TEST_F(TestDHCPUtils, TestGetAdaptersAddressesSecondNetworkIsAvailable) {
|
|
IP_ADAPTER_ADDRESSES adapterAddresses = {};
|
|
Given_Network_Adapter_Called(adapterAddresses,
|
|
"my favourite network adapter");
|
|
Given_Network_Adapter_Supports_DHCP_V4(adapterAddresses);
|
|
Given_Network_Adapter_Has_Operational_Status(adapterAddresses,
|
|
IfOperStatusDown);
|
|
|
|
IP_ADAPTER_ADDRESSES secondAdapterAddresses = {};
|
|
Given_Network_Adapter_Called(secondAdapterAddresses,
|
|
"my second favourite network adapter");
|
|
Given_Network_Adapter_Supports_DHCP_V6(secondAdapterAddresses);
|
|
Given_Network_Adapter_Has_Operational_Status(secondAdapterAddresses,
|
|
IfOperStatusUp);
|
|
|
|
nsCString networkAdapterName;
|
|
ASSERT_EQ(NS_OK, GetActiveDHCPNetworkAdapterName(networkAdapterName,
|
|
mMockWindowsFunctions));
|
|
|
|
ASSERT_STREQ(networkAdapterName.Data(),
|
|
"my second favourite network adapter");
|
|
}
|
|
|
|
TEST_F(TestDHCPUtils, TestGetOption) {
|
|
const char* pacURL = "http://pac.com";
|
|
Given_DHCP_Option_Is(1, "My network option");
|
|
Given_DHCP_Option_Is(252, pacURL);
|
|
|
|
std::vector<char> optionValue(255, *"originalValue originalValue");
|
|
memcpy(optionValue.data(), "originalValue originalValue",
|
|
strlen("originalValue originalValue") + 1);
|
|
|
|
uint32_t size = 255;
|
|
|
|
nsresult retVal = RetrieveOption(mDefaultAdapterName, 252, optionValue, &size,
|
|
mMockWindowsFunctions);
|
|
|
|
ASSERT_EQ(strlen(pacURL), size);
|
|
ASSERT_STREQ("http://pac.comoriginalValue", optionValue.data());
|
|
ASSERT_EQ(NS_OK, retVal);
|
|
}
|
|
|
|
TEST_F(TestDHCPUtils, TestGetAbsentOption) {
|
|
std::vector<char> optionValue(255);
|
|
uint32_t size = 256;
|
|
memcpy(optionValue.data(), "originalValue", strlen("originalValue") + 1);
|
|
|
|
nsresult retVal = RetrieveOption(mDefaultAdapterName, 252, optionValue, &size,
|
|
mMockWindowsFunctions);
|
|
|
|
ASSERT_EQ(0U, size);
|
|
ASSERT_EQ(NS_ERROR_NOT_AVAILABLE, retVal);
|
|
}
|
|
|
|
TEST_F(TestDHCPUtils, TestGetTooLongOption) {
|
|
Given_DHCP_Option_Is(252, "http://pac.com");
|
|
|
|
std::vector<char> optionValue(255);
|
|
memcpy(optionValue.data(), "originalValue", strlen("originalValue") + 1);
|
|
uint32_t size = 4;
|
|
nsresult retVal = RetrieveOption(mDefaultAdapterName, 252, optionValue, &size,
|
|
mMockWindowsFunctions);
|
|
|
|
ASSERT_STREQ("httpinalValue", optionValue.data());
|
|
ASSERT_EQ(NS_ERROR_LOSS_OF_SIGNIFICANT_DATA, retVal);
|
|
ASSERT_EQ(strlen("http://pac.com"), size);
|
|
}
|
|
|
|
TEST_F(TestNsWindowsDHCPClient, TestGettingOptionThroughNSWindowsDHCPClient) {
|
|
IP_ADAPTER_ADDRESSES adapterAddresses = {};
|
|
Given_Network_Adapter_Called(adapterAddresses,
|
|
"my favourite network adapter");
|
|
Given_Network_Adapter_Supports_DHCP_V4(adapterAddresses);
|
|
Given_Network_Adapter_Has_Operational_Status(adapterAddresses,
|
|
IfOperStatusUp);
|
|
Given_DHCP_Option_Is(252, "http://pac.com");
|
|
|
|
nsCString optionValue;
|
|
nsCOMPtr<nsIDHCPClient> dhcpClient =
|
|
new nsWindowsDHCPClient(mMockWindowsFunctions);
|
|
nsresult retVal = dhcpClient->GetOption(252, optionValue);
|
|
|
|
ASSERT_STREQ("http://pac.com", optionValue.Data());
|
|
ASSERT_STREQ(
|
|
L"my favourite network adapter",
|
|
mMockWindowsFunctions->GetLastRequestedNetworkAdapterName().Data());
|
|
ASSERT_EQ(NS_OK, retVal);
|
|
}
|
|
|
|
TEST_F(
|
|
TestNsWindowsDHCPClient,
|
|
TestGettingOptionThroughNSWindowsDHCPClientWhenNoAvailableNetworkAdapter) {
|
|
IP_ADAPTER_ADDRESSES adapterAddresses = {};
|
|
Given_Network_Adapter_Called(adapterAddresses,
|
|
"my favourite network adapter");
|
|
Given_Network_Adapter_Has_Operational_Status(adapterAddresses,
|
|
IfOperStatusDown);
|
|
Given_DHCP_Option_Is(252, "http://pac.com");
|
|
|
|
nsCString optionValue;
|
|
nsCOMPtr<nsIDHCPClient> dhcpClient =
|
|
new nsWindowsDHCPClient(mMockWindowsFunctions);
|
|
nsresult retVal = dhcpClient->GetOption(252, optionValue);
|
|
|
|
ASSERT_STREQ("", optionValue.Data());
|
|
ASSERT_EQ(NS_ERROR_NOT_AVAILABLE, retVal);
|
|
}
|
|
|
|
TEST_F(TestNsWindowsDHCPClient,
|
|
TestGettingAbsentOptionThroughNSWindowsDHCPClient) {
|
|
IP_ADAPTER_ADDRESSES adapterAddresses = {};
|
|
Given_Network_Adapter_Called(adapterAddresses,
|
|
"my favourite network adapter");
|
|
Given_Network_Adapter_Supports_DHCP_V6(adapterAddresses);
|
|
Given_Network_Adapter_Has_Operational_Status(adapterAddresses,
|
|
IfOperStatusUp);
|
|
|
|
nsCString optionValue;
|
|
nsCOMPtr<nsIDHCPClient> dhcpClient =
|
|
new nsWindowsDHCPClient(mMockWindowsFunctions);
|
|
nsresult retVal = dhcpClient->GetOption(252, optionValue);
|
|
|
|
ASSERT_STREQ("", optionValue.Data());
|
|
ASSERT_EQ(NS_ERROR_NOT_AVAILABLE, retVal);
|
|
}
|