1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "crazy_linker_system.h" 6 7#include <minitest/minitest.h> 8#include <stdlib.h> 9#include "crazy_linker_system_mock.h" 10 11namespace crazy { 12 13TEST(System, SingleFile) { 14 static const char kPath[] = "/tmp/foo/bar"; 15 16 static const char kString[] = "Hello World"; 17 const size_t kStringLen = sizeof(kString) - 1; 18 19 SystemMock sys; 20 sys.AddRegularFile(kPath, kString, kStringLen); 21 22 char buff2[kStringLen + 10]; 23 FileDescriptor fd(kPath); 24 25 EXPECT_EQ(kStringLen, fd.Read(buff2, sizeof(buff2))); 26 buff2[kStringLen] = '\0'; 27 EXPECT_STREQ(kString, buff2); 28} 29 30TEST(System, PathExists) { 31 SystemMock sys; 32 sys.AddRegularFile("/tmp/foo", "FOO", 3); 33 34 EXPECT_TRUE(PathExists("/tmp/foo")); 35} 36 37TEST(System, PathExistsWithBadPath) { 38 SystemMock sys; 39 EXPECT_FALSE(PathExists("/tmp/foo")); 40} 41 42TEST(System, IsSystemLibrary) { 43 SystemMock sys; 44 static const struct { 45 const char* name; 46 bool success; 47 } kData[] = { 48 {"libEGL.so", true}, 49 {"libGLESv1_CM.so", true}, 50 {"libGLESv1.so", false}, 51 {"libGLESv2.so", true}, 52 {"libOpenMAXAL.so", true}, 53 {"libOpenSLES.so", true}, 54 {"libandroid.so", true}, 55 {"libc.so", true}, 56 {"libdl.so", true}, 57 {"libjnigraphics.so", true}, 58 {"libm.so", true}, 59 {"libstdc++.so", true}, 60 {"libstlport.so", false}, 61 {"libz.so", true}, 62 {"/system/lib/libc.so", true}, 63 {"/system/libc.so/libfoo.so", false}, 64 }; 65 for (size_t n = 0; n < ARRAY_LEN(kData); ++n) { 66 TEST_TEXT << "Checking " << kData[n].name; 67 EXPECT_EQ(kData[n].success, IsSystemLibrary(kData[n].name)); 68 } 69} 70 71} // namespace crazy 72