xref: /llvm-project/lldb/unittests/Host/FileActionTest.cpp (revision 3bc58fc7f79a9b0cbf931573cb257344bfeaca1e)
180814287SRaphael Isemann //===-- FileActionTest.cpp ------------------------------------------------===//
2eef758e9SPavel Labath //
3bae220ceSPavel Labath // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4bae220ceSPavel Labath // See https://llvm.org/LICENSE.txt for license information.
5bae220ceSPavel Labath // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6eef758e9SPavel Labath //
7eef758e9SPavel Labath //===----------------------------------------------------------------------===//
8eef758e9SPavel Labath 
9efc6d33bSWanyi #include <fcntl.h>
10efc6d33bSWanyi 
11eef758e9SPavel Labath #include "lldb/Host/FileAction.h"
12eef758e9SPavel Labath #include "gtest/gtest.h"
13a325c535SZequan Wu #if defined(_WIN32)
14a325c535SZequan Wu #include "lldb/Host/windows/PosixApi.h"
15a325c535SZequan Wu #endif
16eef758e9SPavel Labath 
17eef758e9SPavel Labath using namespace lldb_private;
18eef758e9SPavel Labath 
19eef758e9SPavel Labath TEST(FileActionTest, Open) {
20eef758e9SPavel Labath   FileAction Action;
21eef758e9SPavel Labath   Action.Open(47, FileSpec("/tmp"), /*read*/ true, /*write*/ false);
22eef758e9SPavel Labath   EXPECT_EQ(Action.GetAction(), FileAction::eFileActionOpen);
23eef758e9SPavel Labath   EXPECT_EQ(Action.GetFileSpec(), FileSpec("/tmp"));
24eef758e9SPavel Labath }
25efc6d33bSWanyi 
26efc6d33bSWanyi TEST(FileActionTest, OpenReadWrite) {
27efc6d33bSWanyi   FileAction Action;
28efc6d33bSWanyi   Action.Open(48, FileSpec("/tmp_0"), /*read*/ true, /*write*/ true);
29efc6d33bSWanyi   EXPECT_TRUE(Action.GetActionArgument() & (O_NOCTTY | O_CREAT | O_RDWR));
30efc6d33bSWanyi   EXPECT_FALSE(Action.GetActionArgument() & O_RDONLY);
31efc6d33bSWanyi   EXPECT_FALSE(Action.GetActionArgument() & O_WRONLY);
32efc6d33bSWanyi }
33efc6d33bSWanyi 
34efc6d33bSWanyi TEST(FileActionTest, OpenReadOnly) {
35efc6d33bSWanyi   FileAction Action;
36efc6d33bSWanyi   Action.Open(49, FileSpec("/tmp_1"), /*read*/ true, /*write*/ false);
37*3bc58fc7SMuhammad Omair Javaid #ifndef _WIN32
38efc6d33bSWanyi   EXPECT_TRUE(Action.GetActionArgument() & (O_NOCTTY | O_RDONLY));
39*3bc58fc7SMuhammad Omair Javaid #endif
40efc6d33bSWanyi   EXPECT_FALSE(Action.GetActionArgument() & O_WRONLY);
41efc6d33bSWanyi }
42efc6d33bSWanyi 
43efc6d33bSWanyi TEST(FileActionTest, OpenWriteOnly) {
44efc6d33bSWanyi   FileAction Action;
45efc6d33bSWanyi   Action.Open(50, FileSpec("/tmp_2"), /*read*/ false, /*write*/ true);
46efc6d33bSWanyi   EXPECT_TRUE(Action.GetActionArgument() &
47efc6d33bSWanyi               (O_NOCTTY | O_CREAT | O_WRONLY | O_TRUNC));
48efc6d33bSWanyi   EXPECT_FALSE(Action.GetActionArgument() & O_RDONLY);
49efc6d33bSWanyi }
50