Home | History | Annotate | Download | only in src
      1 // Copyright (c) 2013 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 
     11 namespace crazy {
     12 
     13 TEST(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 
     30 TEST(System, PathExists) {
     31   SystemMock sys;
     32   sys.AddRegularFile("/tmp/foo", "FOO", 3);
     33 
     34   EXPECT_TRUE(PathExists("/tmp/foo"));
     35 }
     36 
     37 TEST(System, PathExistsWithBadPath) {
     38   SystemMock sys;
     39   EXPECT_FALSE(PathExists("/tmp/foo"));
     40 }
     41 
     42 TEST(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