// Copyright 2018 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 #include static bool time_add_duration_test() { BEGIN_TEST; EXPECT_EQ(0, zx_time_add_duration(0, 0)); EXPECT_EQ(918741562, zx_time_add_duration(918729180, 12382)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_time_add_duration(ZX_TIME_INFINITE_PAST, 0)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_time_add_duration(ZX_TIME_INFINITE_PAST, -1)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_time_add_duration(ZX_TIME_INFINITE_PAST, -3298901)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_time_add_duration(ZX_TIME_INFINITE_PAST, ZX_TIME_INFINITE_PAST)); EXPECT_EQ(ZX_TIME_INFINITE, zx_time_add_duration(ZX_TIME_INFINITE, 0)); EXPECT_EQ(ZX_TIME_INFINITE, zx_time_add_duration(ZX_TIME_INFINITE, 1)); EXPECT_EQ(ZX_TIME_INFINITE, zx_time_add_duration(ZX_TIME_INFINITE, 3298901)); EXPECT_EQ(ZX_TIME_INFINITE, zx_time_add_duration(ZX_TIME_INFINITE, ZX_TIME_INFINITE)); END_TEST; } static bool time_sub_duration_test() { BEGIN_TEST; EXPECT_EQ(-1, zx_time_sub_duration(1, 2)); EXPECT_EQ(-1, zx_time_sub_duration(0, 1)); EXPECT_EQ(0, zx_time_sub_duration(0, 0)); EXPECT_EQ(0, zx_time_sub_duration(ZX_TIME_INFINITE_PAST, ZX_TIME_INFINITE_PAST)); EXPECT_EQ(0, zx_time_sub_duration(ZX_TIME_INFINITE, ZX_TIME_INFINITE)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_time_sub_duration(ZX_TIME_INFINITE_PAST, 0)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_time_sub_duration(ZX_TIME_INFINITE_PAST, 1)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_time_sub_duration(ZX_TIME_INFINITE_PAST, ZX_TIME_INFINITE)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_time_sub_duration(INT64_MIN, INT64_MAX)); EXPECT_EQ((ZX_TIME_INFINITE - 1), zx_time_sub_duration(ZX_TIME_INFINITE, 1)); EXPECT_EQ(918716798, zx_time_sub_duration(918729180, 12382)); END_TEST; } static bool time_sub_time_test() { BEGIN_TEST; EXPECT_EQ(-1, zx_time_sub_time(1, 2)); EXPECT_EQ(-1, zx_time_sub_time(0, 1)); EXPECT_EQ(0, zx_time_sub_time(0, 0)); EXPECT_EQ(0, zx_time_sub_time(ZX_TIME_INFINITE_PAST, ZX_TIME_INFINITE_PAST)); EXPECT_EQ(0, zx_time_sub_time(ZX_TIME_INFINITE, ZX_TIME_INFINITE)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_time_sub_time(ZX_TIME_INFINITE_PAST, 0)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_time_sub_time(ZX_TIME_INFINITE_PAST, 1)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_time_sub_time(ZX_TIME_INFINITE_PAST, ZX_TIME_INFINITE)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_time_sub_time(INT64_MIN, INT64_MAX)); EXPECT_EQ((ZX_TIME_INFINITE - 1), zx_time_sub_time(ZX_TIME_INFINITE, 1)); EXPECT_EQ(918716798, zx_time_sub_time(918729180, 12382)); END_TEST; } static bool duration_add_duration_test() { BEGIN_TEST; EXPECT_EQ(0, zx_duration_add_duration(0, 0)); EXPECT_EQ(918741562, zx_duration_add_duration(918729180, 12382)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_duration_add_duration(ZX_TIME_INFINITE_PAST, 0)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_duration_add_duration(ZX_TIME_INFINITE_PAST, -1)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_duration_add_duration(ZX_TIME_INFINITE_PAST, -3298901)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_duration_add_duration(ZX_TIME_INFINITE_PAST, ZX_TIME_INFINITE_PAST)); EXPECT_EQ(ZX_TIME_INFINITE, zx_duration_add_duration(ZX_TIME_INFINITE, 0)); EXPECT_EQ(ZX_TIME_INFINITE, zx_duration_add_duration(ZX_TIME_INFINITE, 1)); EXPECT_EQ(ZX_TIME_INFINITE, zx_duration_add_duration(ZX_TIME_INFINITE, 3298901)); EXPECT_EQ(ZX_TIME_INFINITE, zx_duration_add_duration(ZX_TIME_INFINITE, ZX_TIME_INFINITE)); EXPECT_EQ(ZX_TIME_INFINITE, zx_duration_add_duration(ZX_TIME_INFINITE, INT64_MAX)); END_TEST; } static bool duration_sub_duration_test() { BEGIN_TEST; EXPECT_EQ(918716798, zx_duration_sub_duration(918729180, 12382)); EXPECT_EQ(-1, zx_duration_sub_duration(1, 2)); EXPECT_EQ(-1, zx_duration_sub_duration(0, 1)); EXPECT_EQ(0, zx_duration_sub_duration(0, 0)); EXPECT_EQ(0, zx_duration_sub_duration(3980, 3980)); EXPECT_EQ(0, zx_duration_sub_duration(ZX_TIME_INFINITE_PAST, ZX_TIME_INFINITE_PAST)); EXPECT_EQ(0, zx_duration_sub_duration(ZX_TIME_INFINITE, ZX_TIME_INFINITE)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_duration_sub_duration(ZX_TIME_INFINITE_PAST, 0)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_duration_sub_duration(ZX_TIME_INFINITE_PAST, 1)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_duration_sub_duration(ZX_TIME_INFINITE_PAST, ZX_TIME_INFINITE)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_duration_sub_duration(INT64_MIN, INT64_MAX)); EXPECT_EQ((ZX_TIME_INFINITE - 1), zx_duration_sub_duration(ZX_TIME_INFINITE, 1)); EXPECT_EQ(ZX_TIME_INFINITE, zx_duration_sub_duration(0, ZX_TIME_INFINITE_PAST)); END_TEST; } static bool duration_mul_int64_test() { BEGIN_TEST; EXPECT_EQ(0, zx_duration_mul_int64(0, 0)); EXPECT_EQ(39284291, zx_duration_mul_int64(39284291, 1)); EXPECT_EQ(220499082795, zx_duration_mul_int64(23451, 9402545)); EXPECT_EQ(-39284291, zx_duration_mul_int64(39284291, -1)); EXPECT_EQ(-220499082795, zx_duration_mul_int64(23451, -9402545)); EXPECT_EQ(220499082795, zx_duration_mul_int64(-23451, -9402545)); EXPECT_EQ(ZX_TIME_INFINITE, zx_duration_mul_int64(ZX_TIME_INFINITE, 2)); EXPECT_EQ(ZX_TIME_INFINITE, zx_duration_mul_int64(ZX_TIME_INFINITE_PAST, -2)); EXPECT_EQ(ZX_TIME_INFINITE_PAST, zx_duration_mul_int64(ZX_TIME_INFINITE_PAST, 2)); END_TEST; } BEGIN_TEST_CASE(time_test) RUN_TEST(time_add_duration_test) RUN_TEST(time_sub_duration_test) RUN_TEST(time_sub_time_test) RUN_TEST(duration_add_duration_test) RUN_TEST(duration_sub_duration_test) RUN_TEST(duration_mul_int64_test) END_TEST_CASE(time_test) int main(int argc, char** argv) { bool success = unittest_run_all_tests(argc, argv); return success ? 0 : -1; }