1package com.android.server.accessibility; 2 3import static org.junit.Assert.fail; 4 5import android.support.test.runner.AndroidJUnit4; 6import android.util.ArraySet; 7import android.view.accessibility.AccessibilityNodeInfo; 8import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction; 9 10import com.android.internal.util.CollectionUtils; 11 12import org.junit.Test; 13import org.junit.runner.RunWith; 14 15import java.util.ArrayList; 16 17@RunWith(AndroidJUnit4.class) 18public class AccessibilityNodeInfoTest { 19 20 @Test 21 public void testStandardActions_serializationFlagIsValid() { 22 AccessibilityAction brokenStandardAction = CollectionUtils.find( 23 new ArrayList<>(AccessibilityAction.sStandardActions), 24 action -> Integer.bitCount(action.mSerializationFlag) != 1); 25 if (brokenStandardAction != null) { 26 String message = "Invalid serialization flag(0x" 27 + Integer.toHexString(brokenStandardAction.mSerializationFlag) 28 + ") in " + brokenStandardAction; 29 if (brokenStandardAction.mSerializationFlag == 0L) { 30 message += "\nThis is likely due to an overflow"; 31 } 32 fail(message); 33 } 34 35 brokenStandardAction = CollectionUtils.find( 36 new ArrayList<>(AccessibilityAction.sStandardActions), 37 action -> Integer.bitCount(action.getId()) == 1 38 && action.getId() <= AccessibilityNodeInfo.LAST_LEGACY_STANDARD_ACTION 39 && action.getId() != action.mSerializationFlag); 40 if (brokenStandardAction != null) { 41 fail("Serialization flag(0x" 42 + Integer.toHexString(brokenStandardAction.mSerializationFlag) 43 + ") is different from legacy action id(0x" 44 + Integer.toHexString(brokenStandardAction.getId()) 45 + ") in " + brokenStandardAction); 46 } 47 } 48 49 @Test 50 public void testStandardActions_idsAreUnique() { 51 ArraySet<AccessibilityAction> actions = AccessibilityAction.sStandardActions; 52 for (int i = 0; i < actions.size(); i++) { 53 for (int j = 0; j < i; j++) { 54 int id = actions.valueAt(i).getId(); 55 if (id == actions.valueAt(j).getId()) { 56 fail("Id 0x" + Integer.toHexString(id) 57 + " is duplicated for standard actions #" + i + " and #" + j); 58 } 59 } 60 } 61 } 62 63} 64