Home | History | Annotate | Download | only in avd
      1 // Copyright 2014 The Android Open Source Project
      2 //
      3 // This software is licensed under the terms of the GNU General Public
      4 // License version 2, as published by the Free Software Foundation, and
      5 // may be copied, distributed, and modified under those terms.
      6 //
      7 // This program is distributed in the hope that it will be useful,
      8 // but WITHOUT ANY WARRANTY; without even the implied warranty of
      9 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     10 // GNU General Public License for more details.
     11 
     12 #include "android/avd/util.h"
     13 #include "android/utils/file_data.h"
     14 
     15 #include <gtest/gtest.h>
     16 
     17 TEST(AvdUtil, emulator_getBackendSuffix) {
     18   EXPECT_STREQ("arm", emulator_getBackendSuffix("arm"));
     19   EXPECT_STREQ("x86", emulator_getBackendSuffix("x86"));
     20   EXPECT_STREQ("x86", emulator_getBackendSuffix("x86_64"));
     21   EXPECT_STREQ("mips", emulator_getBackendSuffix("mips"));
     22   EXPECT_STREQ("arm", emulator_getBackendSuffix("arm64"));
     23 
     24   // TODO(digit): Add support for these CPU architectures to the emulator
     25   // to change these to EXPECT_STREQ() calls.
     26   EXPECT_FALSE(emulator_getBackendSuffix("mips64"));
     27 
     28   EXPECT_FALSE(emulator_getBackendSuffix(NULL));
     29   EXPECT_FALSE(emulator_getBackendSuffix("dummy"));
     30 }
     31 
     32 TEST(AvdUtil, propertyFile_getInt) {
     33   FileData fd;
     34 
     35   const char* testFile =
     36     "nineteen=19\n"
     37     "int_min=-2147483648\n"
     38     "int_max=2147483647\n"
     39     "invalid=2147483648\n"
     40     "invalid2=-2147483649\n"
     41     "invalid3=bar\n"
     42     "empty=\n";
     43 
     44   EXPECT_EQ(0,fileData_initFromMemory(&fd, testFile, strlen(testFile)));
     45 
     46   const int kDefault = 1138;
     47   SearchResult kSearchResultGarbage = (SearchResult)0xdeadbeef;
     48   SearchResult searchResult = kSearchResultGarbage;
     49 
     50   EXPECT_EQ(kDefault,propertyFile_getInt(&fd, "invalid", kDefault, &searchResult));
     51   EXPECT_EQ(RESULT_INVALID,searchResult);
     52 
     53   searchResult = kSearchResultGarbage;
     54   EXPECT_EQ(kDefault,propertyFile_getInt(&fd, "invalid2", kDefault, &searchResult));
     55   EXPECT_EQ(RESULT_INVALID,searchResult);
     56 
     57   searchResult = kSearchResultGarbage;
     58   EXPECT_EQ(kDefault,propertyFile_getInt(&fd, "invalid3", kDefault, &searchResult));
     59   EXPECT_EQ(RESULT_INVALID,searchResult);
     60 
     61   searchResult = kSearchResultGarbage;
     62   EXPECT_EQ(kDefault,propertyFile_getInt(&fd, "bar", kDefault, &searchResult));
     63   EXPECT_EQ(RESULT_NOT_FOUND,searchResult);
     64 
     65   searchResult = kSearchResultGarbage;
     66   EXPECT_EQ(kDefault,propertyFile_getInt(&fd, "empty", kDefault, &searchResult));
     67   EXPECT_EQ(RESULT_INVALID,searchResult);
     68 
     69   searchResult = kSearchResultGarbage;
     70   EXPECT_EQ(19,propertyFile_getInt(&fd, "nineteen", kDefault, &searchResult));
     71   EXPECT_EQ(RESULT_FOUND,searchResult);
     72 
     73   // check that null "searchResult" parameter is supported
     74   EXPECT_EQ(kDefault,propertyFile_getInt(&fd, "bar", kDefault, NULL));
     75   EXPECT_EQ(kDefault,propertyFile_getInt(&fd, "invalid", kDefault, NULL));
     76   EXPECT_EQ(19,propertyFile_getInt(&fd, "nineteen", kDefault, NULL));
     77 }
     78 
     79 TEST(AvdUtil, propertyFile_getApiLevel) {
     80   FileData fd;
     81 
     82   const char* emptyFile =
     83     "\n";
     84 
     85   const char* testFile19 =
     86     "ro.build.version.sdk=19\n";
     87 
     88   const char* testFileBogus =
     89     "ro.build.version.sdk=bogus\n";
     90 
     91   EXPECT_EQ(0,fileData_initFromMemory(&fd, emptyFile, strlen(emptyFile)));
     92   EXPECT_EQ(10000,propertyFile_getApiLevel(&fd));
     93 
     94   EXPECT_EQ(0,fileData_initFromMemory(&fd, testFile19, strlen(testFile19)));
     95   EXPECT_EQ(19,propertyFile_getApiLevel(&fd));
     96 
     97   EXPECT_EQ(0,fileData_initFromMemory(&fd, testFileBogus, strlen(testFileBogus)));
     98   EXPECT_EQ(3,propertyFile_getApiLevel(&fd));
     99 }
    100 
    101 TEST(AvdUtil, propertyFile_getAdbdCommunicationMode) {
    102   FileData fd;
    103 
    104   const char* emptyFile =
    105     "\n";
    106 
    107   const char* valueIsZero =
    108     "ro.adb.qemud=0";
    109 
    110   const char* valueIsOne =
    111     "ro.adb.qemud=1";
    112 
    113   const char* valueIsBogus =
    114     "ro.adb.qemud=bogus";
    115 
    116   // Empty file -> assume 1
    117   EXPECT_EQ(0, fileData_initFromMemory(&fd, emptyFile, strlen(emptyFile)));
    118   EXPECT_EQ(1, propertyFile_getAdbdCommunicationMode(&fd));
    119 
    120   EXPECT_EQ(0, fileData_initFromMemory(&fd, valueIsZero, strlen(valueIsZero)));
    121   EXPECT_EQ(0, propertyFile_getAdbdCommunicationMode(&fd));
    122 
    123   EXPECT_EQ(0, fileData_initFromMemory(&fd, valueIsOne, strlen(valueIsOne)));
    124   EXPECT_EQ(1, propertyFile_getAdbdCommunicationMode(&fd));
    125 
    126   // BOGUS -> 1
    127   EXPECT_EQ(0, fileData_initFromMemory(&fd, valueIsBogus, strlen(valueIsBogus)));
    128   EXPECT_EQ(1, propertyFile_getAdbdCommunicationMode(&fd));
    129 }
    130 
    131