1890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner// Copyright 2014 The Android Open Source Project 2890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner// 3890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner// This software is licensed under the terms of the GNU General Public 4890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner// License version 2, as published by the Free Software Foundation, and 5890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner// may be copied, distributed, and modified under those terms. 6890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner// 7890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner// This program is distributed in the hope that it will be useful, 8890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner// but WITHOUT ANY WARRANTY; without even the implied warranty of 9890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner// GNU General Public License for more details. 11890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner 12890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner#include "android/base/files/ScopedStdioFile.h" 13890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner 14890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner#include <gtest/gtest.h> 15890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner 16890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turnernamespace android { 17890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turnernamespace base { 18890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner 19890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner// The path of a file that can always be opened for reading on any platform. 20890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner#ifdef _WIN32 21890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turnerstatic const char kNullFile[] = "NUL"; 22890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner#else 23890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turnerstatic const char kNullFile[] = "/dev/null"; 24890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner#endif 25890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner 26890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' TurnerTEST(ScopedStdioFile, DefaultConstructor) { 27890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner ScopedStdioFile f; 28890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner EXPECT_FALSE(f.get()); 29890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner} 30890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner 31890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' TurnerTEST(ScopedStdioFile, Constructor) { 32890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner ScopedStdioFile f(fopen(kNullFile, "rb")); 33890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner EXPECT_TRUE(f.get()); 34890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner} 35890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner 36890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' TurnerTEST(ScopedStdioFile, Release) { 37890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner FILE* handle = NULL; 38890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner ScopedStdioFile f(fopen(kNullFile, "rb")); 39890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner EXPECT_TRUE(f.get()); 40890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner handle = f.release(); 41890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner EXPECT_FALSE(f.get()); 42890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner EXPECT_TRUE(handle); 43890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner ::fclose(handle); 44890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner} 45890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner 46890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' TurnerTEST(ScopedStdioFile, Close) { 47890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner ScopedStdioFile f(fopen(kNullFile, "rb")); 48890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner EXPECT_TRUE(f.get()); 49890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner f.close(); 50890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner EXPECT_FALSE(f.get()); 51890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner} 52890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner 53890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' TurnerTEST(ScopedStdioFile, Swap) { 54890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner ScopedStdioFile f1; 55890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner ScopedStdioFile f2(fopen(kNullFile, "rb")); 56890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner EXPECT_FALSE(f1.get()); 57890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner EXPECT_TRUE(f2.get()); 58890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner f1.swap(&f2); 59890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner EXPECT_FALSE(f2.get()); 60890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner EXPECT_TRUE(f1.get()); 61890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner} 62890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner 63890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner} // namespace base 64890f46464b0a35cbee882a5d62bd86a49879cabcDavid 'Digit' Turner} // namespace android 65