| Index: test/Notification.cpp |
| =================================================================== |
| --- a/test/Notification.cpp |
| +++ b/test/Notification.cpp |
| @@ -10,17 +10,20 @@ |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| */ |
| +#include <iostream> |
| +#include <AdblockPlus/DefaultLogSystem.h> |
| #include "BaseJsTest.h" |
| +#include "../src/DefaultTimer.h" |
|
sergei
2017/09/12 09:22:48
It seems these headers are not required.
hub
2017/09/12 12:59:09
Done.
|
| using namespace AdblockPlus; |
| namespace |
| { |
| class NotificationTest : public BaseJsTest |
| { |
| protected: |
| @@ -75,64 +78,66 @@ |
| ServerResponse serverResponse; |
| serverResponse.status = IWebRequest::NS_OK; |
| serverResponse.responseStatus = 200; |
| serverResponse.responseText = responseText; |
| getCallback(serverResponse); |
| } |
| }; |
| - |
| // To run this test one needs to set INITIAL_DELAY to about 2000 msec |
| // in notification.js. |
| class NotificationMockWebRequestTest : public BaseJsTest |
| { |
| protected: |
| - bool isNotificationCallbackCalled; |
| + AdblockPlus::Sync sync; |
|
sergei
2017/09/12 09:22:48
It seems sync is not needed.
hub
2017/09/12 12:59:09
yes it is. Line 112 and line 135
sergei
2017/09/12 13:34:09
There are no other threads, so sync is not needed,
hub
2017/09/12 15:51:10
Done.
|
| void SetUp() |
| { |
| - isNotificationCallbackCalled = false; |
| const char* responseJsonText = "{" |
| "\"notifications\": [{" |
| "\"id\": \"some id\"," |
| "\"type\": \"information\"," |
| "\"message\": {" |
| "\"en-US\": \"message\"" |
| "}," |
| "\"title\": \"Title\"" |
| "}]" |
| "}"; |
| - ThrowingPlatformCreationParameters platformParams; |
| + AdblockPlus::Platform::CreationParameters platformParams; |
| + platformParams.logSystem.reset(new AdblockPlus::DefaultLogSystem()); |
|
sergei
2017/09/12 09:22:48
What about using of ThrowingLogSystem as earlier?
hub
2017/09/12 12:59:09
Done.
|
| + platformParams.timer.reset(new ManualTimer()); |
|
sergei
2017/09/12 09:22:48
I would recommend to use DelayedTimer and not crea
hub
2017/09/12 12:59:09
DelayedTimer doesn't do what I want. The idea of M
sergei
2017/09/12 13:34:09
I still think that DelayedTimer is better here bec
hub
2017/09/12 15:51:10
I see.
Done.
|
| platformParams.fileSystem.reset(new LazyFileSystem()); |
| platformParams.webRequest.reset(new MockWebRequest(responseJsonText)); |
| platform.reset(new Platform(std::move(platformParams))); |
| auto& filterEngine = platform->GetFilterEngine(); |
|
sergei
2017/09/12 09:22:48
I think here is a dead lock, it should be as above
hub
2017/09/12 12:59:08
Done.
|
| filterEngine.SetShowNotificationCallback( |
| [this](Notification&& notification) { |
| - isNotificationCallbackCalled = true; |
| + sync.Set(); |
| EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_INFORMATION, notification.GetType()); |
| EXPECT_EQ("Title", notification.GetTexts().title); |
| EXPECT_EQ("message", notification.GetTexts().message); |
| notification.MarkAsShown(); |
| }); |
| } |
| }; |
| } |
| TEST_F(NotificationTest, NoNotifications) |
| { |
| EXPECT_FALSE(PeekNotification()); |
| } |
| -TEST_F(NotificationMockWebRequestTest, DISABLED_SingleNotification) |
| +TEST_F(NotificationMockWebRequestTest, SingleNotification) |
| { |
| - AdblockPlus::Sleep(5000/*msec*/); // it's a hack |
| - EXPECT_TRUE(isNotificationCallbackCalled); |
| + auto& filterEngine = platform->GetFilterEngine(); |
| + static_cast<ManualTimer&>(platform->GetTimer()).runOne(); |
|
sergei
2017/09/12 09:22:48
I still think that it would be more reliable to fi
hub
2017/09/12 12:59:08
I changed it to a runPending() which will run all
|
| + filterEngine.ShowNextNotification(); |
| + EXPECT_TRUE(sync.WaitFor(std::chrono::seconds(4))); |
| } |
| TEST_F(NotificationTest, AddNotification) |
| { |
| AddNotification("{" |
| "type: 'critical'," |
| "title: 'testTitle'," |
| "message: 'testMessage'," |