diff --git a/tests/Resources/app.js b/tests/Resources/app.js index 9b413a20fe0..4d615e2832e 100644 --- a/tests/Resources/app.js +++ b/tests/Resources/app.js @@ -87,6 +87,7 @@ function loadTests() { if (OS_ANDROID) { require('./ti.android.test'); require('./ti.android.notificationmanager.test'); + require('./ti.android.r.test'); require('./ti.android.service.test'); } require('./ti.api.test'); diff --git a/tests/Resources/ti.android.r.test.js b/tests/Resources/ti.android.r.test.js new file mode 100644 index 00000000000..bf656a4eef7 --- /dev/null +++ b/tests/Resources/ti.android.r.test.js @@ -0,0 +1,1824 @@ +/* + * Appcelerator Titanium Mobile + * Copyright (c) 2020-Present by Axway, Inc. + * Licensed under the terms of the Apache Public License + * + */ +/* eslint-env mocha */ +/* eslint no-unused-expressions: "off" */ +/* eslint no-undef: "off" */ +'use strict'; + +const should = require('./utilities/assertions'); + +describe.android('Titanium.Android.R', () => { + describe('properties', () => { + describe('.anim', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('anim').which.is.a.Object(); + }); + + const properties = [ + 'accelerate_decelerate_interpolator', + 'accelerate_interpolator', + 'anticipate_interpolator', + 'anticipate_overshoot_interpolator', + 'bounce_interpolator', + 'cycle_interpolator', + 'decelerate_interpolator', + 'fade_in', + 'fade_out', + 'linear_interpolator', + 'overshoot_interpolator', + 'slide_in_left', + 'slide_out_right', + ]; + for (const prop of properties) { + it(`.${prop} is a Number`, () => { + should(Ti.Android.R.anim[prop]).be.a.Number(); + should(Ti.Android.R.anim[prop]).not.eql(0); + }); + } + }); + + describe('.animator', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('animator').which.is.a.Object(); + }); + + const properties = [ + 'fade_in', + 'fade_out', + ]; + for (const prop of properties) { + it(`.${prop} is a Number`, () => should(Ti.Android.R.animator[prop]).be.a.Number()); + } + }); + + describe('.apiName', () => { + it('is a String', () => { + should(Ti.Android.R).have.a.readOnlyProperty('apiName').which.is.a.String(); + }); + + it('equals Ti.Android.R', () => { + should(Ti.Android.R.apiName).eql('Ti.Android.R'); + }); + }); + + describe('.array', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('array').which.is.a.Object(); + }); + + const properties = [ + 'emailAddressTypes', + 'imProtocols', + 'organizationTypes', + 'phoneTypes', + 'postalAddressTypes', + ]; + for (const prop of properties) { + it(`.${prop} is a Number`, () => { + should(Ti.Android.R.array[prop]).be.a.Number(); + should(Ti.Android.R.array[prop]).not.eql(0); + }); + } + }); + + describe('.attr', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('attr').which.is.a.Object(); + }); + + const properties = [ + 'absListViewStyle', + 'accessibilityEventTypes', + 'accessibilityFeedbackType', + 'accessibilityFlags', + 'accessibilityHeading', + 'accessibilityLiveRegion', + 'accessibilityPaneTitle', + 'accessibilityTraversalAfter', + 'accessibilityTraversalBefore', + 'accountPreferences', + 'accountType', + 'action', + 'actionBarDivider', + 'actionBarItemBackground', + 'actionBarPopupTheme', + 'actionBarSize', + 'actionBarSplitStyle', + 'actionBarStyle', + 'actionBarTabBarStyle', + 'actionBarTabStyle', + 'actionBarTabTextStyle', + 'actionBarTheme', + 'actionBarWidgetTheme', + 'actionButtonStyle', + 'actionDropDownStyle', + 'actionLayout', + 'actionMenuTextAppearance', + 'actionMenuTextColor', + 'actionModeBackground', + 'actionModeCloseButtonStyle', + 'actionModeCloseDrawable', + 'actionModeCopyDrawable', + 'actionModeCutDrawable', + 'actionModeFindDrawable', + 'actionModePasteDrawable', + 'actionModeSelectAllDrawable', + 'actionModeShareDrawable', + 'actionModeSplitBackground', + 'actionModeStyle', + 'actionModeWebSearchDrawable', + 'actionOverflowButtonStyle', + 'actionOverflowMenuStyle', + 'actionProviderClass', + 'actionViewClass', + 'activatedBackgroundIndicator', + 'activityCloseEnterAnimation', + 'activityCloseExitAnimation', + 'activityOpenEnterAnimation', + 'activityOpenExitAnimation', + 'addPrintersActivity', + 'addStatesFromChildren', + 'adjustViewBounds', + 'advancedPrintOptionsActivity', + 'alertDialogIcon', + 'alertDialogStyle', + 'alertDialogTheme', + 'alignmentMode', + 'allContactsName', + 'allowAudioPlaybackCapture', + 'allowBackup', + 'allowClearUserData', + 'allowEmbedded', + 'allowNativeHeapPointerTagging', + 'allowParallelSyncs', + 'allowSingleTap', + 'allowTaskReparenting', + 'allowUndo', + 'alpha', + 'alphabeticModifiers', + 'alphabeticShortcut', + 'alwaysDrawnWithCache', + 'alwaysRetainTaskState', + 'amPmBackgroundColor', + 'amPmTextColor', + 'ambientShadowAlpha', + 'angle', + 'animateFirstView', + 'animateLayoutChanges', + 'animateOnClick', + 'animatedImageDrawable', + 'animation', + 'animationCache', + 'animationDuration', + 'animationOrder', + 'animationResolution', + 'antialias', + 'anyDensity', + 'apduServiceBanner', + 'apiKey', + 'appCategory', + 'appComponentFactory', + 'author', + 'authorities', + 'autoAdvanceViewId', + 'autoCompleteTextViewStyle', + 'autoLink', + 'autoMirrored', + 'autoRemoveFromRecents', + 'autoRevokePermissions', + 'autoSizeMaxTextSize', + 'autoSizeMinTextSize', + 'autoSizePresetSizes', + 'autoSizeStepGranularity', + 'autoSizeTextType', + 'autoStart', + 'autoText', + 'autoUrlDetect', + 'autoVerify', + 'autofillHints', + 'autofilledHighlight', + 'background', + 'backgroundDimAmount', + 'backgroundDimEnabled', + 'backgroundSplit', + 'backgroundStacked', + 'backgroundTint', + 'backgroundTintMode', + 'backupAgent', + 'backupInForeground', + 'banner', + 'baseline', + 'baselineAlignBottom', + 'baselineAligned', + 'baselineAlignedChildIndex', + 'bitmap', + 'borderlessButtonStyle', + 'bottom', + 'bottomBright', + 'bottomDark', + 'bottomLeftRadius', + 'bottomMedium', + 'bottomOffset', + 'bottomRightRadius', + 'breadCrumbShortTitle', + 'breadCrumbTitle', + 'breakStrategy', + 'bufferType', + 'button', + 'buttonBarButtonStyle', + 'buttonBarNegativeButtonStyle', + 'buttonBarNeutralButtonStyle', + 'buttonBarPositiveButtonStyle', + 'buttonBarStyle', + 'buttonCornerRadius', + 'buttonGravity', + 'buttonStyle', + 'buttonStyleInset', + 'buttonStyleSmall', + 'buttonStyleToggle', + 'buttonTint', + 'buttonTintMode', + 'cacheColorHint', + 'calendarTextColor', + 'calendarViewShown', + 'calendarViewStyle', + 'canControlMagnification', + 'canPerformGestures', + 'canRecord', + 'canRequestEnhancedWebAccessibility', + 'canRequestFilterKeyEvents', + 'canRequestFingerprintGestures', + 'canRequestTouchExplorationMode', + 'canRetrieveWindowContent', + 'canTakeScreenshot', + 'candidatesTextStyleSpans', + 'cantSaveState', + 'capitalize', + 'category', + 'centerBright', + 'centerColor', + 'centerDark', + 'centerMedium', + 'centerX', + 'centerY', + 'certDigest', + 'checkBoxPreferenceStyle', + 'checkMark', + 'checkMarkTint', + 'checkMarkTintMode', + 'checkable', + 'checkableBehavior', + 'checkboxStyle', + 'checked', + 'checkedButton', + 'checkedTextViewStyle', + 'childDivider', + 'childIndicator', + 'childIndicatorEnd', + 'childIndicatorLeft', + 'childIndicatorRight', + 'childIndicatorStart', + 'choiceMode', + 'classLoader', + 'clearTaskOnLaunch', + 'clickable', + 'clipChildren', + 'clipOrientation', + 'clipToPadding', + 'closeIcon', + 'codes', + 'collapseColumns', + 'collapseContentDescription', + 'collapseIcon', + 'color', + 'colorAccent', + 'colorActivatedHighlight', + 'colorBackground', + 'colorBackgroundCacheHint', + 'colorBackgroundFloating', + 'colorButtonNormal', + 'colorControlActivated', + 'colorControlHighlight', + 'colorControlNormal', + 'colorEdgeEffect', + 'colorError', + 'colorFocusedHighlight', + 'colorForeground', + 'colorForegroundInverse', + 'colorLongPressedHighlight', + 'colorMode', + 'colorMultiSelectHighlight', + 'colorPressedHighlight', + 'colorPrimary', + 'colorPrimaryDark', + 'colorSecondary', + 'columnCount', + 'columnDelay', + 'columnOrderPreserved', + 'columnWidth', + 'commitIcon', + 'compatibleWidthLimitDp', + 'completionHint', + 'completionHintView', + 'completionThreshold', + 'configChanges', + 'configure', + 'constantSize', + 'content', + 'contentAgeHint', + 'contentAuthority', + 'contentDescription', + 'contentInsetEnd', + 'contentInsetEndWithActions', + 'contentInsetLeft', + 'contentInsetRight', + 'contentInsetStart', + 'contentInsetStartWithNavigation', + 'contextClickable', + 'contextDescription', + 'contextPopupMenuStyle', + 'contextUri', + 'controlX1', + 'controlX2', + 'controlY1', + 'controlY2', + 'countDown', + 'country', + 'cropToPadding', + 'crossProfile', + 'cursorVisible', + 'customNavigationLayout', + 'customTokens', + 'cycles', + 'dashGap', + 'dashWidth', + 'data', + 'datePickerDialogTheme', + 'datePickerMode', + 'datePickerStyle', + 'dateTextAppearance', + 'dayOfWeekBackground', + 'dayOfWeekTextAppearance', + 'debuggable', + 'defaultFocusHighlightEnabled', + 'defaultHeight', + 'defaultToDeviceProtectedStorage', + 'defaultValue', + 'defaultWidth', + 'delay', + 'dependency', + 'descendantFocusability', + 'description', + 'detachWallpaper', + 'detailColumn', + 'detailSocialSummary', + 'detailsElementBackground', + 'dial', + 'dialogCornerRadius', + 'dialogIcon', + 'dialogLayout', + 'dialogMessage', + 'dialogPreferenceStyle', + 'dialogPreferredPadding', + 'dialogTheme', + 'dialogTitle', + 'digits', + 'directBootAware', + 'direction', + 'directionDescriptions', + 'directionPriority', + 'disableDependentsState', + 'disabledAlpha', + 'displayOptions', + 'dither', + 'divider', + 'dividerHeight', + 'dividerHorizontal', + 'dividerPadding', + 'dividerVertical', + 'documentLaunchMode', + 'drawSelectorOnTop', + 'drawable', + 'drawableBottom', + 'drawableEnd', + 'drawableLeft', + 'drawablePadding', + 'drawableRight', + 'drawableStart', + 'drawableTint', + 'drawableTintMode', + 'drawableTop', + 'drawingCacheQuality', + 'dropDownAnchor', + 'dropDownHeight', + 'dropDownHintAppearance', + 'dropDownHorizontalOffset', + 'dropDownItemStyle', + 'dropDownListViewStyle', + 'dropDownSelector', + 'dropDownSpinnerStyle', + 'dropDownVerticalOffset', + 'dropDownWidth', + 'duplicateParentState', + 'duration', + 'editTextBackground', + 'editTextColor', + 'editTextPreferenceStyle', + 'editTextStyle', + 'editable', + 'editorExtras', + 'elegantTextHeight', + 'elevation', + 'ellipsize', + 'ems', + 'enableVrMode', + 'enabled', + 'end', + 'endColor', + 'endX', + 'endY', + 'endYear', + 'enforceNavigationBarContrast', + 'enforceStatusBarContrast', + 'enterFadeDuration', + 'entries', + 'entryValues', + 'eventsInterceptionEnabled', + 'excludeClass', + 'excludeFromRecents', + 'excludeId', + 'excludeName', + 'exitFadeDuration', + 'expandableListPreferredChildIndicatorLeft', + 'expandableListPreferredChildIndicatorRight', + 'expandableListPreferredChildPaddingLeft', + 'expandableListPreferredItemIndicatorLeft', + 'expandableListPreferredItemIndicatorRight', + 'expandableListPreferredItemPaddingLeft', + 'expandableListViewStyle', + 'expandableListViewWhiteStyle', + 'exported', + 'externalService', + 'extraTension', + 'extractNativeLibs', + 'factor', + 'fadeDuration', + 'fadeEnabled', + 'fadeOffset', + 'fadeScrollbars', + 'fadingEdge', + 'fadingEdgeLength', + 'fadingMode', + 'fallbackLineSpacing', + 'fastScrollAlwaysVisible', + 'fastScrollEnabled', + 'fastScrollOverlayPosition', + 'fastScrollPreviewBackgroundLeft', + 'fastScrollPreviewBackgroundRight', + 'fastScrollStyle', + 'fastScrollTextColor', + 'fastScrollThumbDrawable', + 'fastScrollTrackDrawable', + 'fillAfter', + 'fillAlpha', + 'fillBefore', + 'fillColor', + 'fillEnabled', + 'fillType', + 'fillViewport', + 'filter', + 'filterTouchesWhenObscured', + 'fingerprintAuthDrawable', + 'finishOnCloseSystemDialogs', + 'finishOnTaskLaunch', + 'firstBaselineToTopHeight', + 'firstDayOfWeek', + 'fitsSystemWindows', + 'flipInterval', + 'focusable', + 'focusableInTouchMode', + 'focusedByDefault', + 'focusedMonthDateColor', + 'font', + 'fontFamily', + 'fontFeatureSettings', + 'fontProviderAuthority', + 'fontProviderCerts', + 'fontProviderPackage', + 'fontProviderQuery', + 'fontStyle', + 'fontVariationSettings', + 'fontWeight', + 'footerDividersEnabled', + 'forceDarkAllowed', + 'forceHasOverlappingRendering', + 'forceQueryable', + 'forceUriPermissions', + 'foreground', + 'foregroundGravity', + 'foregroundServiceType', + 'foregroundTint', + 'foregroundTintMode', + 'format', + 'format12Hour', + 'format24Hour', + 'fraction', + 'fragment', + 'fragmentAllowEnterTransitionOverlap', + 'fragmentAllowReturnTransitionOverlap', + 'fragmentCloseEnterAnimation', + 'fragmentCloseExitAnimation', + 'fragmentEnterTransition', + 'fragmentExitTransition', + 'fragmentFadeEnterAnimation', + 'fragmentFadeExitAnimation', + 'fragmentOpenEnterAnimation', + 'fragmentOpenExitAnimation', + 'fragmentReenterTransition', + 'fragmentReturnTransition', + 'fragmentSharedElementEnterTransition', + 'fragmentSharedElementReturnTransition', + 'freezesText', + 'fromAlpha', + 'fromDegrees', + 'fromId', + 'fromScene', + 'fromXDelta', + 'fromXScale', + 'fromYDelta', + 'fromYScale', + 'fullBackupContent', + 'fullBackupOnly', + 'fullBright', + 'fullDark', + 'functionalTest', + 'galleryItemBackground', + 'galleryStyle', + 'gestureColor', + 'gestureStrokeAngleThreshold', + 'gestureStrokeLengthThreshold', + 'gestureStrokeSquarenessThreshold', + 'gestureStrokeType', + 'gestureStrokeWidth', + 'glEsVersion', + 'goIcon', + 'gradientRadius', + 'grantUriPermissions', + 'gravity', + 'gridViewStyle', + 'groupIndicator', + 'gwpAsanMode', + 'hand_hour', + 'hand_minute', + 'handle', + 'handleProfiling', + 'hapticFeedbackEnabled', + 'hardwareAccelerated', + 'hasCode', + 'hasFragileUserData', + 'headerAmPmTextAppearance', + 'headerBackground', + 'headerDayOfMonthTextAppearance', + 'headerDividersEnabled', + 'headerMonthTextAppearance', + 'headerTimeTextAppearance', + 'headerYearTextAppearance', + 'height', + 'hideOnContentScroll', + 'hint', + 'homeAsUpIndicator', + 'homeLayout', + 'horizontalDivider', + 'horizontalGap', + 'horizontalScrollViewStyle', + 'horizontalSpacing', + 'host', + 'hotSpotX', + 'hotSpotY', + 'htmlDescription', + 'hyphenationFrequency', + 'icon', + 'iconPreview', + 'iconSpaceReserved', + 'iconTint', + 'iconTintMode', + 'iconifiedByDefault', + 'id', + 'identifier', + 'ignoreGravity', + 'imageButtonStyle', + 'imageWellStyle', + 'imeActionId', + 'imeActionLabel', + 'imeExtractEnterAnimation', + 'imeExtractExitAnimation', + 'imeFullscreenBackground', + 'imeOptions', + 'imeSubtypeExtraValue', + 'imeSubtypeLocale', + 'imeSubtypeMode', + 'immersive', + 'importantForAccessibility', + 'importantForAutofill', + 'importantForContentCapture', + 'inAnimation', + 'includeFontPadding', + 'includeInGlobalSearch', + 'indeterminate', + 'indeterminateBehavior', + 'indeterminateDrawable', + 'indeterminateDuration', + 'indeterminateOnly', + 'indeterminateProgressStyle', + 'indeterminateTint', + 'indeterminateTintMode', + 'indicatorEnd', + 'indicatorLeft', + 'indicatorRight', + 'indicatorStart', + 'inflatedId', + 'inheritShowWhenLocked', + 'initOrder', + 'initialKeyguardLayout', + 'initialLayout', + 'innerRadius', + 'innerRadiusRatio', + 'inputMethod', + 'inputType', + 'inset', + 'insetBottom', + 'insetLeft', + 'insetRight', + 'insetTop', + 'installLocation', + 'interactiveUiTimeout', + 'interpolator', + 'isAlwaysSyncable', + 'isAsciiCapable', + 'isAuxiliary', + 'isDefault', + 'isFeatureSplit', + 'isGame', + 'isIndicator', + 'isLightTheme', + 'isModifier', + 'isRepeatable', + 'isScrollContainer', + 'isSplitRequired', + 'isStatic', + 'isSticky', + 'isolatedProcess', + 'isolatedSplits', + 'itemBackground', + 'itemIconDisabledAlpha', + 'itemPadding', + 'itemTextAppearance', + 'justificationMode', + 'keepScreenOn', + 'key', + 'keyBackground', + 'keyEdgeFlags', + 'keyHeight', + 'keyIcon', + 'keyLabel', + 'keyOutputText', + 'keyPreviewHeight', + 'keyPreviewLayout', + 'keyPreviewOffset', + 'keySet', + 'keyTextColor', + 'keyTextSize', + 'keyWidth', + 'keyboardLayout', + 'keyboardMode', + 'keyboardNavigationCluster', + 'keycode', + 'killAfterRestore', + 'label', + 'labelFor', + 'labelTextSize', + 'languageTag', + 'largeHeap', + 'largeScreens', + 'largestWidthLimitDp', + 'lastBaselineToBottomHeight', + 'launchMode', + 'launchTaskBehindSourceAnimation', + 'launchTaskBehindTargetAnimation', + 'layerType', + 'layout', + 'layoutAnimation', + 'layoutDirection', + 'layoutMode', + 'layout_above', + 'layout_alignBaseline', + 'layout_alignBottom', + 'layout_alignEnd', + 'layout_alignLeft', + 'layout_alignParentBottom', + 'layout_alignParentEnd', + 'layout_alignParentLeft', + 'layout_alignParentRight', + 'layout_alignParentStart', + 'layout_alignParentTop', + 'layout_alignRight', + 'layout_alignStart', + 'layout_alignTop', + 'layout_alignWithParentIfMissing', + 'layout_below', + 'layout_centerHorizontal', + 'layout_centerInParent', + 'layout_centerVertical', + 'layout_column', + 'layout_columnSpan', + 'layout_columnWeight', + 'layout_gravity', + 'layout_height', + 'layout_margin', + 'layout_marginBottom', + 'layout_marginEnd', + 'layout_marginHorizontal', + 'layout_marginLeft', + 'layout_marginRight', + 'layout_marginStart', + 'layout_marginTop', + 'layout_marginVertical', + 'layout_row', + 'layout_rowSpan', + 'layout_rowWeight', + 'layout_scale', + 'layout_span', + 'layout_toEndOf', + 'layout_toLeftOf', + 'layout_toRightOf', + 'layout_toStartOf', + 'layout_weight', + 'layout_width', + 'layout_x', + 'layout_y', + 'left', + 'letterSpacing', + 'level', + 'lineHeight', + 'lineSpacingExtra', + 'lineSpacingMultiplier', + 'lines', + 'linksClickable', + 'listChoiceBackgroundIndicator', + 'listChoiceIndicatorMultiple', + 'listChoiceIndicatorSingle', + 'listDivider', + 'listDividerAlertDialog', + 'listMenuViewStyle', + 'listPopupWindowStyle', + 'listPreferredItemHeight', + 'listPreferredItemHeightLarge', + 'listPreferredItemHeightSmall', + 'listPreferredItemPaddingEnd', + 'listPreferredItemPaddingLeft', + 'listPreferredItemPaddingRight', + 'listPreferredItemPaddingStart', + 'listSelector', + 'listSeparatorTextViewStyle', + 'listViewStyle', + 'listViewWhiteStyle', + 'lockTaskMode', + 'logo', + 'logoDescription', + 'longClickable', + 'loopViews', + 'manageSpaceActivity', + 'mapViewStyle', + 'marqueeRepeatLimit', + 'matchOrder', + 'max', + 'maxAspectRatio', + 'maxButtonHeight', + 'maxDate', + 'maxEms', + 'maxHeight', + 'maxItemsPerRow', + 'maxLength', + 'maxLevel', + 'maxLines', + 'maxLongVersionCode', + 'maxRecents', + 'maxRows', + 'maxSdkVersion', + 'maxWidth', + 'maximumAngle', + 'measureAllChildren', + 'measureWithLargestChild', + 'mediaRouteButtonStyle', + 'mediaRouteTypes', + 'menuCategory', + 'mimeGroup', + 'mimeType', + 'min', + 'minAspectRatio', + 'minDate', + 'minEms', + 'minHeight', + 'minLevel', + 'minLines', + 'minResizeHeight', + 'minResizeWidth', + 'minSdkVersion', + 'minWidth', + 'minimumHorizontalAngle', + 'minimumVerticalAngle', + 'mipMap', + 'mirrorForRtl', + 'mode', + 'moreIcon', + 'multiArch', + 'multiprocess', + 'name', + 'navigationBarColor', + 'navigationBarDividerColor', + 'navigationContentDescription', + 'navigationIcon', + 'navigationMode', + 'negativeButtonText', + 'nestedScrollingEnabled', + 'networkSecurityConfig', + 'nextClusterForward', + 'nextFocusDown', + 'nextFocusForward', + 'nextFocusLeft', + 'nextFocusRight', + 'nextFocusUp', + 'noHistory', + 'nonInteractiveUiTimeout', + 'normalScreens', + 'notificationTimeout', + 'numColumns', + 'numStars', + 'numberPickerStyle', + 'numbersBackgroundColor', + 'numbersInnerTextColor', + 'numbersSelectorColor', + 'numbersTextColor', + 'numeric', + 'numericModifiers', + 'numericShortcut', + 'offset', + 'onClick', + 'oneshot', + 'opacity', + 'opticalInsetBottom', + 'opticalInsetLeft', + 'opticalInsetRight', + 'opticalInsetTop', + 'order', + 'orderInCategory', + 'ordering', + 'orderingFromXml', + 'orientation', + 'outAnimation', + 'outlineAmbientShadowColor', + 'outlineProvider', + 'outlineSpotShadowColor', + 'overScrollFooter', + 'overScrollHeader', + 'overScrollMode', + 'overlapAnchor', + 'overridesImplicitlyEnabledSubtype', + 'packageNames', + 'packageType', + 'padding', + 'paddingBottom', + 'paddingEnd', + 'paddingHorizontal', + 'paddingLeft', + 'paddingMode', + 'paddingRight', + 'paddingStart', + 'paddingTop', + 'paddingVertical', + 'panelBackground', + 'panelColorBackground', + 'panelColorForeground', + 'panelFullBackground', + 'panelTextAppearance', + 'parentActivityName', + 'password', + 'path', + 'pathData', + 'pathPattern', + 'pathPrefix', + 'patternPathData', + 'permission', + 'permissionFlags', + 'permissionGroup', + 'permissionGroupFlags', + 'persistableMode', + 'persistent', + 'persistentDrawingCache', + 'persistentWhenFeatureAvailable', + 'phoneNumber', + 'pivotX', + 'pivotY', + 'pointerIcon', + 'popupAnimationStyle', + 'popupBackground', + 'popupCharacters', + 'popupElevation', + 'popupEnterTransition', + 'popupExitTransition', + 'popupKeyboard', + 'popupLayout', + 'popupMenuStyle', + 'popupTheme', + 'popupWindowStyle', + 'port', + 'positiveButtonText', + 'preferMinimalPostProcessing', + 'preferenceCategoryStyle', + 'preferenceFragmentStyle', + 'preferenceInformationStyle', + 'preferenceLayoutChild', + 'preferenceScreenStyle', + 'preferenceStyle', + 'presentationTheme', + 'preserveLegacyExternalStorage', + 'previewImage', + 'primaryContentAlpha', + 'priority', + 'privateImeOptions', + 'process', + 'progress', + 'progressBackgroundTint', + 'progressBackgroundTintMode', + 'progressBarPadding', + 'progressBarStyle', + 'progressBarStyleHorizontal', + 'progressBarStyleInverse', + 'progressBarStyleLarge', + 'progressBarStyleLargeInverse', + 'progressBarStyleSmall', + 'progressBarStyleSmallInverse', + 'progressBarStyleSmallTitle', + 'progressDrawable', + 'progressTint', + 'progressTintMode', + 'prompt', + 'propertyName', + 'propertyXName', + 'propertyYName', + 'protectionLevel', + 'publicKey', + 'queryActionMsg', + 'queryAfterZeroResults', + 'queryBackground', + 'queryHint', + 'quickContactBadgeStyleSmallWindowLarge', + 'quickContactBadgeStyleSmallWindowMedium', + 'quickContactBadgeStyleSmallWindowSmall', + 'quickContactBadgeStyleWindowLarge', + 'quickContactBadgeStyleWindowMedium', + 'quickContactBadgeStyleWindowSmall', + 'radioButtonStyle', + 'radius', + 'rating', + 'ratingBarStyle', + 'ratingBarStyleIndicator', + 'ratingBarStyleSmall', + 'readPermission', + 'recognitionService', + 'recreateOnConfigChanges', + 'recycleEnabled', + 'relinquishTaskIdentity', + 'reparent', + 'reparentWithOverlay', + 'repeatCount', + 'repeatMode', + 'reqFiveWayNav', + 'reqHardKeyboard', + 'reqKeyboardType', + 'reqNavigation', + 'reqTouchScreen', + 'requestLegacyExternalStorage', + 'requireDeviceUnlock', + 'required', + 'requiredAccountType', + 'requiredFeature', + 'requiredForAllUsers', + 'requiredNotFeature', + 'requiresFadingEdge', + 'requiresSmallestWidthDp', + 'resizeClip', + 'resizeMode', + 'resizeable', + 'resizeableActivity', + 'resource', + 'resourcesMap', + 'restoreAnyVersion', + 'restoreNeedsApplication', + 'restrictedAccountType', + 'restrictionType', + 'resumeWhilePausing', + 'reversible', + 'revisionCode', + 'right', + 'ringtonePreferenceStyle', + 'ringtoneType', + 'rotation', + 'rotationAnimation', + 'rotationX', + 'rotationY', + 'roundIcon', + 'rowCount', + 'rowDelay', + 'rowEdgeFlags', + 'rowHeight', + 'rowOrderPreserved', + 'saveEnabled', + 'scaleGravity', + 'scaleHeight', + 'scaleType', + 'scaleWidth', + 'scaleX', + 'scaleY', + 'scheme', + 'screenDensity', + 'screenOrientation', + 'screenReaderFocusable', + 'screenSize', + 'scrollHorizontally', + 'scrollIndicators', + 'scrollViewStyle', + 'scrollX', + 'scrollY', + 'scrollbarAlwaysDrawHorizontalTrack', + 'scrollbarAlwaysDrawVerticalTrack', + 'scrollbarDefaultDelayBeforeFade', + 'scrollbarFadeDuration', + 'scrollbarSize', + 'scrollbarStyle', + 'scrollbarThumbHorizontal', + 'scrollbarThumbVertical', + 'scrollbarTrackHorizontal', + 'scrollbarTrackVertical', + 'scrollbars', + 'scrollingCache', + 'searchButtonText', + 'searchHintIcon', + 'searchIcon', + 'searchMode', + 'searchSettingsDescription', + 'searchSuggestAuthority', + 'searchSuggestIntentAction', + 'searchSuggestIntentData', + 'searchSuggestPath', + 'searchSuggestSelection', + 'searchSuggestThreshold', + 'searchViewStyle', + 'secondaryContentAlpha', + 'secondaryProgress', + 'secondaryProgressTint', + 'secondaryProgressTintMode', + 'secureElementName', + 'seekBarStyle', + 'segmentedButtonStyle', + 'selectAllOnFocus', + 'selectable', + 'selectableItemBackground', + 'selectableItemBackgroundBorderless', + 'selectedDateVerticalBar', + 'selectedWeekBackgroundColor', + 'selectionDividerHeight', + 'sessionService', + 'settingsActivity', + 'settingsSliceUri', + 'setupActivity', + 'shadowColor', + 'shadowDx', + 'shadowDy', + 'shadowRadius', + 'shape', + 'shareInterpolator', + 'sharedUserId', + 'sharedUserLabel', + 'shell', + 'shortcutDisabledMessage', + 'shortcutId', + 'shortcutLongLabel', + 'shortcutShortLabel', + 'shouldDisableView', + 'showAsAction', + 'showDefault', + 'showDividers', + 'showForAllUsers', + 'showMetadataInPreview', + 'showOnLockScreen', + 'showSilent', + 'showText', + 'showWeekNumber', + 'showWhenLocked', + 'shownWeekCount', + 'shrinkColumns', + 'singleLine', + 'singleLineTitle', + 'singleUser', + 'slideEdge', + 'smallIcon', + 'smallScreens', + 'smoothScrollbar', + 'soundEffectsEnabled', + 'spacing', + 'spinnerDropDownItemStyle', + 'spinnerItemStyle', + 'spinnerMode', + 'spinnerStyle', + 'spinnersShown', + 'splitMotionEvents', + 'splitName', + 'splitTrack', + 'spotShadowAlpha', + 'src', + 'ssp', + 'sspPattern', + 'sspPrefix', + 'stackFromBottom', + 'stackViewStyle', + 'starStyle', + 'start', + 'startColor', + 'startDelay', + 'startOffset', + 'startX', + 'startY', + 'startYear', + 'stateListAnimator', + 'stateNotNeeded', + 'state_above_anchor', + 'state_accelerated', + 'state_activated', + 'state_active', + 'state_checkable', + 'state_checked', + 'state_drag_can_accept', + 'state_drag_hovered', + 'state_empty', + 'state_enabled', + 'state_expanded', + 'state_first', + 'state_focused', + 'state_hovered', + 'state_last', + 'state_long_pressable', + 'state_middle', + 'state_multiline', + 'state_pressed', + 'state_selected', + 'state_single', + 'state_window_focused', + 'staticWallpaperPreview', + 'statusBarColor', + 'stepSize', + 'stopWithTask', + 'streamType', + 'stretchColumns', + 'stretchMode', + 'strokeAlpha', + 'strokeColor', + 'strokeLineCap', + 'strokeLineJoin', + 'strokeMiterLimit', + 'strokeWidth', + 'subMenuArrow', + 'submitBackground', + 'subtitle', + 'subtitleTextAppearance', + 'subtitleTextColor', + 'subtitleTextStyle', + 'subtypeExtraValue', + 'subtypeId', + 'subtypeLocale', + 'suggestActionMsg', + 'suggestActionMsgColumn', + 'suggestionRowLayout', + 'summary', + 'summaryColumn', + 'summaryOff', + 'summaryOn', + 'supportsAssist', + 'supportsInlineSuggestions', + 'supportsLaunchVoiceAssistFromKeyguard', + 'supportsLocalInteraction', + 'supportsMultipleDisplays', + 'supportsPictureInPicture', + 'supportsRtl', + 'supportsSwitchingToNextInputMethod', + 'supportsUploading', + 'switchMinWidth', + 'switchPadding', + 'switchPreferenceStyle', + 'switchStyle', + 'switchTextAppearance', + 'switchTextOff', + 'switchTextOn', + 'syncable', + 'tabStripEnabled', + 'tabStripLeft', + 'tabStripRight', + 'tabWidgetStyle', + 'tag', + 'targetActivity', + 'targetClass', + 'targetDescriptions', + 'targetId', + 'targetName', + 'targetPackage', + 'targetProcesses', + 'targetSandboxVersion', + 'targetSdkVersion', + 'taskAffinity', + 'taskCloseEnterAnimation', + 'taskCloseExitAnimation', + 'taskOpenEnterAnimation', + 'taskOpenExitAnimation', + 'taskToBackEnterAnimation', + 'taskToBackExitAnimation', + 'taskToFrontEnterAnimation', + 'taskToFrontExitAnimation', + 'tension', + 'testOnly', + 'text', + 'textAlignment', + 'textAllCaps', + 'textAppearance', + 'textAppearanceButton', + 'textAppearanceInverse', + 'textAppearanceLarge', + 'textAppearanceLargeInverse', + 'textAppearanceLargePopupMenu', + 'textAppearanceListItem', + 'textAppearanceListItemSecondary', + 'textAppearanceListItemSmall', + 'textAppearanceMedium', + 'textAppearanceMediumInverse', + 'textAppearancePopupMenuHeader', + 'textAppearanceSearchResultSubtitle', + 'textAppearanceSearchResultTitle', + 'textAppearanceSmall', + 'textAppearanceSmallInverse', + 'textAppearanceSmallPopupMenu', + 'textCheckMark', + 'textCheckMarkInverse', + 'textColor', + 'textColorAlertDialogListItem', + 'textColorHighlight', + 'textColorHighlightInverse', + 'textColorHint', + 'textColorHintInverse', + 'textColorLink', + 'textColorLinkInverse', + 'textColorPrimary', + 'textColorPrimaryDisableOnly', + 'textColorPrimaryInverse', + 'textColorPrimaryInverseDisableOnly', + 'textColorPrimaryInverseNoDisable', + 'textColorPrimaryNoDisable', + 'textColorSecondary', + 'textColorSecondaryInverse', + 'textColorSecondaryInverseNoDisable', + 'textColorSecondaryNoDisable', + 'textColorTertiary', + 'textColorTertiaryInverse', + 'textCursorDrawable', + 'textDirection', + 'textEditNoPasteWindowLayout', + 'textEditPasteWindowLayout', + 'textEditSideNoPasteWindowLayout', + 'textEditSidePasteWindowLayout', + 'textEditSuggestionItemLayout', + 'textFilterEnabled', + 'textFontWeight', + 'textIsSelectable', + 'textLocale', + 'textOff', + 'textOn', + 'textScaleX', + 'textSelectHandle', + 'textSelectHandleLeft', + 'textSelectHandleRight', + 'textSelectHandleWindowStyle', + 'textSize', + 'textStyle', + 'textSuggestionsWindowStyle', + 'textViewStyle', + 'theme', + 'thickness', + 'thicknessRatio', + 'thumb', + 'thumbOffset', + 'thumbPosition', + 'thumbTextPadding', + 'thumbTint', + 'thumbTintMode', + 'thumbnail', + 'tickMark', + 'tickMarkTint', + 'tickMarkTintMode', + 'tileMode', + 'tileModeX', + 'tileModeY', + 'timePickerDialogTheme', + 'timePickerMode', + 'timePickerStyle', + 'timeZone', + 'tint', + 'tintMode', + 'title', + 'titleCondensed', + 'titleMargin', + 'titleMarginBottom', + 'titleMarginEnd', + 'titleMarginStart', + 'titleMarginTop', + 'titleTextAppearance', + 'titleTextColor', + 'titleTextStyle', + 'toAlpha', + 'toDegrees', + 'toId', + 'toScene', + 'toXDelta', + 'toXScale', + 'toYDelta', + 'toYScale', + 'toolbarStyle', + 'tooltipText', + 'top', + 'topBright', + 'topDark', + 'topLeftRadius', + 'topOffset', + 'topRightRadius', + 'touchscreenBlocksFocus', + 'track', + 'trackTint', + 'trackTintMode', + 'transcriptMode', + 'transformPivotX', + 'transformPivotY', + 'transition', + 'transitionGroup', + 'transitionName', + 'transitionOrdering', + 'transitionVisibilityMode', + 'translateX', + 'translateY', + 'translationX', + 'translationY', + 'translationZ', + 'trimPathEnd', + 'trimPathOffset', + 'trimPathStart', + 'ttcIndex', + 'tunerCount', + 'turnScreenOn', + 'type', + 'typeface', + 'uiOptions', + 'uncertainGestureColor', + 'unfocusedMonthDateColor', + 'unselectedAlpha', + 'updatePeriodMillis', + 'use32bitAbi', + 'useAppZygote', + 'useDefaultMargins', + 'useEmbeddedDex', + 'useIntrinsicSizeAsMinimum', + 'useLevel', + 'userVisible', + 'usesCleartextTraffic', + 'value', + 'valueFrom', + 'valueTo', + 'valueType', + 'variablePadding', + 'vendor', + 'version', + 'versionCode', + 'versionCodeMajor', + 'versionMajor', + 'versionName', + 'verticalCorrection', + 'verticalDivider', + 'verticalGap', + 'verticalScrollbarPosition', + 'verticalSpacing', + 'viewportHeight', + 'viewportWidth', + 'visibility', + 'visible', + 'visibleToInstantApps', + 'vmSafeMode', + 'voiceIcon', + 'voiceLanguage', + 'voiceLanguageModel', + 'voiceMaxResults', + 'voicePromptText', + 'voiceSearchMode', + 'wallpaperCloseEnterAnimation', + 'wallpaperCloseExitAnimation', + 'wallpaperIntraCloseEnterAnimation', + 'wallpaperIntraCloseExitAnimation', + 'wallpaperIntraOpenEnterAnimation', + 'wallpaperIntraOpenExitAnimation', + 'wallpaperOpenEnterAnimation', + 'wallpaperOpenExitAnimation', + 'webTextViewStyle', + 'webViewStyle', + 'weekDayTextAppearance', + 'weekNumberColor', + 'weekSeparatorLineColor', + 'weightSum', + 'widgetCategory', + 'widgetFeatures', + 'widgetLayout', + 'width', + 'windowActionBar', + 'windowActionBarOverlay', + 'windowActionModeOverlay', + 'windowActivityTransitions', + 'windowAllowEnterTransitionOverlap', + 'windowAllowReturnTransitionOverlap', + 'windowAnimationStyle', + 'windowBackground', + 'windowBackgroundFallback', + 'windowClipToOutline', + 'windowCloseOnTouchOutside', + 'windowContentOverlay', + 'windowContentTransitionManager', + 'windowContentTransitions', + 'windowDisablePreview', + 'windowDrawsSystemBarBackgrounds', + 'windowElevation', + 'windowEnableSplitTouch', + 'windowEnterAnimation', + 'windowEnterTransition', + 'windowExitAnimation', + 'windowExitTransition', + 'windowFrame', + 'windowFullscreen', + 'windowHideAnimation', + 'windowIsFloating', + 'windowIsTranslucent', + 'windowLayoutInDisplayCutoutMode', + 'windowLightNavigationBar', + 'windowLightStatusBar', + 'windowMinWidthMajor', + 'windowMinWidthMinor', + 'windowNoDisplay', + 'windowNoTitle', + 'windowOverscan', + 'windowReenterTransition', + 'windowReturnTransition', + 'windowSharedElementEnterTransition', + 'windowSharedElementExitTransition', + 'windowSharedElementReenterTransition', + 'windowSharedElementReturnTransition', + 'windowSharedElementsUseOverlay', + 'windowShowAnimation', + 'windowShowWallpaper', + 'windowSoftInputMode', + 'windowSplashscreenContent', + 'windowSwipeToDismiss', + 'windowTitleBackgroundStyle', + 'windowTitleSize', + 'windowTitleStyle', + 'windowTransitionBackgroundFadeDuration', + 'windowTranslucentNavigation', + 'windowTranslucentStatus', + 'writePermission', + 'x', + 'xlargeScreens', + 'y', + 'yearListItemTextAppearance', + 'yearListSelectorColor', + 'yesNoPreferenceStyle', + 'zAdjustment', + 'zygotePreloadName', + ]; + for (const prop of properties) { + it(`.${prop} is a Number`, () => { + should(Ti.Android.R.attr[prop]).be.a.Number(); + should(Ti.Android.R.attr[prop]).not.eql(0); + }); + } + }); + + describe('.bool', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('bool').which.is.a.Object(); + }); + }); + + describe('.color', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('color').which.is.a.Object(); + }); + + const properties = [ + 'background_dark', + 'background_light', + 'black', + 'darker_gray', + 'holo_blue_bright', + 'holo_blue_dark', + 'holo_blue_light', + 'holo_green_dark', + 'holo_green_light', + 'holo_orange_dark', + 'holo_orange_light', + 'holo_purple', + 'holo_red_dark', + 'holo_red_light', + 'primary_text_dark', + 'primary_text_dark_nodisable', + 'primary_text_light', + 'primary_text_light_nodisable', + 'secondary_text_dark', + 'secondary_text_dark_nodisable', + 'secondary_text_light', + 'secondary_text_light_nodisable', + 'tab_indicator_text', + 'tertiary_text_dark', + 'tertiary_text_light', + 'transparent', + 'white', + 'widget_edittext_dark', + ]; + for (const prop of properties) { + it(`.${prop} is a Number`, () => { + should(Ti.Android.R.color[prop]).be.a.Number(); + should(Ti.Android.R.color[prop]).not.eql(0); + }); + } + }); + + describe('.dimen', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('dimen').which.is.a.Object(); + }); + + const properties = [ + 'app_icon_size', + 'dialog_min_width_major', + 'dialog_min_width_minor', + 'notification_large_icon_height', + 'notification_large_icon_width', + 'thumbnail_height', + 'thumbnail_width', + ]; + for (const prop of properties) { + it(`.${prop} is a Number`, () => { + should(Ti.Android.R.dimen[prop]).be.a.Number(); + should(Ti.Android.R.dimen[prop]).not.eql(0); + }); + } + }); + + describe('.drawable', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('drawable').which.is.a.Object(); + }); + + // TODO: Test known properties + }); + + describe('.fraction', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('fraction').which.is.a.Object(); + }); + }); + + describe('.id', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('id').which.is.a.Object(); + }); + + // TODO: Test known properties + }); + + describe('.integer', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('integer').which.is.a.Object(); + }); + + const properties = [ + 'config_longAnimTime', + 'config_mediumAnimTime', + 'config_shortAnimTime', + 'status_bar_notification_info_maxnum', + ]; + for (const prop of properties) { + it(`.${prop} is a Number`, () => { + should(Ti.Android.R.integer[prop]).be.a.Number(); + should(Ti.Android.R.integer[prop]).not.eql(0); + }); + } + }); + + describe('.interpolator', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('interpolator').which.is.a.Object(); + }); + + const properties = [ + 'accelerate_cubic', + 'accelerate_decelerate', + 'accelerate_quad', + 'accelerate_quint', + 'anticipate', + 'anticipate_overshoot', + 'bounce', + 'cycle', + 'decelerate_cubic', + 'decelerate_quad', + 'decelerate_quint', + 'fast_out_extra_slow_in', + 'fast_out_linear_in', + 'fast_out_slow_in', + 'linear', + 'linear_out_slow_in', + 'overshoot', + ]; + for (const prop of properties) { + it(`.${prop} is a Number`, () => { + should(Ti.Android.R.interpolator[prop]).be.a.Number(); + should(Ti.Android.R.interpolator[prop]).not.eql(0); + }); + } + }); + + describe('.layout', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('layout').which.is.a.Object(); + }); + + const properties = [ + 'activity_list_item', + 'browser_link_context_header', + 'expandable_list_content', + 'list_content', + 'preference_category', + 'select_dialog_item', + 'select_dialog_multichoice', + 'select_dialog_singlechoice', + 'simple_dropdown_item_1line', + 'simple_expandable_list_item_1', + 'simple_expandable_list_item_2', + 'simple_gallery_item', + 'simple_list_item_1', + 'simple_list_item_2', + 'simple_list_item_activated_1', + 'simple_list_item_activated_2', + 'simple_list_item_checked', + 'simple_list_item_multiple_choice', + 'simple_list_item_single_choice', + 'simple_selectable_list_item', + 'simple_spinner_dropdown_item', + 'simple_spinner_item', + 'test_list_item', + 'two_line_list_item', + ]; + for (const prop of properties) { + it(`.${prop} is a Number`, () => { + should(Ti.Android.R.layout[prop]).be.a.Number(); + should(Ti.Android.R.layout[prop]).not.eql(0); + }); + } + }); + + describe('.menu', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('menu').which.is.a.Object(); + }); + }); + + describe('.mipmap', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('mipmap').which.is.a.Object(); + }); + + const properties = [ + 'sym_def_app_icon', + ]; + for (const prop of properties) { + it(`.${prop} is a Number`, () => { + should(Ti.Android.R.mipmap[prop]).be.a.Number(); + should(Ti.Android.R.mipmap[prop]).not.eql(0); + }); + } + }); + + describe('.plurals', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('plurals').which.is.a.Object(); + }); + }); + + describe('.raw', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('raw').which.is.a.Object(); + }); + }); + + describe('.string', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('string').which.is.a.Object(); + }); + + const properties = [ + 'VideoView_error_button', + 'VideoView_error_text_invalid_progressive_playback', + 'VideoView_error_text_unknown', + 'VideoView_error_title', + 'autofill', + 'cancel', + 'copy', + 'copyUrl', + 'cut', + 'defaultMsisdnAlphaTag', + 'defaultVoiceMailAlphaTag', + 'dialog_alert_title', + 'emptyPhoneNumber', + 'fingerprint_icon_content_description', + 'httpErrorBadUrl', + 'httpErrorUnsupportedScheme', + 'no', + 'ok', + 'paste', + 'paste_as_plain_text', + 'search_go', + 'selectAll', + 'selectTextMode', + 'status_bar_notification_info_overflow', + 'unknownName', + 'untitled', + 'yes', + ]; + for (const prop of properties) { + it(`.${prop} is a Number`, () => { + should(Ti.Android.R.string[prop]).be.a.Number(); + should(Ti.Android.R.string[prop]).not.eql(0); + }); + } + }); + + describe('.style', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('style').which.is.a.Object(); + }); + + // TODO: Test for known properties + }); + + describe('.styleable', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('styleable').which.is.a.Object(); + }); + + // TODO: Test for known properties + }); + + describe('.transition', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('transition').which.is.a.Object(); + }); + + const properties = [ + 'explode', + 'fade', + 'move', + 'no_transition', + 'slide_bottom', + 'slide_left', + 'slide_right', + 'slide_top', + ]; + for (const prop of properties) { + it(`.${prop} is a Number`, () => { + should(Ti.Android.R.transition[prop]).be.a.Number(); + should(Ti.Android.R.transition[prop]).not.eql(0); + }); + } + }); + + describe('.xml', () => { + it('is a Object', () => { + should(Ti.Android.R).have.a.readOnlyProperty('xml').which.is.a.Object(); + }); + }); + + }); +});