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