Serenity Operating System
1/*
2 * Copyright (c) 2021, Andrew Kaster <akaster@serenityos.org>
3 * Copyright (c) 2021, Brian Gianforcaro <bgianf@serenityos.org>
4 *
5 * SPDX-License-Identifier: BSD-2-Clause
6 */
7
8#include <LibTest/TestCase.h>
9
10#include <AK/SourceLocation.h>
11#include <AK/StringView.h>
12
13TEST_CASE(basic_scenario)
14{
15 auto location = SourceLocation::current();
16 EXPECT_EQ(__LINE__ - 1u, location.line_number());
17
18 // Obviously not the prettiest way.
19 StringView function { __FUNCTION__, strlen(__FUNCTION__) };
20 StringView file { __FILE__, strlen(__FILE__) };
21
22 EXPECT_EQ(function, location.function_name());
23 EXPECT_EQ(file, location.filename());
24}
25
26static StringView test_default_arg(SourceLocation const& loc = SourceLocation::current())
27{
28 return loc.function_name();
29}
30
31TEST_CASE(default_arg_scenario)
32{
33 auto actual_calling_function = test_default_arg();
34 auto expected_calling_function = StringView { __FUNCTION__, strlen(__FUNCTION__) };
35
36 EXPECT_EQ(expected_calling_function, actual_calling_function);
37}