1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage tests.api.java.io; 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew; 23dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilsonimport tests.util.TestEnvironment; 24dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson 25dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilsonimport java.io.File; 26dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilsonimport java.io.FilePermission; 27dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilsonimport java.security.PermissionCollection; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(FilePermission.class) 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class FilePermissionTest extends junit.framework.TestCase { 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 32dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson FilePermission readAllFiles; 33dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson FilePermission alsoReadAllFiles; 34dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson FilePermission allInCurrent; 35dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson FilePermission readInCurrent; 36dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson FilePermission readInFile; 37dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson 38dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson @Override protected void setUp() throws Exception { 39dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson super.setUp(); 40dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson TestEnvironment.reset(); 41dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson 42dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson readAllFiles = new FilePermission("<<ALL FILES>>", "read"); 43dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson alsoReadAllFiles = new FilePermission("<<ALL FILES>>", "read"); 44dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson allInCurrent = new FilePermission("*", "read, write, execute,delete"); 45dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson readInCurrent = new FilePermission("*", "read"); 46dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson readInFile = new FilePermission("aFile.file", "read"); 47dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson } 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.FilePermission#FilePermission(java.lang.String, 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * java.lang.String) 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies FilePermission(java.lang.String, java.lang.String) constructor.", 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FilePermission", 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, java.lang.String.class} 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_ConstructorLjava_lang_StringLjava_lang_String() { 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method java.io.FilePermission(java.lang.String, 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // java.lang.String) 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Used to test", true); 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FilePermission constructFile = new FilePermission("test constructor", 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "write"); 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("action given to the constructor did not correspond - constructor failed", 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "write", constructFile.getActions()); 67dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson assertEquals( 68dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson "name given to the constructor did not correspond - constructor failed", 69dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson "test constructor", constructFile.getName()); 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Regression test for HARMONY-1050 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FilePermission(null, "drink"); 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Expected IAE"); 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FilePermission(null, "read"); 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Expected NPE"); 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FilePermission(null, null); 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Expected IAE"); 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.FilePermission#getActions() 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies getActions() method.", 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getActions", 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getActions() { 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method java.lang.String java.io.FilePermission.getActions() 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("getActions should have returned only read", "read", readAllFiles 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getActions()); 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("getActions should have returned all actions", "read,write,execute,delete", allInCurrent 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getActions()); 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.FilePermission#equals(java.lang.Object) 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies equals(java.lang.Object) method.", 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "equals", 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.Object.class} 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_equalsLjava_lang_Object() { 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test for method java.io.FilePermission.equals() 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "returned false when two instance of FilePermission is equal", 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readAllFiles.equals(alsoReadAllFiles)); 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "returned true when two instance of FilePermission is not equal", 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project !(readInCurrent.equals(readInFile))); 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.FilePermission#implies(java.security.Permission) 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies implies(java.security.Permission) method.", 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "implies", 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.Permission.class} 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_impliesLjava_security_Permission() { 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method boolean 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // java.io.FilePermission.implies(java.security.Permission) 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Returned true for non-subset of actions", !readAllFiles 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .implies(allInCurrent)); 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Returned true for non-subset of files", !allInCurrent 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .implies(readAllFiles)); 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Returned false for subset of actions", allInCurrent 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .implies(readInCurrent)); 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Returned false for subset of files", readAllFiles 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .implies(readInCurrent)); 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Returned false for subset of files and actions", 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project allInCurrent.implies(readInFile)); 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Returned false for equal FilePermissions", readAllFiles 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .implies(alsoReadAllFiles)); 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FilePermission fp3 = new FilePermission("/bob/*".replace('/', 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File.separatorChar), "read,write"); 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FilePermission fp4 = new FilePermission("/bob/".replace('/', 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File.separatorChar), "write"); 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("returned true for same dir using * and not *", !fp3 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .implies(fp4)); 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FilePermission fp5 = new FilePermission("/bob/file".replace('/', 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File.separatorChar), "write"); 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("returned false for same dir using * and file", fp3 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .implies(fp5)); 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FilePermission fp6 = new FilePermission("/bob/".replace('/', 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File.separatorChar), "read,write"); 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FilePermission fp7 = new FilePermission("/bob/*".replace('/', 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File.separatorChar), "write"); 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("returned false for same dir using not * and *", !fp6 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .implies(fp7)); 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("returned false for same subdir", fp6.implies(fp4)); 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FilePermission fp8 = new FilePermission("/".replace('/', 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File.separatorChar), "read,write"); 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FilePermission fp9 = new FilePermission("/".replace('/', 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File.separatorChar), "write"); 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("returned false for same dir", fp8.implies(fp9)); 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FilePermission fp10 = new FilePermission("/".replace('/', 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File.separatorChar), "read,write"); 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FilePermission fp11 = new FilePermission("/".replace('/', 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File.separatorChar), "write"); 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("returned false for same dir", fp10.implies(fp11)); 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FilePermission fp12 = new FilePermission("/*".replace('/', 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File.separatorChar), "read,write"); 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("returned false for same dir using * and dir", !fp12 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .implies(fp10)); 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.FilePermission#newPermissionCollection() 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies newPermissionCollection() method.", 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "newPermissionCollection", 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_newPermissionCollection() { 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test for method java.io.FilePermission.newPermissionCollection 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project char s = File.separatorChar; 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FilePermission perm[] = new FilePermission[4]; 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project perm[0] = readAllFiles; 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project perm[1] = allInCurrent; 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project perm[2] = new FilePermission(s + "tmp" + s + "test" + s + "*", 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "read,write"); 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project perm[3] = new FilePermission(s + "tmp" + s + "test" + s 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "collection.file", "read"); 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PermissionCollection collect = perm[0].newPermissionCollection(); 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < perm.length; i++) { 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project collect.add(perm[i]); 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("returned false for subset of files", collect 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .implies(new FilePermission("*", "write"))); 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("returned false for subset of name and action", collect 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .implies(new FilePermission(s + "tmp", "read"))); 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("returned true for non subset of file and action", collect 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .implies(readInFile)); 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FilePermission fp1 = new FilePermission("/tmp/-".replace('/', 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File.separatorChar), "read"); 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PermissionCollection fpc = fp1.newPermissionCollection(); 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fpc.add(fp1); 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fpc.add(new FilePermission("/tmp/scratch/foo/*".replace('/', 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File.separatorChar), "write")); 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FilePermission fp2 = new FilePermission("/tmp/scratch/foo/file" 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .replace('/', File.separatorChar), "read,write"); 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("collection does not collate", fpc.implies(fp2)); 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.FilePermission#hashCode() 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies hashCode() method.", 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "hashCode", 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_hashCode() { 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test method java.io.FilePermission.hasCode() 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "two equal filePermission instances returned different hashCode", 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readAllFiles.hashCode() == alsoReadAllFiles.hashCode()); 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "two filePermission instances with same permission name returned same hashCode", 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readInCurrent.hashCode() != allInCurrent.hashCode()); 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 254