Index: plugins/update/npapi/variant_utils_unittest.cc |
diff --git a/plugins/update/npapi/variant_utils_unittest.cc b/plugins/update/npapi/variant_utils_unittest.cc |
deleted file mode 100644 |
index eacc04d5d1833408eac57fc2c051dd78b802f1e2..0000000000000000000000000000000000000000 |
--- a/plugins/update/npapi/variant_utils_unittest.cc |
+++ /dev/null |
@@ -1,320 +0,0 @@ |
-// Copyright 2009 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/variant_utils.h" |
-#include <atlbase.h> |
-#include <string.h> |
-#include <stdlib.h> |
-#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 VariantUtilsTest : public testing::Test { |
- protected: |
- virtual void SetUp() { |
- VOID_TO_NPVARIANT(np_variant_); |
- } |
- |
- virtual void TearDown() { |
- NPN_ReleaseVariantValue(&np_variant_); |
- } |
- |
- void TestNPV2V() { |
- NPVariantToVariant(NULL, np_variant_, &variant_); |
- ExpectTypesEquivalent(); |
- } |
- |
- void TestV2NPV() { |
- NPN_ReleaseVariantValue(&np_variant_); |
- VariantToNPVariant(NULL, variant_, &np_variant_); |
- ExpectTypesEquivalent(); |
- } |
- |
- void ExpectTypesEquivalent() { |
- switch (V_VT(&variant_)) { |
- case VT_EMPTY: |
- EXPECT_TRUE(NPVARIANT_IS_VOID(np_variant_)); |
- return; |
- break; |
- case VT_NULL: |
- EXPECT_TRUE(NPVARIANT_IS_NULL(np_variant_)); |
- return; |
- break; |
- case VT_BOOL: |
- EXPECT_TRUE(NPVARIANT_IS_BOOLEAN(np_variant_)); |
- return; |
- break; |
- case VT_I4: |
- case VT_UI4: |
- EXPECT_TRUE(NPVARIANT_IS_INT32(np_variant_)); |
- return; |
- break; |
- case VT_R8: |
- EXPECT_TRUE(NPVARIANT_IS_DOUBLE(np_variant_)); |
- return; |
- break; |
- case VT_BSTR: |
- EXPECT_TRUE(NPVARIANT_IS_STRING(np_variant_)); |
- return; |
- break; |
- case VT_DISPATCH: |
- EXPECT_TRUE(NPVARIANT_IS_OBJECT(np_variant_)); |
- return; |
- break; |
- default: |
- break; |
- } |
- ASSERT(false, (L"Expected equivalent types but got the following instead:\n" |
- L" np_variant_.type -> %d\n V_VT(&variant_) -> %d\n", |
- np_variant_.type, V_VT(&variant_))); |
- } |
- |
- NPVariant np_variant_; |
- CComVariant variant_; |
-}; |
- |
-TEST_F(VariantUtilsTest, NPVariantToVariant_Void) { |
- VOID_TO_NPVARIANT(np_variant_); |
- TestNPV2V(); |
-} |
- |
-TEST_F(VariantUtilsTest, NPVariantToVariant_Null) { |
- NULL_TO_NPVARIANT(np_variant_); |
- TestNPV2V(); |
-} |
- |
-TEST_F(VariantUtilsTest, NPVariantToVariant_Bool) { |
- BOOLEAN_TO_NPVARIANT(true, np_variant_); |
- TestNPV2V(); |
- EXPECT_EQ(VARIANT_TRUE, V_BOOL(&variant_)); |
- |
- BOOLEAN_TO_NPVARIANT(false, np_variant_); |
- TestNPV2V(); |
- EXPECT_EQ(VARIANT_FALSE, V_BOOL(&variant_)); |
-} |
- |
-TEST_F(VariantUtilsTest, NPVariantToVariant_Int32) { |
- INT32_TO_NPVARIANT(kint32min, np_variant_); |
- TestNPV2V(); |
- EXPECT_EQ(kint32min, V_I4(&variant_)); |
- |
- INT32_TO_NPVARIANT(0, np_variant_); |
- TestNPV2V(); |
- EXPECT_EQ(0, V_I4(&variant_)); |
- |
- INT32_TO_NPVARIANT(kint32max, np_variant_); |
- TestNPV2V(); |
- EXPECT_EQ(kint32max, V_I4(&variant_)); |
-} |
- |
-TEST_F(VariantUtilsTest, NPVariantToVariant_Double) { |
- DOUBLE_TO_NPVARIANT(-1, np_variant_); |
- TestNPV2V(); |
- EXPECT_DOUBLE_EQ(-1, V_R8(&variant_)); |
- |
- DOUBLE_TO_NPVARIANT(0, np_variant_); |
- TestNPV2V(); |
- EXPECT_DOUBLE_EQ(0, V_R8(&variant_)); |
- |
- DOUBLE_TO_NPVARIANT(static_cast<double>(kuint64max), |
- np_variant_); |
- TestNPV2V(); |
- EXPECT_DOUBLE_EQ(static_cast<double>(kuint64max), V_R8(&variant_)); |
-} |
- |
-TEST_F(VariantUtilsTest, NPVariantToVariant_String) { |
- // TODO(omaha): _strdup depends on an implementation detail of the stubs. |
- STRINGZ_TO_NPVARIANT(_strdup(""), np_variant_); |
- TestNPV2V(); |
- EXPECT_STREQ(L"", V_BSTR(&variant_)); |
- |
- // Force the length to be zero. |
- STRINGZ_TO_NPVARIANT(_strdup("junk"), np_variant_); |
- np_variant_.value.stringValue.UTF8Length = 0; |
- TestNPV2V(); |
- EXPECT_STREQ(L"", V_BSTR(&variant_)); |
- |
- STRINGZ_TO_NPVARIANT(_strdup("ROBERT'); DROP TABLE Students; --"), |
- np_variant_); |
- TestNPV2V(); |
- EXPECT_STREQ(L"ROBERT'); DROP TABLE Students; --", V_BSTR(&variant_)); |
- |
- // Check that NPVariantToVariant properly converts UTF-8 to UTF-16. |
- STRINGZ_TO_NPVARIANT(_strdup("one: \xe4\xb8\x80"), np_variant_); |
- TestNPV2V(); |
- EXPECT_STREQ(L"one: \x4e00", V_BSTR(&variant_)); |
-} |
-/* |
-TEST_F(VariantUtilsTest, NPVariantToVariant_Unsupported) { |
- // NPVariantType_Object -> VT_DISPATCH conversion is not supported. |
- ExpectAsserts expect_asserts; |
- OBJECT_TO_NPVARIANT(NULL, np_variant_); |
- variant_ = 24; |
- NPVariantToVariant(NULL, np_variant_, &variant_); |
- EXPECT_EQ(VT_EMPTY, V_VT(&variant_)); |
- // Manual cleanup, since OBJECT_TO_NPVARIANT macro was used with a NULL |
- // NPObject, which is normally illegal. |
- VOID_TO_NPVARIANT(np_variant_); |
-} |
-*/ |
-TEST_F(VariantUtilsTest, VariantToNPVariant_VT_EMPTY) { |
- variant_.ChangeType(VT_EMPTY); |
- TestV2NPV(); |
-} |
- |
-TEST_F(VariantUtilsTest, VariantToNPVariant_VT_NULL) { |
- variant_.ChangeType(VT_NULL); |
- TestV2NPV(); |
-} |
- |
-TEST_F(VariantUtilsTest, VariantToNPVariant_VT_BOOL) { |
- variant_ = true; |
- TestV2NPV(); |
- EXPECT_TRUE(np_variant_.value.boolValue); |
- |
- variant_ = false; |
- TestV2NPV(); |
- EXPECT_FALSE(np_variant_.value.boolValue); |
-} |
- |
-TEST_F(VariantUtilsTest, VariantToNPVariant_VT_I4) { |
- variant_ = kint32max; |
- TestV2NPV(); |
- EXPECT_EQ(kint32max, np_variant_.value.intValue); |
- |
- variant_ = 0; |
- TestV2NPV(); |
- EXPECT_EQ(0, np_variant_.value.intValue); |
- |
- variant_ = kint32min; |
- TestV2NPV(); |
- EXPECT_EQ(kint32min, np_variant_.value.intValue); |
-} |
- |
-TEST_F(VariantUtilsTest, VariantToNPVariant_VT_UI4) { |
- variant_ = 0U; |
- TestV2NPV(); |
- EXPECT_EQ(0, np_variant_.value.intValue); |
- |
- variant_ = static_cast<uint32>(kint32max); |
- TestV2NPV(); |
- EXPECT_EQ(kint32max, np_variant_.value.intValue); |
- |
- // MSIE can natively support VT_UI4. Unfortunately, Firefox cannot. |
- // Check that kuint32max wraps around to -1. |
- variant_ = kuint32max; |
- TestV2NPV(); |
- EXPECT_EQ(-1, np_variant_.value.intValue); |
-} |
- |
-TEST_F(VariantUtilsTest, VariantToNPVariant_VT_R8) { |
- variant_ = 0.0; |
- TestV2NPV(); |
- EXPECT_DOUBLE_EQ(0.0, np_variant_.value.doubleValue); |
- |
- variant_ = -1.0; |
- TestV2NPV(); |
- EXPECT_DOUBLE_EQ(-1.0, np_variant_.value.doubleValue); |
- |
- variant_ = static_cast<double>(kuint64max); |
- TestV2NPV(); |
- EXPECT_DOUBLE_EQ(static_cast<double>(kuint64max), |
- np_variant_.value.doubleValue); |
-} |
- |
-TEST_F(VariantUtilsTest, VariantToNPVariant_VT_BSTR) { |
- variant_ = ""; |
- TestV2NPV(); |
- EXPECT_STREQ("", np_variant_.value.stringValue.UTF8Characters); |
- |
- variant_ = L"sudo make me a sandwich"; |
- TestV2NPV(); |
- EXPECT_STREQ("sudo make me a sandwich", |
- np_variant_.value.stringValue.UTF8Characters); |
- |
- // A NULL BSTR should be treated as an empty string. |
- V_VT(&variant_) = VT_BSTR; |
- V_BSTR(&variant_) = NULL; |
- TestV2NPV(); |
- EXPECT_STREQ("", np_variant_.value.stringValue.UTF8Characters); |
- |
- // Check that VariantToNPVariant properly converts UTF-16 to UTF-8. |
- variant_ = L"one: \x4e00"; |
- TestV2NPV(); |
- EXPECT_STREQ("one: \xe4\xb8\x80", |
- np_variant_.value.stringValue.UTF8Characters); |
-} |
- |
-TEST_F(VariantUtilsTest, VariantToNPVariant_VT_DISPATCH) { |
- CComPtr<IDispatch> dispatch; |
- ASSERT_SUCCEEDED( |
- CComCoClass<DispatchHostTestInterface>::CreateInstance(&dispatch)); |
- variant_ = dispatch; |
- TestV2NPV(); |
- |
- // Check that the wrapped object's methods can be called. |
- NPIdentifierFactory identifier; |
- NPVariant result; |
- VOID_TO_NPVARIANT(result); |
- EXPECT_TRUE(NPN_Invoke(NULL, np_variant_.value.objectValue, |
- identifier.Create("Random"), NULL, 0, &result)); |
- EXPECT_TRUE(NPVARIANT_IS_INT32(result)); |
- EXPECT_EQ(42, result.value.intValue); |
-} |
- |
-TEST_F(VariantUtilsTest, VariantToNPVariant_Unsupported) { |
- // Legal variant types inferred from oaidl.idl and wtypes.h. Note that some |
- // types that aren't marked as appearing in VARIANTs still have a VARIANT |
- // field for that type, so they are included anyway... |
- |
- // Note that VT_UNKNOWN must not be the last element in the array; otherwise |
- // CComVariant will attempt to call Release() on a NULL pointer. |
- const VARTYPE kUnsupportedSimpleTypes[] = { |
- VT_I2, VT_R4, VT_CY, VT_DATE, VT_ERROR, VT_VARIANT, VT_UNKNOWN, VT_DECIMAL, |
- VT_RECORD, VT_I1, VT_UI1, VT_UI2, VT_I8, VT_UI8, VT_INT, VT_UINT, VT_BYREF |
- }; |
- for (int i = 0; i < arraysize(kUnsupportedSimpleTypes); ++i) { |
- ExpectAsserts expect_asserts; |
- V_VT(&variant_) = kUnsupportedSimpleTypes[i]; |
- INT32_TO_NPVARIANT(42, np_variant_); |
- TestV2NPV(); |
- EXPECT_TRUE(NPVARIANT_IS_VOID(np_variant_)); |
- } |
- |
- // Compound modifiers. |
- const VARTYPE kCompoundModifiers[] = { |
- VT_ARRAY, VT_BYREF, VT_ARRAY | VT_BYREF |
- }; |
- // Compound types. |
- const VARTYPE kCompoundableTypes[] = { |
- VT_I2, VT_I4, VT_R4, VT_R8, VT_CY, VT_DATE, VT_BSTR, VT_DISPATCH, VT_ERROR, |
- VT_BOOL, VT_VARIANT, VT_UNKNOWN, VT_DECIMAL, VT_RECORD, VT_I1, VT_UI1, |
- VT_UI2, VT_UI4, VT_I8, VT_UI8, VT_INT, VT_UINT |
- }; |
- |
- for (int i = 0; i < arraysize(kCompoundModifiers); ++i) { |
- for (int j = 0; j < arraysize(kCompoundableTypes); ++j) { |
- ExpectAsserts expect_asserts; |
- V_VT(&variant_) = kCompoundModifiers[i] | kCompoundableTypes[j]; |
- INT32_TO_NPVARIANT(42, np_variant_); |
- TestV2NPV(); |
- EXPECT_TRUE(NPVARIANT_IS_VOID(np_variant_)); |
- } |
- } |
-} |
- |
-} // namespace omaha |