Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Delta Between Two Patch Sets: test/plugin/UserSettingsTest.cpp

Issue 6267413888761856: Issue #1163 - add unit tests for CPluginUserSettings (Closed)
Left Patch Set: Created Aug. 6, 2014, 3:55 p.m.
Right Patch Set: Created Oct. 7, 2014, 4:57 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « adblockplus.gyp ('k') | no next file » | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 /* 1 /*
2 * This file is part of Adblock Plus <http://adblockplus.org/>, 2 * This file is part of Adblock Plus <http://adblockplus.org/>,
3 * Copyright (C) 2014 Eyeo GmbH 3 * Copyright (C) 2014 Eyeo GmbH
4 * 4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify 5 * Adblock Plus is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 3 as 6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
8 * 8 *
9 * Adblock Plus is distributed in the hope that it will be useful, 9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details. 12 * GNU General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU General Public License 14 * You should have received a copy of the GNU General Public License
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. 15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
16 */ 16 */
17 17
18 #include <gtest/gtest.h> 18 #include <gtest/gtest.h>
19 19
20 #include <OAIdl.h> 20 #include <OAIdl.h>
21 #include "../../src/plugin/PluginUserSettings.h" 21 #include "../../src/plugin/PluginUserSettings.h"
22 22
23 //---------------------------------- 23 //----------------------------------
24 // GetIDsOfNames 24 // GetIDsOfNames
25 //---------------------------------- 25 //----------------------------------
26 26
27 namespace 27 namespace
28 { 28 {
29 void single_method_name_found(std::wstring name, DISPID expected_id) 29 void SingleMethodNameFound(std::wstring name, DISPID expected_id)
sergei 2014/11/03 14:41:36 I think we need some well known abbreviation like
Felix Dahlke 2014/11/03 16:05:18 I actually thought this is modified below and that
30 { 30 {
31 CPluginUserSettings x; 31 CPluginUserSettings x;
32 wchar_t *names[1]; 32 wchar_t* names[] = {const_cast<wchar_t*>(name.c_str())};
33 names[0] = const_cast<wchar_t *>(name.c_str());
34 DISPID ids[1]; 33 DISPID ids[1];
35 HRESULT h = x.GetIDsOfNames(IID_NULL, names, 1, 0, ids); 34 HRESULT h = x.GetIDsOfNames(IID_NULL, names, 1, 0, ids);
36 ASSERT_EQ(S_OK, h); 35 ASSERT_EQ(S_OK, h);
37 DISPID id=ids[0]; 36 DISPID id = ids[0];
38 ASSERT_EQ(expected_id, id); 37 ASSERT_EQ(expected_id, id);
39 } 38 }
40 39
41 void single_method_name_notfound(std::wstring name) 40 void SingleMethodNameNotFound(std::wstring name)
sergei 2014/11/03 14:41:36 CRIM
42 { 41 {
43 CPluginUserSettings x; 42 CPluginUserSettings x;
44 wchar_t *names[1]; 43 wchar_t* names[] = {const_cast<wchar_t*>(name.c_str())};
45 names[0] = const_cast<wchar_t *>(name.c_str());
46 DISPID ids[1]; 44 DISPID ids[1];
47 HRESULT h = x.GetIDsOfNames(IID_NULL, names, 1, 0, ids); 45 HRESULT h = x.GetIDsOfNames(IID_NULL, names, 1, 0, ids);
48 ASSERT_NE(S_OK, h); 46 ASSERT_NE(S_OK, h);
49 // The old version returns a nonstandard error code. 47 // The old version returns a nonstandard error code.
50 if (h == DISP_E_MEMBERNOTFOUND) 48 if (h == DISP_E_MEMBERNOTFOUND)
51 { 49 {
52 return; 50 return;
53 } 51 }
54 EXPECT_EQ(DISP_E_UNKNOWNNAME, h); 52 EXPECT_EQ(DISP_E_UNKNOWNNAME, h);
55 } 53 }
56 } 54 }
57 55
58 TEST(CPluginUserSettings_GetIDsOfNames_Test, all_defined_found) 56 TEST(CPluginUserSettingsGetIDsOfNames, AllDefinedMethodsMustBeFound)
59 { 57 {
60 CPluginUserSettings x; 58 CPluginUserSettings x;
61 single_method_name_found(L"GetMessage", 0); 59 SingleMethodNameFound(L"GetMessage", 0);
62 single_method_name_found(L"GetLanguageCount", 1); 60 SingleMethodNameFound(L"GetLanguageCount", 1);
63 single_method_name_found(L"GetLanguageByIndex", 2); 61 SingleMethodNameFound(L"GetLanguageByIndex", 2);
64 single_method_name_found(L"GetLanguageTitleByIndex", 3); 62 SingleMethodNameFound(L"GetLanguageTitleByIndex", 3);
65 single_method_name_found(L"SetLanguage", 4); 63 SingleMethodNameFound(L"SetLanguage", 4);
66 single_method_name_found(L"GetLanguage", 5); 64 SingleMethodNameFound(L"GetLanguage", 5);
67 single_method_name_found(L"GetWhitelistDomains", 6); 65 SingleMethodNameFound(L"GetWhitelistDomains", 6);
68 single_method_name_found(L"AddWhitelistDomain", 7); 66 SingleMethodNameFound(L"AddWhitelistDomain", 7);
69 single_method_name_found(L"RemoveWhitelistDomain", 8); 67 SingleMethodNameFound(L"RemoveWhitelistDomain", 8);
70 single_method_name_found(L"GetAppLocale", 9); 68 SingleMethodNameFound(L"GetAppLocale", 9);
71 single_method_name_found(L"GetDocumentationLink", 10); 69 SingleMethodNameFound(L"GetDocumentationLink", 10);
72 single_method_name_found(L"IsAcceptableAdsEnabled", 11); 70 SingleMethodNameFound(L"IsAcceptableAdsEnabled", 11);
73 single_method_name_found(L"SetAcceptableAdsEnabled", 12); 71 SingleMethodNameFound(L"SetAcceptableAdsEnabled", 12);
74 } 72 }
75 73
76 TEST(CPluginUserSettings_GetIDsOfNames_Test, undefined_not_found) 74 TEST(CPluginUserSettingsGetIDsOfNames, UndefinedMethodsMustNotBeFound)
77 { 75 {
78 single_method_name_notfound(L""); 76 SingleMethodNameNotFound(L"");
79 single_method_name_notfound(L"clearly unknown"); 77 SingleMethodNameNotFound(L"clearly unknown");
80 single_method_name_notfound(L"GETMESSAGE"); 78 SingleMethodNameNotFound(L"GETMESSAGE");
81 } 79 }
82 80
83 //---------------------------------- 81 //----------------------------------
84 // Invoke 82 // Invoke
85 //---------------------------------- 83 //----------------------------------
86 84
87 namespace 85 namespace
88 { 86 {
89 void invoke_invalid_dispatch_id(DISPID id) 87 void InvokeInvalidDispatchId(DISPID id)
sergei 2014/08/14 11:37:26 `id` is not used.
Eric 2014/08/14 14:29:53 Oops. Forgot to replace the -1 below when I refact
90 { 88 {
91 CPluginUserSettings x; 89 CPluginUserSettings x;
92 DISPPARAMS params; 90 DISPPARAMS params;
sergei 2014/08/14 11:37:26 DISPPARAMS params = {} looks better, but OK here.
Eric 2014/08/14 14:29:53 Neither this nor the EXCEPINFO below are involved
93 params.rgvarg = nullptr; 91 params.rgvarg = nullptr;
94 params.rgdispidNamedArgs = nullptr; 92 params.rgdispidNamedArgs = nullptr;
95 params.cArgs = 0; 93 params.cArgs = 0;
96 params.cNamedArgs = 0; 94 params.cNamedArgs = 0;
97 EXCEPINFO ex; 95 EXCEPINFO ex;
sergei 2014/08/14 11:37:26 I would also initialize it.
98 HRESULT h = x.Invoke(-1, IID_NULL, 0, 0, &params, nullptr, &ex, nullptr); 96 HRESULT h = x.Invoke(id, IID_NULL, 0, DISPATCH_METHOD, &params, nullptr, &ex , nullptr);
sergei 2014/08/14 11:37:26 The first arg should be `id`.
sergei 2014/08/14 11:37:26 Why is the flag 0? As I see we expose only methods
Eric 2014/08/14 14:29:53 I changed this in the test, but the larger problem
99 ASSERT_NE(S_OK, h); 97 ASSERT_NE(S_OK, h);
100 // The old version returns a nonstandard error code. 98 // The old version returns a nonstandard error code.
101 if (h == DISP_E_BADINDEX) 99 if (h == DISP_E_BADINDEX)
102 { 100 {
103 return; 101 return;
104 } 102 }
105 EXPECT_EQ(DISP_E_MEMBERNOTFOUND, h); 103 EXPECT_EQ(DISP_E_MEMBERNOTFOUND, h);
106 } 104 }
107 } 105 }
108 106
109 TEST(CPluginUserSettings_Invoke_Test, invalid_dispatch_id_underflow) 107 /**
sergei 2014/08/14 11:37:26 I prefer more descriptive test names.
Eric 2014/08/14 14:29:53 I added comments. If the test fails, the first thi
108 * Verify that a negative Dispatch ID returns the proper error code.
109 */
110 TEST(CPluginUserSettingsInvoke, InvalidDispatchIdShouldUnderflow)
110 { 111 {
111 invoke_invalid_dispatch_id(-1); 112 InvokeInvalidDispatchId(-1);
112 } 113 }
113 114
114 TEST(CPluginUserSettings_Invoke_Test, invalid_dispatch_id_overflow) 115 /**
116 * Verify that a positive Dispatch ID that's too large returns the proper error code.
117 */
118 TEST(CPluginUserSettingsInvoke, InvalidDispatchIdShouldOverflow)
115 { 119 {
116 invoke_invalid_dispatch_id(13); 120 InvokeInvalidDispatchId(13);
117 } 121 }
LEFTRIGHT

Powered by Google App Engine
This is Rietveld