summaryrefslogtreecommitdiff
path: root/Tests/AK/TestSourceLocation.cpp
blob: 84713381c17436b703062a08e2b795c165de1aa4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/*
 * Copyright (c) 2021, Andrew Kaster <akaster@serenityos.org>
 * Copyright (c) 2021, Brian Gianforcaro <bgianf@serenityos.org>
 *
 * SPDX-License-Identifier: BSD-2-Clause
 */

#include <LibTest/TestCase.h>

#include <AK/SourceLocation.h>
#include <AK/StringView.h>

TEST_CASE(basic_scenario)
{
    auto location = SourceLocation::current();
    EXPECT_EQ(__LINE__ - 1u, location.line_number());

    // Obviously not the prettiest way.
    StringView function { __FUNCTION__, strlen(__FUNCTION__) };
    StringView file { __FILE__, strlen(__FILE__) };

    EXPECT_EQ(function, location.function_name());
    EXPECT_EQ(file, location.filename());
}

static StringView test_default_arg(SourceLocation const& loc = SourceLocation::current())
{
    return loc.function_name();
}

TEST_CASE(default_arg_scenario)
{
    auto actual_calling_function = test_default_arg();
    auto expected_calling_function = StringView { __FUNCTION__, strlen(__FUNCTION__) };

    EXPECT_EQ(expected_calling_function, actual_calling_function);
}