Index: plugins/update/npapi/npfunction_host_unittest.cc |
diff --git a/plugins/update/npapi/npfunction_host_unittest.cc b/plugins/update/npapi/npfunction_host_unittest.cc |
deleted file mode 100644 |
index 81d3b9b3e6ca2b58e169d3a3afb13d3ace2bd1b6..0000000000000000000000000000000000000000 |
--- a/plugins/update/npapi/npfunction_host_unittest.cc |
+++ /dev/null |
@@ -1,317 +0,0 @@ |
-// Copyright 2010 Google Inc. |
-// |
-// 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 "omaha/plugins/update/npapi/npfunction_host.h" |
-#include <atlbase.h> |
-#include <atlcom.h> |
-#include <string.h> |
-#include <vector> |
-#include "omaha/plugins/update/npapi/testing/dispatch_host_test_interface.h" |
-#include "omaha/plugins/update/npapi/testing/stubs.h" |
-#include "omaha/testing/unit_test.h" |
- |
-namespace omaha { |
- |
-class NpFunctionHostTest; |
- |
-class MockFunctionNPObject : public NPObject { |
- public: |
- static MockFunctionNPObject* CreateInstance(NpFunctionHostTest* creator) { |
- NPObject* obj = NPN_CreateObject(NULL, &MockFunctionNPObject::kNPClass_); |
- MockFunctionNPObject* realobj = static_cast<MockFunctionNPObject*>(obj); |
- realobj->creator_ = creator; |
- return realobj; |
- } |
- |
- static NPObject* Allocate(NPP npp, NPClass* class_functions) { |
- UNREFERENCED_PARAMETER(class_functions); |
- return new MockFunctionNPObject(npp); |
- } |
- |
- static void Deallocate(NPObject* object) { |
- delete static_cast<MockFunctionNPObject*>(object); |
- } |
- |
- static bool InvokeDefault(NPObject* object, |
- const NPVariant* args, |
- uint32_t arg_count, |
- NPVariant* result) { |
- MockFunctionNPObject* realobj = static_cast<MockFunctionNPObject*>(object); |
- return realobj->InvokeDefaultLocal(args, arg_count, result); |
- } |
- |
- bool InvokeDefaultLocal(const NPVariant* args, |
- uint32_t arg_count, |
- NPVariant* result); |
- |
- protected: |
- explicit MockFunctionNPObject(NPP npp) : npp_(npp), creator_(NULL) {} |
- |
- static NPUTF8* NPN_ReallocateStringZ(const char* string) { |
- uint32 buflen = strlen(string) + 1; |
- NPUTF8* npnstr = reinterpret_cast<NPUTF8*>(NPN_MemAlloc(buflen)); |
- memmove(npnstr, string, buflen); |
- return npnstr; |
- } |
- |
- private: |
- NPP npp_; |
- NpFunctionHostTest* creator_; |
- |
- // The NPObject vtable. |
- static NPClass kNPClass_; |
-}; |
- |
-class NpFunctionHostTest : public testing::Test { |
- protected: |
- friend class MockFunctionNPObject; |
- |
- virtual void SetUp() { |
- function_ = MockFunctionNPObject::CreateInstance(this); |
- EXPECT_SUCCEEDED(NpFunctionHost::Create(NULL, function_, &host_)); |
- } |
- |
- virtual void TearDown() { |
- } |
- |
- NPObject* function_; |
- CComPtr<IDispatch> host_; |
- |
- std::vector<NPVariant> mock_args_; |
- NPVariant mock_result_; |
-}; |
- |
-NPClass MockFunctionNPObject::kNPClass_ = { |
- NP_CLASS_STRUCT_VERSION, |
- Allocate, |
- Deallocate, |
- NULL, |
- NULL, |
- NULL, |
- InvokeDefault, |
- NULL, |
- NULL, |
- NULL, |
- NULL, |
- NULL, |
- NULL, |
-}; |
- |
-bool MockFunctionNPObject::InvokeDefaultLocal(const NPVariant* args, |
- uint32_t arg_count, |
- NPVariant* result) { |
- const char* kMultiStringReturn = "multi"; |
- |
- // The mock NPObject exhibits the following external behavior: |
- // * If no arguments, return nothing |
- // * If one argument, return a boolean (true) |
- // * If two arguments, return a string ("multi") |
- // * Otherwise, treat it as an invoke failure. |
- // It also copies the arguments as supplied, and the intended NPVariant |
- // return value, to the test closure that created it. |
- |
- creator_->mock_args_.resize(arg_count); |
- for (uint32_t i = 0; i < arg_count; ++i) { |
- creator_->mock_args_[i] = args[i]; |
- } |
- |
- switch (arg_count) { |
- case 0: |
- VOID_TO_NPVARIANT(*result); |
- break; |
- case 1: |
- BOOLEAN_TO_NPVARIANT(true, *result); |
- break; |
- case 2: |
- { |
- NPUTF8* utf8string = NPN_ReallocateStringZ(kMultiStringReturn); |
- STRINGZ_TO_NPVARIANT(utf8string, *result); |
- } |
- break; |
- default: |
- return false; |
- } |
- |
- creator_->mock_result_ = *result; |
- return true; |
-} |
- |
-TEST_F(NpFunctionHostTest, GetTypeInfoCount) { |
- UINT typeinfos_available = 1; |
- EXPECT_SUCCEEDED(host_->GetTypeInfoCount(&typeinfos_available)); |
- EXPECT_EQ(0, typeinfos_available); |
-} |
- |
-TEST_F(NpFunctionHostTest, GetTypeInfo_NotImplemented) { |
- ITypeInfo* typeinfo = NULL; |
- |
- EXPECT_EQ(E_NOTIMPL, host_->GetTypeInfo(0, LOCALE_SYSTEM_DEFAULT, &typeinfo)); |
-} |
- |
-TEST_F(NpFunctionHostTest, GetIDsOfNames_NotImplemented) { |
- LPOLESTR member_name = L"NonexistentMember"; |
- DISPID member_dispid = 0; |
- EXPECT_EQ(E_NOTIMPL, host_->GetIDsOfNames(IID_NULL, &member_name, 1, |
- LOCALE_SYSTEM_DEFAULT, |
- &member_dispid)); |
-} |
- |
-TEST_F(NpFunctionHostTest, Invoke_NonMethod_NotSupported) { |
- EXPECT_EQ(DISP_E_MEMBERNOTFOUND, host_->Invoke(0, IID_NULL, |
- LOCALE_SYSTEM_DEFAULT, |
- DISPATCH_PROPERTYGET, |
- NULL, |
- NULL, |
- NULL, |
- NULL)); |
-} |
- |
-TEST_F(NpFunctionHostTest, Invoke_NamedArgs_NotSupported) { |
- DISPID param_name = 12; |
- DISPPARAMS params = {}; |
- params.cNamedArgs = 1; |
- params.rgdispidNamedArgs = ¶m_name; |
- EXPECT_EQ(DISP_E_NONAMEDARGS, host_->Invoke(0, IID_NULL, |
- LOCALE_SYSTEM_DEFAULT, |
- DISPATCH_METHOD, |
- ¶ms, |
- NULL, |
- NULL, |
- NULL)); |
-} |
- |
-TEST_F(NpFunctionHostTest, Invoke_NoArgs_NullDispParams) { |
- VARIANT retval = {}; |
- EXPECT_SUCCEEDED(host_->Invoke(0, IID_NULL, |
- LOCALE_SYSTEM_DEFAULT, |
- DISPATCH_METHOD, |
- NULL, |
- &retval, |
- NULL, |
- NULL)); |
- |
- EXPECT_EQ(0, mock_args_.size()); |
- |
- EXPECT_TRUE(NPVARIANT_IS_VOID(mock_result_)); |
- EXPECT_EQ(VT_EMPTY, retval.vt); |
- VariantClear(&retval); |
-} |
- |
-TEST_F(NpFunctionHostTest, Invoke_NoArgs_ValidDispParams) { |
- VARIANT retval = {}; |
- DISPPARAMS params = {}; |
- EXPECT_SUCCEEDED(host_->Invoke(0, IID_NULL, |
- LOCALE_SYSTEM_DEFAULT, |
- DISPATCH_METHOD, |
- ¶ms, |
- &retval, |
- NULL, |
- NULL)); |
- |
- EXPECT_EQ(0, mock_args_.size()); |
- |
- EXPECT_TRUE(NPVARIANT_IS_VOID(mock_result_)); |
- EXPECT_EQ(VT_EMPTY, retval.vt); |
- VariantClear(&retval); |
-} |
- |
-TEST_F(NpFunctionHostTest, Invoke_NoArgs_OneParam) { |
- const int kTestIntVal = 0xDEADBEEF; |
- |
- VARIANT retval = {}; |
- VARIANT firstparam = {}; |
- firstparam.vt = VT_I4; |
- firstparam.intVal = kTestIntVal; |
- |
- DISPPARAMS dispparams = {}; |
- dispparams.cArgs = 1; |
- dispparams.rgvarg = &firstparam; |
- |
- EXPECT_SUCCEEDED(host_->Invoke(0, IID_NULL, |
- LOCALE_SYSTEM_DEFAULT, |
- DISPATCH_METHOD, |
- &dispparams, |
- &retval, |
- NULL, |
- NULL)); |
- |
- EXPECT_EQ(1, mock_args_.size()); |
- EXPECT_TRUE(NPVARIANT_IS_INT32(mock_args_[0])); |
- EXPECT_EQ(kTestIntVal, NPVARIANT_TO_INT32(mock_args_[0])); |
- |
- EXPECT_TRUE(NPVARIANT_IS_BOOLEAN(mock_result_)); |
- EXPECT_EQ(true, NPVARIANT_TO_BOOLEAN(mock_result_)); |
- EXPECT_EQ(VT_BOOL, retval.vt); |
- EXPECT_EQ(VARIANT_TRUE, retval.boolVal); |
- VariantClear(&retval); |
-} |
- |
-TEST_F(NpFunctionHostTest, Invoke_NoArgs_TwoParams) { |
- const double kTestFloatVal = 3.1415927; |
- |
- VARIANT retval = {}; |
- VARIANT params[2] = {}; |
- params[0].vt = VT_BOOL; // Invoke expects args in reverse order |
- params[0].intVal = VARIANT_TRUE; |
- params[1].vt = VT_R8; |
- params[1].dblVal = kTestFloatVal; |
- |
- DISPPARAMS dispparams = {}; |
- dispparams.cArgs = 2; |
- dispparams.rgvarg = params; |
- EXPECT_SUCCEEDED(host_->Invoke(0, IID_NULL, |
- LOCALE_SYSTEM_DEFAULT, |
- DISPATCH_METHOD, |
- &dispparams, |
- &retval, |
- NULL, |
- NULL)); |
- |
- EXPECT_EQ(2, mock_args_.size()); |
- EXPECT_TRUE(NPVARIANT_IS_DOUBLE(mock_args_[0])); |
- EXPECT_EQ(kTestFloatVal, NPVARIANT_TO_DOUBLE(mock_args_[0])); |
- EXPECT_TRUE(NPVARIANT_IS_BOOLEAN(mock_args_[1])); |
- EXPECT_EQ(true, NPVARIANT_TO_BOOLEAN(mock_args_[1])); |
- |
- EXPECT_TRUE(NPVARIANT_IS_STRING(mock_result_)); |
- // Don't check mock_result's contents; it will have been released by Invoke() |
- EXPECT_EQ(VT_BSTR, retval.vt); |
- EXPECT_STREQ(CString("multi"), CString(retval.bstrVal)); |
- VariantClear(&retval); |
-} |
- |
-TEST_F(NpFunctionHostTest, Invoke_NoArgs_ThreeParams) { |
- VARIANT retval = {}; |
- VARIANT params[3] = {}; |
- for (int i = 0; i < 3; ++i) { |
- params[i].vt = VT_BOOL; |
- params[i].intVal = VARIANT_TRUE; |
- } |
- |
- DISPPARAMS dispparams = {}; |
- dispparams.cArgs = 3; |
- dispparams.rgvarg = params; |
- EXPECT_EQ(E_FAIL, host_->Invoke(0, IID_NULL, |
- LOCALE_SYSTEM_DEFAULT, |
- DISPATCH_METHOD, |
- &dispparams, |
- &retval, |
- NULL, |
- NULL)); |
- EXPECT_EQ(3, mock_args_.size()); |
-} |
- |
- |
-} // namespace omaha |