blob: 234f01b1e3488f36708a71461c78eccfd418a501 [file] [log] [blame]
// Copyright 2016 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <assert.h>
#include <stdbool.h>
#include <zircon/syscalls.h>
#include <zircon/syscalls/object.h>
#include <unittest/unittest.h>
// Test that VMO handles support user signals
bool vmo_signal_test(void) {
BEGIN_TEST;
zx_handle_t vmo = ZX_HANDLE_INVALID;
ASSERT_EQ(zx_vmo_create(4096, 0, &vmo), ZX_OK, "");
ASSERT_NE(vmo, ZX_HANDLE_INVALID, "zx_vmo_create() failed");
zx_signals_t out_signals = 0;
ASSERT_EQ(zx_object_wait_one(vmo, ZX_USER_SIGNAL_0, zx_deadline_after(1), &out_signals),
ZX_ERR_TIMED_OUT, "");
ASSERT_EQ(out_signals, 0u, "out_signals not zero after wait timed out");
ASSERT_EQ(zx_object_signal(vmo, 0, ZX_USER_SIGNAL_0), ZX_OK, "");
ASSERT_EQ(
zx_object_wait_one(vmo, ZX_USER_SIGNAL_0, ZX_TIME_INFINITE, &out_signals), ZX_OK, "");
ASSERT_EQ(
out_signals, ZX_USER_SIGNAL_0,
"ZX_USER_SIGNAL_0 not set after successful wait");
EXPECT_EQ(zx_handle_close(vmo), ZX_OK, "");
END_TEST;
}
BEGIN_TEST_CASE(vmo_signal_tests)
RUN_TEST(vmo_signal_test)
END_TEST_CASE(vmo_signal_tests)
#ifndef BUILD_COMBINED_TESTS
int main(int argc, char** argv) {
return unittest_run_all_tests(argc, argv) ? 0 : -1;
}
#endif