@@ -34,6 +34,16 @@ extern "C" {
3434#define TEST_SYSTEM_DIR1 " /system/app/"
3535#define TEST_SYSTEM_DIR2 " /vendor/app/"
3636
37+ #define REALLY_LONG_APP_NAME " com.example." \
38+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa." \
39+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa." \
40+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
41+
42+ #define REALLY_LONG_LEAF_NAME " shared_prefs_shared_prefs_shared_prefs_shared_prefs_shared_prefs_" \
43+ " shared_prefs_shared_prefs_shared_prefs_shared_prefs_shared_prefs_shared_prefs_" \
44+ " shared_prefs_shared_prefs_shared_prefs_shared_prefs_shared_prefs_shared_prefs_" \
45+ " shared_prefs_shared_prefs_shared_prefs_shared_prefs_shared_prefs_shared_prefs_"
46+
3747namespace android {
3848
3949class UtilsTest : public testing ::Test {
@@ -210,7 +220,7 @@ TEST_F(UtilsTest, CheckSystemApp_BadPathEscapeFail) {
210220
211221TEST_F (UtilsTest, GetPathFromString_NullPathFail) {
212222 dir_rec_t test1;
213- EXPECT_EQ (-1 , get_path_from_string (&test1, NULL ))
223+ EXPECT_EQ (-1 , get_path_from_string (&test1, ( const char *) NULL ))
214224 << " Should not allow NULL as a path." ;
215225}
216226
@@ -327,6 +337,50 @@ TEST_F(UtilsTest, CreatePkgPathInDir_ProtectedDir) {
327337 << " Package path should be in /data/app-private/" ;
328338}
329339
340+ TEST_F (UtilsTest, CreatePersonaPath_Primary) {
341+ char path[PKG_PATH_MAX ];
342+
343+ EXPECT_EQ (0 , create_persona_path (path, 0 ))
344+ << " Should successfully build primary user path." ;
345+
346+ EXPECT_STREQ (" /data/data/" , path)
347+ << " Primary user should have correct path" ;
348+ }
349+
350+ TEST_F (UtilsTest, CreatePersonaPath_Secondary) {
351+ char path[PKG_PATH_MAX ];
352+
353+ EXPECT_EQ (0 , create_persona_path (path, 1 ))
354+ << " Should successfully build primary user path." ;
355+
356+ EXPECT_STREQ (" /data/user/1/" , path)
357+ << " Primary user should have correct path" ;
358+ }
359+
360+ TEST_F (UtilsTest, CreateMovePath_Primary) {
361+ char path[PKG_PATH_MAX ];
362+
363+ EXPECT_EQ (0 , create_move_path (path, " com.android.test" , " shared_prefs" , 0 ))
364+ << " Should be able to create move path for primary user" ;
365+
366+ EXPECT_STREQ (" /data/data/com.android.test/shared_prefs" , path)
367+ << " Primary user package directory should be created correctly" ;
368+ }
369+
370+ TEST_F (UtilsTest, CreateMovePath_Fail_AppTooLong) {
371+ char path[PKG_PATH_MAX ];
372+
373+ EXPECT_EQ (-1 , create_move_path (path, REALLY_LONG_APP_NAME , " shared_prefs" , 0 ))
374+ << " Should fail to create move path for primary user" ;
375+ }
376+
377+ TEST_F (UtilsTest, CreateMovePath_Fail_LeafTooLong) {
378+ char path[PKG_PATH_MAX ];
379+
380+ EXPECT_EQ (-1 , create_move_path (path, " com.android.test" , REALLY_LONG_LEAF_NAME , 0 ))
381+ << " Should fail to create move path for primary user" ;
382+ }
383+
330384TEST_F (UtilsTest, CopyAndAppend_Normal) {
331385 // int copy_and_append(dir_rec_t* dst, dir_rec_t* src, char* suffix)
332386 dir_rec_t dst;
0 commit comments