Serenity Operating System
at master 37 lines 1.0 kB view raw
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}