// AsyncWait - sync TEST(TestBufferedInputStream, AsyncWait_sync) { const size_t kBufSize = 10; nsCString buf; RefPtr<nsBufferedInputStream> bis = CreateStream(kBufSize, buf); RefPtr<testing::InputStreamCallback> cb = new testing::InputStreamCallback(); ASSERT_EQ(NS_OK, bis->AsyncWait(cb, 0, 0, nullptr)); // Immediatelly called ASSERT_TRUE(cb->Called()); }
// AsyncWait - sync - closureOnly TEST(TestBufferedInputStream, AsyncWait_sync_closureOnly) { const size_t kBufSize = 10; nsCString buf; RefPtr<nsBufferedInputStream> bis = CreateStream(kBufSize, buf); RefPtr<testing::InputStreamCallback> cb = new testing::InputStreamCallback(); ASSERT_EQ(NS_OK, bis->AsyncWait(cb, nsIAsyncInputStream::WAIT_CLOSURE_ONLY, 0, nullptr)); ASSERT_FALSE(cb->Called()); bis->CloseWithStatus(NS_ERROR_FAILURE); // Immediatelly called ASSERT_TRUE(cb->Called()); }
// AsyncWait - async TEST(TestBufferedInputStream, AsyncWait_async) { const size_t kBufSize = 10; nsCString buf; RefPtr<nsBufferedInputStream> bis = CreateStream(kBufSize, buf); RefPtr<testing::InputStreamCallback> cb = new testing::InputStreamCallback(); nsCOMPtr<nsIThread> thread = do_GetCurrentThread(); ASSERT_EQ(NS_OK, bis->AsyncWait(cb, 0, 0, thread)); ASSERT_FALSE(cb->Called()); // Eventually it is called. MOZ_ALWAYS_TRUE(mozilla::SpinEventLoopUntil([&]() { return cb->Called(); })); ASSERT_TRUE(cb->Called()); }
// AsyncWait - async TEST(TestBufferedInputStream, AsyncWait_async_closureOnly) { const size_t kBufSize = 10; nsCString buf; RefPtr<nsBufferedInputStream> bis = CreateStream(kBufSize, buf); RefPtr<testing::InputStreamCallback> cb = new testing::InputStreamCallback(); nsCOMPtr<nsIThread> thread = do_GetCurrentThread(); ASSERT_EQ(NS_OK, bis->AsyncWait(cb, nsIAsyncInputStream::WAIT_CLOSURE_ONLY, 0, thread)); ASSERT_FALSE(cb->Called()); bis->CloseWithStatus(NS_ERROR_FAILURE); ASSERT_FALSE(cb->Called()); // Eventually it is called. MOZ_ALWAYS_TRUE(mozilla::SpinEventLoopUntil([&]() { return cb->Called(); })); ASSERT_TRUE(cb->Called()); }