โ Palace.PalaceTests
Duration: <1ms
โ DownloadProgressPublisherCoreTests.testBroadcastUpdate_usesNotificationSender
Duration: 4.14s
โ DownloadProgressPublisherCoreTests.testBroadcastUpdate_throttles_rapidCalls
Duration: 4.08s
Duration: <1ms
Duration: 4.14s
Duration: 4.08s
| Class | Total | Passed | Failed | Duration | |
|---|---|---|---|---|---|
| โ | AccessLintComplianceTests | 11 | 11 | 0 | 29ms |
| โ | AccessibilityAnnouncementCenterTests | 20 | 20 | 0 | 1.66s |
| โ | AccessibilityLabelTests | 9 | 9 | 0 | 25ms |
| โ | AccessibilityPreferencesTests | 26 | 26 | 0 | 107ms |
| โ | AccessibilityServiceTests | 11 | 11 | 0 | 54ms |
| โ | AccountAuthDocCarryoverTests | 5 | 5 | 0 | 972ms |
| โ | AccountAwareNetworkTests | 10 | 10 | 0 | 199ms |
| โ | AccountDetailCredentialStateTests | 7 | 0 | 0 | 67ms |
| โ | AccountDetailPINVisibilityTests | 25 | 0 | 0 | 691ms |
| โ | AccountDetailSignOutConfirmationTests | 2 | 0 | 0 | 79ms |
| โ | AccountDetailViewModelGapTests | 1 | 1 | 0 | 113ms |
| โ | AccountDetailViewModelTests | 19 | 0 | 0 | 168ms |
| โ | AccountDetailsURLTests | 17 | 17 | 0 | 717ms |
| โ | AccountModelGapTests | 9 | 9 | 0 | 1.12s |
| โ | AccountModelTests | 16 | 16 | 0 | 51ms |
| โ | AccountProfileDocumentTests | 3 | 3 | 0 | 19ms |
| โ | AccountSwitchCleanupTests | 8 | 8 | 0 | 169ms |
| โ | AccountSwitchIntegrationTests | 8 | 8 | 0 | 533ms |
| โ | AccountsManagerCacheTests | 16 | 16 | 0 | 523ms |
| โ | AccountsManagerGapTests | 3 | 3 | 0 | 13ms |
| โ | AccountsManagerHelpersTests | 12 | 12 | 0 | 49ms |
| โ | AccountsManagerTests | 51 | 51 | 0 | 5.87s |
| โ | AdobeCertificateGapTests | 7 | 7 | 0 | 40ms |
| โ | AdobeDRMErrorGapTests | 3 | 3 | 0 | 11ms |
| โ | AdobeDRMHandlerTests | 12 | 12 | 0 | 121ms |
| โ | AdobeDRMServiceGapTests | 2 | 2 | 0 | 10ms |
| โ | AlertModelCoverageTests | 6 | 6 | 0 | 11ms |
| โ | AlertModelRetryTests | 7 | 7 | 0 | 40ms |
| โ | AlertModelTests | 2 | 2 | 0 | 5ms |
| โ | AlertUtilsTests | 20 | 20 | 0 | 361ms |
| โ | AnnotationContractTests | 3 | 3 | 0 | 56ms |
| โ | AnnotationDeviceIDTests | 2 | 2 | 0 | 6ms |
| โ | AnnotationPostResponseContractTests | 1 | 1 | 0 | 11ms |
| โ | AnnouncementChainTests | 5 | 5 | 0 | 23ms |
| โ | AnnouncementTests | 3 | 3 | 0 | 10ms |
| โ | AnonymousBorrowBaselineFixtureTests | 13 | 13 | 0 | 69ms |
| โ | AnonymousBorrowCandidateFixtureTests | 6 | 6 | 0 | 33ms |
| โ | AnonymousBorrowDeltaTests | 2 | 2 | 0 | 27ms |
| โ | AppContainerTests | 4 | 4 | 0 | 28ms |
| โ | AppHealthViewModelTests | 8 | 8 | 0 | 1.33s |
| โ | AppLaunchTrackerExtendedTests | 16 | 16 | 0 | 454ms |
| โ | AppLaunchTrackerTests | 10 | 10 | 0 | 1.79s |
| โ | AppRouteTests | 5 | 5 | 0 | 15ms |
| โ | AppTabHostViewBadgeCountTests | 10 | 10 | 0 | 60ms |
| โ | AppTabRouterCoverageTests | 4 | 4 | 0 | 24ms |
| โ | AppTabRouterGapTests | 3 | 3 | 0 | 21ms |
| โ | ArrayExtensionsTests | 6 | 6 | 0 | 19ms |
| โ | AudioBookmarkGapTests | 6 | 6 | 0 | 20ms |
| โ | AudioInterruptionLogicTests | 6 | 6 | 0 | 22ms |
| โ | AudiobookAccessibilityTests | 7 | 7 | 0 | 78ms |
| โ | AudiobookBackgroundAudioTests | 2 | 2 | 0 | 289ms |
| โ | AudiobookBookmarkBusinessLogicTests | 19 | 19 | 0 | 6.93s |
| โ | AudiobookDataManagerEmptyQueueTests | 1 | 1 | 0 | 18ms |
| โ | AudiobookDataManagerErrorHandlingTests | 5 | 5 | 0 | 10.76s |
| โ | AudiobookDataManagerModelsTests | 20 | 20 | 0 | 111ms |
| โ | AudiobookDataManagerNetworkSyncTests | 5 | 5 | 0 | 5.16s |
| โ | AudiobookDataManagerSaveTests | 4 | 4 | 0 | 49ms |
| โ | AudiobookDataManagerStoreRecoveryTests | 5 | 5 | 0 | 2.13s |
| โ | AudiobookFileLoggerTests | 9 | 9 | 0 | 71ms |
| โ | AudiobookLoadFailureSAMLReauthTests | 10 | 10 | 0 | 1.51s |
| โ | AudiobookLoaderTests | 2 | 2 | 0 | 178ms |
| โ | AudiobookNetworkValidationTests | 3 | 3 | 0 | 14ms |
| โ | AudiobookPhoneAlertContentTests | 3 | 3 | 0 | 11ms |
| โ | AudiobookPlaybackStateTests | 3 | 3 | 0 | 114ms |
| โ | AudiobookPlaybackTests | 26 | 26 | 0 | 543ms |
| โ | AudiobookSAMLReauthTests | 6 | 6 | 0 | 54ms |
| โ | AudiobookSessionErrorDescriptionTests | 4 | 4 | 0 | 11ms |
| โ | AudiobookSessionErrorExtTests | 4 | 4 | 0 | 151ms |
| โ | AudiobookSessionErrorTests | 2 | 2 | 0 | 5ms |
| โ | AudiobookSessionManagerErrorMappingTests | 6 | 6 | 0 | 44ms |
| โ | AudiobookSessionManagerTests | 3 | 3 | 0 | 53ms |
| โ | AudiobookSessionStateTests | 6 | 6 | 0 | 46ms |
| โ | AudiobookSessionStateTransitionTests | 18 | 18 | 0 | 46ms |
| โ | AudiobookSleepTimerIntegrationTests | 5 | 5 | 0 | 316ms |
| โ | AudiobookStorageLocationTests | 3 | 3 | 0 | 7ms |
| โ | AudiobookTOCTests | 18 | 18 | 0 | 509ms |
| โ | AudiobookTimeEntryTests | 6 | 6 | 0 | 38ms |
| โ | AudiobookTimeTrackerEdgeTests | 8 | 8 | 0 | 184ms |
| โ | AudiobookTimeTrackerLifecycleTests | 5 | 5 | 0 | 1.20s |
| โ | AudiobookTimeTrackerTests | 9 | 9 | 0 | 174ms |
| โ | AudiobookTrackCompletionTests | 2 | 2 | 0 | 32ms |
| โ | AudiobookTypeRoutingTests | 5 | 5 | 0 | 81ms |
| โ | AudiobookmarkTests | 4 | 4 | 0 | 64ms |
| โ | AuthDocumentContractTests | 2 | 2 | 0 | 22ms |
| โ | AuthDocumentVariantsContractTests | 5 | 5 | 0 | 40ms |
| โ | AuthErrorCategoryTests | 12 | 12 | 0 | 168ms |
| โ | AuthFlowSecurityTests | 3 | 0 | 0 | 26ms |
| โ | AuthReducerTests | 21 | 21 | 0 | 80ms |
| โ | AuthTypeTests | 7 | 7 | 0 | 35ms |
| โ | AuthenticationTests | 16 | 16 | 0 | 45ms |
| โ | BackgroundDownloadHandlerTests | 28 | 28 | 0 | 177ms |
| โ | BackgroundListenerTests | 2 | 2 | 0 | 33ms |
| โ | BackupExclusionMigrationTests | 3 | 3 | 0 | 88ms |
| โ | BadgeDefinitionTests | 33 | 33 | 0 | 129ms |
| โ | BadgeServiceTests | 16 | 16 | 0 | 1.01s |
| โ | BadgesViewModelTests | 14 | 14 | 0 | 109ms |
| โ | BasicAuthEmptyCredentialTests | 4 | 4 | 0 | 10ms |
| โ | BearerTokenFulfillFlowTests | 4 | 4 | 0 | 34ms |
| โ | BearerTokenRefreshTests | 4 | 4 | 0 | 13ms |
| โ | BearerTokenResponseDetectionTests | 7 | 7 | 0 | 45ms |
| โ | BookAvailabilityFormatterTests | 18 | 18 | 0 | 115ms |
| โ | BookButtonMapperHoldReadyTests | 10 | 10 | 0 | 58ms |
| โ | BookButtonMapperTests | 14 | 14 | 0 | 193ms |
| โ | BookButtonMapperViewModelTests | 18 | 18 | 0 | 58ms |
| โ | BookButtonStateTests | 8 | 8 | 0 | 56ms |
| โ | BookButtonTypeTests | 13 | 13 | 0 | 47ms |
| โ | BookCellModelActionTests | 18 | 18 | 0 | 731ms |
| โ | BookCellModelCacheInvalidationTests | 8 | 8 | 0 | 139ms |
| โ | BookCellModelCachePrefetchSafetyTests | 9 | 9 | 0 | 267ms |
| โ | BookCellModelCacheTests | 22 | 22 | 0 | 590ms |
| โ | BookCellModelComputedPropertyTests | 19 | 19 | 0 | 611ms |
| โ | BookCellModelOfflineTests | 9 | 9 | 0 | 293ms |
| โ | BookCellModelRegistryBindingTests | 4 | 4 | 0 | 272ms |
| โ | BookCellModelStateTests | 16 | 16 | 0 | 198ms |
| โ | BookCellStateComprehensiveTests | 14 | 14 | 0 | 73ms |
| โ | BookContentResetServiceTests | 2 | 2 | 0 | 32ms |
| โ | BookDetailMetadataHydrationTests | 6 | 6 | 0 | 128ms |
| โ | BookDetailViewModelTests | 81 | 81 | 0 | 1.30s |
| โ | BookFileManagerTests | 8 | 8 | 0 | 80ms |
| โ | BookPreviewTests | 4 | 4 | 0 | 20ms |
| โ | BookRegistryStoreTests | 26 | 26 | 0 | 657ms |
| โ | BookRegistrySyncTests | 23 | 23 | 0 | 236ms |
| โ | BookReturnServiceTests | 8 | 8 | 0 | 1.32s |
| โ | BookSignInRedirectHandlerTests | 8 | 8 | 0 | 215ms |
| โ | BookStateIntegrationTests | 8 | 8 | 0 | 60ms |
| โ | BookmarkBusinessLogicExtendedTests | 6 | 6 | 0 | 712ms |
| โ | BookmarkDeletionLogTests | 3 | 3 | 0 | 359ms |
| โ | BookmarkDeviceIdMatchingTests | 3 | 3 | 0 | 445ms |
| โ | BookmarkExistenceTests | 4 | 4 | 0 | 349ms |
| โ | BookmarkManagerTests | 24 | 24 | 0 | 1.24s |
| โ | BookmarkSortingTests | 1 | 1 | 0 | 96ms |
| โ | BookmarkSyncTests | 3 | 3 | 0 | 302ms |
| โ | BorrowErrorMessageTests | 13 | 13 | 0 | 40ms |
| โ | BorrowErrorPresenterTests | 6 | 6 | 0 | 533ms |
| โ | BorrowOperationTests | 5 | 5 | 0 | 437ms |
| โ | BorrowReducerTests | 19 | 19 | 0 | 57ms |
| โ | ButtonStateTests | 16 | 16 | 0 | 142ms |
| โ | ButtonStyleTypeTests | 2 | 2 | 0 | 38ms |
| โ | C64ConversionTests | 6 | 6 | 0 | 17ms |
| โ | CarPlayChapterListTests | 3 | 3 | 0 | 44ms |
| โ | CarPlayIntegrationTests | 2 | 2 | 0 | 16ms |
| โ | CarPlayLibraryRefreshTests | 3 | 3 | 0 | 12ms |
| โ | CarPlayNowPlayingTemplateTests | 4 | 4 | 0 | 528ms |
| โ | CarPlayOpenAppAlertTests | 4 | 4 | 0 | 16ms |
| โ | CarPlayPlaybackErrorTests | 8 | 8 | 0 | 34ms |
| โ | CarPlayTests | 12 | 12 | 0 | 76ms |
| โ | CarPlayTimeTrackingTests | 3 | 3 | 0 | 1.79s |
| โ | CatalogAPIDedupeTests | 3 | 3 | 0 | 436ms |
| โ | CatalogAPIEntryPointTests | 1 | 1 | 0 | 5ms |
| โ | CatalogAccessibilityTests | 8 | 8 | 0 | 34ms |
| โ | CatalogCacheMetadataTests | 14 | 14 | 0 | 101ms |
| โ | CatalogFeedModelTests | 4 | 4 | 0 | 33ms |
| โ | CatalogFilterGroupModelTests | 17 | 17 | 0 | 111ms |
| โ | CatalogFilterModelTests | 17 | 17 | 0 | 154ms |
| โ | CatalogFilterServiceTests | 29 | 29 | 0 | 407ms |
| โ | CatalogFilterTests | 1 | 1 | 0 | 3ms |
| โ | CatalogLaneModelStructTests | 18 | 18 | 0 | 401ms |
| โ | CatalogLaneModelTests | 1 | 1 | 0 | 3ms |
| โ | CatalogLaneMoreFilterStateTests | 8 | 8 | 0 | 55ms |
| โ | CatalogLaneMoreViewModelTests | 42 | 42 | 0 | 176ms |
| โ | CatalogLaneRowViewAccessibilityTests | 11 | 11 | 0 | 95ms |
| โ | CatalogLaneSortingTests | 4 | 4 | 0 | 475ms |
| โ | CatalogLoadIntegrationTests | 6 | 6 | 0 | 64ms |
| โ | CatalogPreloaderTests | 6 | 6 | 0 | 26ms |
| โ | CatalogRepositoryCoreTests | 9 | 9 | 0 | 462ms |
| โ | CatalogRepositoryTests | 19 | 19 | 0 | 255ms |
| โ | CatalogSearchViewModelRegistryUpdateTests | 5 | 5 | 0 | 102ms |
| โ | CatalogSearchViewModelTests | 59 | 59 | 0 | 6.76s |
| โ | CatalogSelectorsTests | 2 | 2 | 0 | 9ms |
| โ | CatalogSortServiceTests | 14 | 14 | 0 | 89ms |
| โ | CatalogStateTests | 7 | 7 | 0 | 34ms |
| โ | CatalogViewModelStateMachineTests | 10 | 10 | 0 | 40ms |
| โ | ChaosFaultInjectionTests | 5 | 5 | 0 | 52ms |
| โ | CirculationAnalyticsTests | 4 | 4 | 0 | 16ms |
| โ | ColorExtensionTests | 5 | 5 | 0 | 57ms |
| โ | ConcurrentBookStateTests | 3 | 3 | 0 | 33ms |
| โ | ConcurrentDownloadStateTests | 3 | 3 | 0 | 38ms |
| โ | ConcurrentTokenRefreshTests | 2 | 2 | 0 | 28ms |
| โ | ContinuousPlaybackTrackingTests | 3 | 3 | 0 | 919ms |
| โ | CrawlStateTests | 8 | 8 | 0 | 26ms |
| โ | CrawlableFeedAnalysisTests | 17 | 17 | 0 | 81ms |
| โ | CrawlerFallbackTests | 12 | 12 | 0 | 101ms |
| โ | CredentialEdgeCaseTests | 6 | 6 | 0 | 25ms |
| โ | CredentialPrivacyTests | 4 | 4 | 0 | 37ms |
| โ | CredentialPromptCoordinatorTests | 4 | 4 | 0 | 368ms |
| โ | CrossDeviceBookmarkSyncTests | 12 | 12 | 0 | 31ms |
| โ | CrossDomain401Tests | 8 | 8 | 0 | 142ms |
| โ | CrossFormatMappingTests | 14 | 14 | 0 | 54ms |
| โ | DPLAErrorTests | 3 | 3 | 0 | 12ms |
| โ | DRMAdversarialTests | 4 | 1 | 0 | 47ms |
| โ | DRMFulfilledPublicationTests | 6 | 6 | 0 | 12ms |
| โ | DataBase64Tests | 3 | 3 | 0 | 20ms |
| โ | DataReceptionComparisonTests | 2 | 2 | 0 | 213ms |
| โ | DateExtensionTests | 9 | 9 | 0 | 24ms |
| โ | DateFormattingTests | 4 | 4 | 0 | 22ms |
| โ | Date_NYPLAdditionsTests | 7 | 7 | 0 | 637ms |
| โ | DebugSettingsTests | 27 | 27 | 0 | 143ms |
| โ | DefaultCatalogAPITests | 31 | 31 | 0 | 224ms |
| โ | DeriveInitialStateTests | 4 | 4 | 0 | 27ms |
| โ | DeviceLogCollectorGapTests | 2 | 2 | 0 | 14.62s |
| โ | DeviceLogCollectorTests | 9 | 9 | 0 | 49.09s |
| โ | DeviceOrientationTests | 7 | 7 | 0 | 162ms |
| โ | DeviceSpecificErrorMonitorTests | 11 | 11 | 0 | 52ms |
| โ | DictionaryExtensionsTests | 5 | 5 | 0 | 39ms |
| โ | DiskBudgetManagerTests | 7 | 7 | 0 | 41ms |
| โ | DiskBudgetTests | 2 | 2 | 0 | 10ms |
| โ | DownloadAlertPresenterTests | 5 | 5 | 0 | 670ms |
| โ | DownloadAnnouncementServiceTests | 12 | 12 | 0 | 147ms |
| โ | DownloadAuthRetryHandlerTests | 8 | 8 | 0 | 752ms |
| โ | DownloadCancellationHandlerTests | 5 | 5 | 0 | 298ms |
| โ | DownloadCompletionParserTests | 9 | 9 | 0 | 116ms |
| โ | DownloadCoordinatorIntegrationTests | 10 | 10 | 0 | 150ms |
| โ | DownloadCoordinatorTests | 11 | 11 | 0 | 96ms |
| โ | DownloadDiskSpaceTests | 2 | 2 | 0 | 5ms |
| โ | DownloadErrorInfoTests | 3 | 3 | 0 | 6ms |
| โ | DownloadErrorRecoveryPolicyTests | 11 | 11 | 0 | 132ms |
| โ | DownloadErrorRecoveryTests | 3 | 3 | 0 | 29ms |
| โ | DownloadInfoTests | 5 | 5 | 0 | 36ms |
| โ | DownloadOnlyOnWiFiTests | 10 | 10 | 0 | 40ms |
| โ | DownloadPersistenceStoreTests | 5 | 5 | 0 | 449ms |
| โ | DownloadProgressPublisherCoreTests | 19 | 17 | 2 | 8.37s |
| โ | DownloadProgressPublisherTests | 2 | 2 | 0 | 8ms |
| โ | DownloadQueueIntegrationTests | 3 | 3 | 0 | 74ms |
| โ | DownloadQueueOrchestratorTests | 9 | 9 | 0 | 190ms |
| โ | DownloadRedirectTests | 7 | 7 | 0 | 30ms |
| โ | DownloadSlotManagementTests | 5 | 5 | 0 | 235ms |
| โ | DownloadStartCoordinatorTests | 9 | 9 | 0 | 329ms |
| โ | DownloadStartDispatcherTests | 11 | 11 | 0 | 135ms |
| โ | DownloadStateMachineIntegrationTests | 15 | 15 | 0 | 172ms |
| โ | DownloadStateMachineTests | 5 | 5 | 0 | 46ms |
| โ | DownloadStateManagerTests | 13 | 13 | 0 | 175ms |
| โ | DownloadTaskLifecycleServiceTests | 9 | 9 | 0 | 102ms |
| โ | DownloadThrottlingServiceTests | 10 | 10 | 0 | 409ms |
| โ | DownloadWatchdogTests | 3 | 3 | 0 | 335ms |
| โ | EPUBModuleTests | 4 | 4 | 0 | 26ms |
| โ | EPUBPositionTests | 8 | 8 | 0 | 43ms |
| โ | EPUBSearchViewModelTests | 18 | 18 | 0 | 119ms |
| โ | EPUBToolbarToggleTests | 11 | 11 | 0 | 46ms |
| โ | EmailAddressTests | 16 | 16 | 0 | 111ms |
| โ | EpubSampleFactoryTests | 5 | 5 | 0 | 168ms |
| โ | ErrorActivityTrackerTests | 12 | 12 | 0 | 87ms |
| โ | ErrorDetailTests | 12 | 12 | 0 | 54ms |
| โ | ErrorDetailViewControllerGapTests | 3 | 3 | 0 | 360ms |
| โ | ErrorDetailViewControllerTests | 14 | 14 | 0 | 195ms |
| โ | ErrorLogExporterTests | 5 | 5 | 0 | 38.13s |
| โ | ExpiredLoanStringsTests | 5 | 5 | 0 | 38ms |
| โ | FacetEnumTests | 3 | 3 | 0 | 9ms |
| โ | FacetToolbarAccessibilityTests | 5 | 5 | 0 | 21ms |
| โ | FacetViewModelLogoDelegateTests | 4 | 4 | 0 | 120ms |
| โ | FacetViewModelTests | 18 | 18 | 0 | 97ms |
| โ | FetchManifestWithBearerTokenLCPSafetyTests | 1 | 1 | 0 | 158ms |
| โ | FetchManifestWithBearerTokenTests | 9 | 9 | 0 | 314ms |
| โ | FetchOpenAccessManifestLCPSafetyTests | 4 | 4 | 0 | 16ms |
| โ | FileURLGenerationTests | 3 | 3 | 0 | 21ms |
| โ | FloatTPPAdditionsTests | 5 | 5 | 0 | 38ms |
| โ | FocusIndicationTests | 7 | 7 | 0 | 59ms |
| โ | FontManagerTests | 17 | 17 | 0 | 126ms |
| โ | ForceResetTests | 6 | 6 | 0 | 25ms |
| โ | GeneralCacheTests | 20 | 20 | 0 | 707ms |
| โ | GroupEnumTests | 1 | 1 | 0 | 11ms |
| โ | HTMLTextViewTests | 70 | 70 | 0 | 18.92s |
| โ | HoldNotificationClassificationTests | 2 | 2 | 0 | 11ms |
| โ | HoldsBadgeCountTests | 9 | 9 | 0 | 79ms |
| โ | HoldsBookViewModelTests | 8 | 8 | 0 | 83ms |
| โ | HoldsReducerTests | 11 | 11 | 0 | 104ms |
| โ | HoldsSyncFailureTests | 10 | 10 | 0 | 1.26s |
| โ | HoldsViewModelTests | 23 | 23 | 0 | 1.72s |
| โ | ImageCacheTypeTests | 1 | 1 | 0 | 73ms |
| โ | IntExtensionsTests | 4 | 4 | 0 | 32ms |
| โ | KeyboardNavigationFKATests | 11 | 11 | 0 | 68ms |
| โ | KeyboardNavigationHandlerTests | 16 | 16 | 0 | 209ms |
| โ | KeyboardVoiceOverTests | 5 | 5 | 0 | 142ms |
| โ | LCPAudiobookURLSchemeTests | 4 | 4 | 0 | 197ms |
| โ | LCPAudiobooksTests | 21 | 21 | 0 | 126ms |
| โ | LCPFulfillmentHandlerTests | 5 | 5 | 0 | 353ms |
| โ | LCPLibraryServiceTests | 20 | 20 | 0 | 210ms |
| โ | LCPLicenseDocumentDetectionTests | 5 | 5 | 0 | 78ms |
| โ | LCPLicenseFilePathTests | 3 | 3 | 0 | 27ms |
| โ | LCPOrphanedDownloadRegistryTests | 4 | 4 | 0 | 47ms |
| โ | LCPPDFManifestTests | 3 | 3 | 0 | 15ms |
| โ | LCPPDFsTests | 13 | 13 | 0 | 495ms |
| โ | LCPSessionIdentifierTests | 3 | 3 | 0 | 21ms |
| โ | LatestAudiobookLocationTests | 3 | 3 | 0 | 72ms |
| โ | LibraryCatalogMergerTests | 9 | 9 | 0 | 23ms |
| โ | LibraryRegistryCrawlerTests | 8 | 8 | 0 | 75ms |
| โ | LicensesServiceTests | 4 | 4 | 0 | 25ms |
| โ | LiveCrawlableParsingTest | 4 | 0 | 0 | 54ms |
| โ | LocalBookContentServiceTests | 7 | 7 | 0 | 68ms |
| โ | LogTests | 14 | 14 | 0 | 378ms |
| โ | LoginKeyboardTests | 8 | 8 | 0 | 44ms |
| โ | MainActorHelpersTests | 22 | 22 | 0 | 827ms |
| โ | MappedCatalogBridgeTests | 3 | 3 | 0 | 62ms |
| โ | MappedCatalogModelTests | 11 | 11 | 0 | 433ms |
| โ | MockBackendExpiredCredentialsTests | 3 | 3 | 0 | 47ms |
| โ | MockBackendIntegrationTests | 4 | 4 | 0 | 823ms |
| โ | MockBackendLoanLimitTests | 2 | 2 | 0 | 57ms |
| โ | MockBackendRouteMatchingTests | 4 | 4 | 0 | 21ms |
| โ | MockBackendServerDownTests | 1 | 1 | 0 | 35ms |
| โ | MyBooksDownloadCenterAdeptGapTests | 3 | 3 | 0 | 49ms |
| โ | MyBooksDownloadCenterEvictionTests | 7 | 7 | 0 | 150ms |
| โ | MyBooksDownloadCenterOfflineTests | 5 | 5 | 0 | 334ms |
| โ | MyBooksDownloadSessionInvalidationTests | 3 | 3 | 0 | 30ms |
| โ | MyBooksSimplifiedBearerTokenTests | 17 | 17 | 0 | 106ms |
| โ | MyBooksViewModelBooksPublisherTests | 3 | 3 | 0 | 44ms |
| โ | MyBooksViewModelConcurrencyTests | 4 | 4 | 0 | 64ms |
| โ | MyBooksViewModelDownloadStateTests | 3 | 3 | 0 | 42ms |
| โ | MyBooksViewModelEmptyArrayTests | 3 | 3 | 0 | 13ms |
| โ | MyBooksViewModelEmptyStateTests | 4 | 4 | 0 | 61ms |
| โ | MyBooksViewModelExtendedTests | 15 | 15 | 0 | 180ms |
| โ | MyBooksViewModelFacetIntegrationTests | 4 | 4 | 0 | 28ms |
| โ | MyBooksViewModelFacetPublisherTests | 3 | 3 | 0 | 76ms |
| โ | MyBooksViewModelFilterSortInteractionTests | 2 | 2 | 0 | 20ms |
| โ | MyBooksViewModelFilterTests | 9 | 9 | 0 | 114ms |
| โ | MyBooksViewModelGuardConditionsTests | 2 | 2 | 0 | 30ms |
| โ | MyBooksViewModelLargeDatasetTests | 2 | 2 | 0 | 557ms |
| โ | MyBooksViewModelLoadAccountTests | 2 | 2 | 0 | 390ms |
| โ | MyBooksViewModelLoginStateTests | 4 | 4 | 0 | 1.61s |
| โ | MyBooksViewModelMultipleAuthorSortingTests | 3 | 3 | 0 | 43ms |
| โ | MyBooksViewModelNotificationTests | 4 | 4 | 0 | 348ms |
| โ | MyBooksViewModelOfflineFilteringTests | 3 | 3 | 0 | 21ms |
| โ | MyBooksViewModelPublisherTests | 7 | 7 | 0 | 222ms |
| โ | MyBooksViewModelSearchEdgeCaseTests | 6 | 6 | 0 | 98ms |
| โ | MyBooksViewModelSearchQueryTests | 3 | 3 | 0 | 32ms |
| โ | MyBooksViewModelSortPersistenceTests | 3 | 3 | 0 | 34ms |
| โ | MyBooksViewModelSortingIntegrationTests | 5 | 5 | 0 | 73ms |
| โ | MyBooksViewModelSortingTests | 6 | 6 | 0 | 336ms |
| โ | MyBooksViewModelStateTransitionTests | 3 | 3 | 0 | 2.05s |
| โ | MyBooksViewModelUIBindingTests | 3 | 3 | 0 | 20ms |
| โ | NSErrorAdditionsTests | 7 | 7 | 0 | 15ms |
| โ | NSNotificationTPPTests | 3 | 3 | 0 | 14ms |
| โ | NavigationCoordinatorTests | 17 | 17 | 0 | 183ms |
| โ | NavigationFreezePreventionTests | 5 | 5 | 0 | 54ms |
| โ | NetworkExecutorCredentialGuardTests | 8 | 8 | 0 | 485ms |
| โ | NetworkExecutorResponseRegressionTests | 4 | 4 | 0 | 116ms |
| โ | NetworkExecutorTaskTypeTests | 3 | 3 | 0 | 59ms |
| โ | NetworkOfflineDetectionTests | 3 | 3 | 0 | 27ms |
| โ | NetworkQueueTests | 11 | 11 | 0 | 73ms |
| โ | NetworkRequestQueueTests | 2 | 2 | 0 | 598ms |
| โ | NetworkRetryLogicTests | 7 | 7 | 0 | 42ms |
| โ | NetworkTimeoutTests | 2 | 2 | 0 | 13ms |
| โ | NotificationEventTypeContractTests | 7 | 7 | 0 | 29ms |
| โ | NotificationPayloadContractTests | 10 | 10 | 0 | 33ms |
| โ | NotificationServiceTests | 16 | 16 | 0 | 58ms |
| โ | NotificationServiceTokenTests | 9 | 9 | 0 | 47ms |
| โ | NotificationSyncThrottleTests | 5 | 5 | 0 | 50ms |
| โ | NotificationTokenDataTests | 4 | 4 | 0 | 41ms |
| โ | NotificationTokenRegistrationTests | 10 | 10 | 0 | 39ms |
| โ | NowPlayingCoordinatorTests | 19 | 19 | 0 | 2.45s |
| โ | OAuthSAMLRedirectRegressionTests | 4 | 4 | 0 | 669ms |
| โ | OIDCAuthDocumentParsingTests | 4 | 4 | 0 | 344ms |
| โ | OIDCAuthTypeTests | 5 | 5 | 0 | 16ms |
| โ | OIDCAuthenticationPropertyTests | 8 | 8 | 0 | 1.01s |
| โ | OIDCCallbackEdgeCaseTests | 9 | 9 | 0 | 1.19s |
| โ | OIDCCallbackHandlingTests | 5 | 5 | 0 | 650ms |
| โ | OIDCCallbackSchemeTests | 3 | 3 | 0 | 13ms |
| โ | OIDCIsolationRegressionTests | 6 | 6 | 0 | 583ms |
| โ | OIDCLoginRoutingTests | 3 | 3 | 0 | 451ms |
| โ | OIDCMakeRequestTests | 3 | 3 | 0 | 355ms |
| โ | OIDCNSCodingTests | 1 | 1 | 0 | 159ms |
| โ | OIDCNetworkLayer401Tests | 5 | 5 | 0 | 852ms |
| โ | OIDCReauthOnExpiredTokenTests | 5 | 5 | 0 | 706ms |
| โ | OIDCRedirectURIConstructionTests | 6 | 6 | 0 | 1.02s |
| โ | OIDCRegressionTests | 9 | 9 | 0 | 1.29s |
| โ | OIDCSelectedAuthenticationTests | 2 | 2 | 0 | 284ms |
| โ | OIDCSignOutRegressionTests | 6 | 6 | 0 | 1.03s |
| โ | OIDCTokenRefreshRegressionTests | 6 | 6 | 0 | 582ms |
| โ | OIDCUpdateUserAccountTests | 5 | 5 | 0 | 603ms |
| โ | OIDCViewModelRegressionTests | 1 | 1 | 0 | 107ms |
| โ | OIDCViewModelSignInTests | 2 | 2 | 0 | 76ms |
| โ | OPDS1BorrowEntryContractTests | 4 | 4 | 0 | 25ms |
| โ | OPDS1CatalogGroupedContractTests | 3 | 3 | 0 | 35ms |
| โ | OPDS1HoldEntriesContractTests | 4 | 4 | 0 | 22ms |
| โ | OPDS1LoansFeedContractTests | 6 | 6 | 0 | 53ms |
| โ | OPDS1RevokeResponseContractTests | 2 | 2 | 0 | 11ms |
| โ | OPDS2AuthenticationDocumentTests | 18 | 18 | 0 | 113ms |
| โ | OPDS2AvailabilityTests | 4 | 4 | 0 | 6ms |
| โ | OPDS2BookBridgeTests | 44 | 44 | 0 | 445ms |
| โ | OPDS2BorrowResponseContractTests | 3 | 3 | 0 | 14ms |
| โ | OPDS2CatalogWiringTests | 17 | 17 | 0 | 145ms |
| โ | OPDS2CatalogsFeedTests | 3 | 3 | 0 | 380ms |
| โ | OPDS2ContributorTests | 2 | 2 | 0 | 4ms |
| โ | OPDS2EmptyFeedContractTests | 1 | 1 | 0 | 12ms |
| โ | OPDS2FeedContractTests | 4 | 4 | 0 | 34ms |
| โ | OPDS2FeedParsingTests | 11 | 11 | 0 | 533ms |
| โ | OPDS2FeedTests | 13 | 13 | 0 | 116ms |
| โ | OPDS2FullMetadataTests | 4 | 4 | 0 | 29ms |
| โ | OPDS2FullPublicationTests | 13 | 13 | 0 | 52ms |
| โ | OPDS2IntegrationTests | 18 | 18 | 0 | 225ms |
| โ | OPDS2LinkArrayTests | 5 | 5 | 0 | 37ms |
| โ | OPDS2LinkComputedPropertyTests | 20 | 20 | 0 | 76ms |
| โ | OPDS2LinkRelTests | 1 | 1 | 0 | 8ms |
| โ | OPDS2LinkTests | 2 | 2 | 0 | 362ms |
| โ | OPDS2PublicationExtendedTests | 46 | 46 | 0 | 438ms |
| โ | OPDS2PublicationImageTests | 6 | 6 | 0 | 15ms |
| โ | OPDS2PublicationNarratorTests | 3 | 3 | 0 | 33ms |
| โ | OPDS2PublicationTests | 2 | 2 | 0 | 15.60s |
| โ | OPDS2SamlIDPTests | 6 | 6 | 0 | 22ms |
| โ | OPDS2SearchResultsContractTests | 3 | 3 | 0 | 27ms |
| โ | OPDS2SubjectTests | 2 | 2 | 0 | 119ms |
| โ | OPDS2SupportingTypesTests | 5 | 5 | 0 | 31ms |
| โ | OPDSAcquisitionPathExpandedTests | 15 | 15 | 0 | 555ms |
| โ | OPDSFeedCacheTests | 14 | 14 | 0 | 79ms |
| โ | OPDSFeedMigrationTests | 11 | 11 | 0 | 90ms |
| โ | OPDSFeedParsingTests | 2 | 2 | 0 | 219ms |
| โ | OPDSFeedServiceTests | 2 | 2 | 0 | 12ms |
| โ | OPDSFormatTests | 13 | 13 | 0 | 43ms |
| โ | OPDSParserCoreTests | 4 | 4 | 0 | 16ms |
| โ | OPDSParserTests | 4 | 4 | 0 | 9ms |
| โ | OPDSParsingTests | 54 | 54 | 0 | 6.07s |
| โ | OfflineActionTests | 29 | 29 | 0 | 2.82s |
| โ | OfflineQueueServiceExtendedTests | 13 | 13 | 0 | 5.19s |
| โ | OfflineQueueServiceTests | 17 | 17 | 0 | 7.10s |
| โ | OverdriveDeferredFulfillmentTests | 6 | 6 | 0 | 77ms |
| โ | OverdriveDownloadHandlerTests | 9 | 9 | 0 | 208ms |
| โ | PDFExtensionsTests | 20 | 20 | 0 | 140ms |
| โ | PDFReaderTests | 12 | 12 | 0 | 53ms |
| โ | PP3596RegressionTests | 3 | 3 | 0 | 60ms |
| โ | Palace | 2 | 1 | 1 | <1ms |
| โ | PalaceCheckPropertyTests | 8 | 8 | 0 | 215ms |
| โ | PalaceErrorCategoryTests | 17 | 17 | 0 | 209ms |
| โ | PalaceErrorExtendedTests | 23 | 23 | 0 | 135ms |
| โ | PalaceErrorTests | 11 | 11 | 0 | 51ms |
| โ | ParserFuzzTests | 4 | 4 | 0 | 53.45s |
| โ | PatronProfileContractTests | 4 | 4 | 0 | 45ms |
| โ | PerformanceMonitorTests | 14 | 14 | 0 | 127ms |
| โ | PerformanceReportTests | 14 | 14 | 0 | 89ms |
| โ | PersistentLoggerTests | 7 | 7 | 0 | 70ms |
| โ | PlaybackBootstrapperTests | 8 | 8 | 0 | 33ms |
| โ | PlaybackRateTests | 14 | 14 | 0 | 164ms |
| โ | PlaybackTrackingRegressionTests | 5 | 5 | 0 | 372ms |
| โ | PositionPersistenceLogicTests | 6 | 6 | 0 | 14ms |
| โ | PositionPersistenceTests | 2 | 2 | 0 | 24ms |
| โ | PositionSyncServiceTests | 13 | 13 | 0 | 141ms |
| โ | PositionSyncTests | 5 | 5 | 0 | 22ms |
| โ | PositionThrottlingTests | 1 | 1 | 0 | 6ms |
| โ | PostUpdateMigrationTests | 5 | 5 | 0 | 57ms |
| โ | ProblemDocumentContractTests | 4 | 4 | 0 | 16ms |
| โ | ProblemDocumentLoanExpiryTests | 5 | 5 | 0 | 54ms |
| โ | ProblemDocumentTests | 12 | 12 | 0 | 31ms |
| โ | ProblemReportEmailTests | 8 | 8 | 0 | 102ms |
| โ | ReachabilityTests | 2 | 2 | 0 | 12ms |
| โ | ReaderAccessibilityTests | 7 | 7 | 0 | 18ms |
| โ | ReaderErrorTests | 5 | 5 | 0 | 9ms |
| โ | ReaderServiceSyncTests | 3 | 3 | 0 | 95ms |
| โ | ReaderThemeTests | 24 | 24 | 0 | 251ms |
| โ | ReadingPositionTests | 22 | 22 | 0 | 54ms |
| โ | ReadingSessionTrackerTests | 13 | 13 | 0 | 278ms |
| โ | ReadingStatsServiceTests | 12 | 12 | 0 | 322ms |
| โ | ReadingStatsStoreTests | 9 | 9 | 0 | 100ms |
| โ | RedirectHandlingIntegrationTests | 4 | 4 | 0 | 22ms |
| โ | RedirectPolicyTests | 9 | 9 | 0 | 205ms |
| โ | RemoteFeatureFlagsGapTests | 4 | 4 | 0 | 120ms |
| โ | RemoteFeatureFlagsTests | 13 | 13 | 0 | 86ms |
| โ | RetryClassificationTests | 17 | 17 | 0 | 34ms |
| โ | ReturnFlowTests | 1 | 1 | 0 | 3ms |
| โ | RightsManagementDetectionTests | 5 | 5 | 0 | 14ms |
| โ | RightsManagementDispatcherTests | 10 | 10 | 0 | 141ms |
| โ | SAMLCookieSyncTests | 5 | 5 | 0 | 14ms |
| โ | SAMLHelperTests | 5 | 5 | 0 | 479ms |
| โ | SAMLLogoutCallbackDetectionTests | 4 | 4 | 0 | 9ms |
| โ | SAMLLogoutLinkParsingTests | 5 | 5 | 0 | 132ms |
| โ | SAMLLogoutURLTests | 4 | 4 | 0 | 13ms |
| โ | SAMLPlusBiblioBoardExpirationTests | 8 | 8 | 0 | 793ms |
| โ | SEMigrationsTests | 6 | 6 | 0 | 144ms |
| โ | SafeDictionaryTests | 21 | 21 | 0 | 177ms |
| โ | SamplePlayerErrorTests | 5 | 5 | 0 | 13ms |
| โ | SampleTypeTests | 8 | 8 | 0 | 27ms |
| โ | SceneDelegateTests | 1 | 1 | 0 | 2ms |
| โ | SearchAccessibilityTests | 6 | 6 | 0 | 21ms |
| โ | SearchFlowIntegrationTests | 8 | 8 | 0 | 93ms |
| โ | SettingsViewModelComputedPropertyTests | 6 | 6 | 0 | 22ms |
| โ | SettingsViewModelEdgeCaseTests | 7 | 7 | 0 | 29ms |
| โ | SettingsViewModelGapTests | 1 | 1 | 0 | 7ms |
| โ | SettingsViewModelSyncTests | 14 | 14 | 0 | 63ms |
| โ | SettingsViewModelTests | 33 | 33 | 0 | 4.84s |
| โ | SignInModalSAMLOIDCTests | 6 | 6 | 0 | 20ms |
| โ | SignInWebSheetIntegrationTests | 3 | 3 | 0 | 3.11s |
| โ | SignInWebSheetViewModelTests | 31 | 31 | 0 | 189ms |
| โ | SignOutCacheClearingTests | 3 | 3 | 0 | 22ms |
| โ | StatsViewModelTests | 10 | 10 | 0 | 268ms |
| โ | StatusAnnouncementTests | 22 | 22 | 0 | 100ms |
| โ | StopPositionSaveTests | 2 | 2 | 0 | 13ms |
| โ | StoreTests | 5 | 5 | 0 | 41ms |
| โ | StringExtensionTests | 8 | 8 | 0 | 906ms |
| โ | StringExtensionsTests | 3 | 3 | 0 | 90ms |
| โ | StringHTMLEntitiesTests | 7 | 7 | 0 | 36ms |
| โ | StringNYPLAdditionsTests | 4 | 4 | 0 | 12ms |
| โ | String_NYPLAdditionsTests | 4 | 4 | 0 | 14ms |
| โ | SyncConflictResolutionTests | 3 | 3 | 0 | 8ms |
| โ | SyncDeletionGuardTests | 5 | 5 | 0 | 17ms |
| โ | SyncDeletionRatioTests | 6 | 6 | 0 | 11ms |
| โ | SyncPermissionTests | 5 | 5 | 0 | 278ms |
| โ | TPPAccountAuthStateEnumTests | 5 | 5 | 0 | 23ms |
| โ | TPPAccountListDataSourceTests | 3 | 3 | 0 | 9ms |
| โ | TPPAdobeActivationSkipTests | 6 | 6 | 0 | 727ms |
| โ | TPPAgeCheckTests | 6 | 6 | 0 | 1.97s |
| โ | TPPAlertUtilsTests | 45 | 45 | 0 | 915ms |
| โ | TPPAnnotationsHermeticTests | 15 | 15 | 0 | 55ms |
| โ | TPPAnnotationsOverrideTests | 4 | 4 | 0 | 300ms |
| โ | TPPAnnotationsTests | 29 | 29 | 0 | 4.36s |
| โ | TPPAnnouncementManagerTests | 3 | 3 | 0 | 14ms |
| โ | TPPAuthDocumentContractTests | 3 | 3 | 0 | 34ms |
| โ | TPPBackgroundExecutorTests | 3 | 3 | 0 | 2.60s |
| โ | TPPBadgeImageGapTests | 2 | 2 | 0 | 14ms |
| โ | TPPBasicAuthTests | 11 | 11 | 0 | 56ms |
| โ | TPPBookAccessibilityLabelTests | 8 | 8 | 0 | 62ms |
| โ | TPPBookAuthorCoverageTests | 3 | 3 | 0 | 12ms |
| โ | TPPBookAuthorTests | 6 | 6 | 0 | 44ms |
| โ | TPPBookBearerTokenTests | 9 | 8 | 0 | 81ms |
| โ | TPPBookContentMetadataFilesHelperTests | 9 | 9 | 0 | 68ms |
| โ | TPPBookContentTypeConverterTests | 4 | 4 | 0 | 7ms |
| โ | TPPBookContentTypeExtendedTests | 4 | 4 | 0 | 8ms |
| โ | TPPBookContentTypeTests | 14 | 14 | 0 | 82ms |
| โ | TPPBookCoverRegistryTests | 14 | 14 | 0 | 593ms |
| โ | TPPBookCreationTests | 7 | 7 | 0 | 77ms |
| โ | TPPBookExtensionsTests | 21 | 21 | 0 | 84ms |
| โ | TPPBookLocationCoverageTests | 7 | 7 | 0 | 19ms |
| โ | TPPBookLocationEdgeCaseTests | 27 | 27 | 0 | 76ms |
| โ | TPPBookLocationKeyTests | 3 | 3 | 0 | 14ms |
| โ | TPPBookLocationTests | 11 | 11 | 0 | 67ms |
| โ | TPPBookModelGapTests | 4 | 4 | 0 | 40ms |
| โ | TPPBookRegistryBookRetrievalTests | 7 | 7 | 0 | 104ms |
| โ | TPPBookRegistryBookmarkTests | 7 | 7 | 0 | 180ms |
| โ | TPPBookRegistryCorruptedDataTests | 5 | 5 | 0 | 25ms |
| โ | TPPBookRegistryDataTests | 4 | 4 | 0 | 14ms |
| โ | TPPBookRegistryDependencyTests | 4 | 4 | 0 | 55ms |
| โ | TPPBookRegistryFulfillmentIdTests | 4 | 4 | 0 | 21ms |
| โ | TPPBookRegistryLoadReentrancyTests | 2 | 2 | 0 | 513ms |
| โ | TPPBookRegistryLocationTests | 4 | 4 | 0 | 105ms |
| โ | TPPBookRegistryProcessingTests | 2 | 2 | 0 | 4ms |
| โ | TPPBookRegistryPublisherTests | 6 | 6 | 0 | 168ms |
| โ | TPPBookRegistryRecordPersistenceTests | 3 | 3 | 0 | 140ms |
| โ | TPPBookRegistryRecordTests | 10 | 10 | 0 | 117ms |
| โ | TPPBookRegistryStateManagementTests | 11 | 11 | 0 | 48ms |
| โ | TPPBookRegistryThreadSafetyTests | 3 | 3 | 0 | 376ms |
| โ | TPPBookRegistryUpdateAndRemoveTests | 1 | 1 | 0 | 37ms |
| โ | TPPBookRequiresAdobeDRMTests | 6 | 6 | 0 | 16ms |
| โ | TPPBookSerializationTests | 13 | 13 | 0 | 76ms |
| โ | TPPBookStateInitializationTests | 4 | 4 | 0 | 11ms |
| โ | TPPBookStateTests | 4 | 4 | 0 | 9ms |
| โ | TPPBookTests | 83 | 83 | 0 | 356ms |
| โ | TPPBookmarkDeletionLogTests | 11 | 11 | 0 | 143ms |
| โ | TPPBookmarkFactoryInitTests | 2 | 2 | 0 | 17ms |
| โ | TPPBookmarkFactoryServerAnnotationEdgeCaseTests | 5 | 5 | 0 | 34ms |
| โ | TPPBookmarkFactoryTests | 15 | 15 | 0 | 169ms |
| โ | TPPBookmarkR3ConversionTests | 5 | 5 | 0 | 36ms |
| โ | TPPBookmarkR3LocationTests | 13 | 13 | 0 | 51ms |
| โ | TPPBookmarkSpecTests | 1 | 1 | 0 | 5ms |
| โ | TPPCachingTests | 3 | 3 | 0 | 17ms |
| โ | TPPCapturedCredentialsTests | 5 | 5 | 0 | 809ms |
| โ | TPPConfigurationTests | 22 | 22 | 0 | 141ms |
| โ | TPPContentTypeTests | 7 | 7 | 0 | 24ms |
| โ | TPPCredentialConcurrencyTests | 3 | 3 | 0 | 13ms |
| โ | TPPCredentialIsolationE2ETests | 5 | 0 | 0 | 174ms |
| โ | TPPCredentialPersistenceTests | 6 | 6 | 0 | 989ms |
| โ | TPPCredentialSnapshotCoherenceTests | 3 | 0 | 0 | 58ms |
| โ | TPPCredentialSnapshotTests | 8 | 8 | 0 | 133ms |
| โ | TPPCredentialsCoverageTests | 9 | 9 | 0 | 45ms |
| โ | TPPCredentialsTests | 26 | 26 | 0 | 139ms |
| โ | TPPCrossLibrarySignOutTests | 6 | 6 | 0 | 740ms |
| โ | TPPDRMFailureCredentialPreservationTests | 4 | 4 | 0 | 511ms |
| โ | TPPEncryptedPDFDataProviderTests | 3 | 3 | 0 | 30ms |
| โ | TPPErrorLoggerTests | 27 | 27 | 0 | 269ms |
| โ | TPPIdleSignOutRegressionTests | 13 | 13 | 0 | 2.70s |
| โ | TPPJWKConversionTest | 1 | 1 | 0 | 30ms |
| โ | TPPKeychainManagerTests | 5 | 5 | 0 | 113ms |
| โ | TPPLastReadPositionPosterTests | 6 | 6 | 0 | 18ms |
| โ | TPPLastReadPositionSynchronizerIntegrationTests | 5 | 5 | 0 | 70ms |
| โ | TPPLastReadPositionSynchronizerTests | 23 | 23 | 0 | 116ms |
| โ | TPPLastReadPositionSynchronizer_BehaviorDocumentationTests | 5 | 5 | 0 | 18ms |
| โ | TPPLastReadPositionSynchronizer_BookLocationTests | 9 | 9 | 0 | 22ms |
| โ | TPPLastReadPositionSynchronizer_ConcurrencyTests | 3 | 3 | 0 | 32ms |
| โ | TPPLastReadPositionSynchronizer_ReadiumBookmarkTests | 9 | 9 | 0 | 56ms |
| โ | TPPLastReadPositionSynchronizer_SyncLogicTests | 10 | 10 | 0 | 147ms |
| โ | TPPLoginNoActivationTests | 3 | 3 | 0 | 459ms |
| โ | TPPMainThreadCheckerTests | 4 | 4 | 0 | 46ms |
| โ | TPPMigrationManagerTests | 15 | 15 | 0 | 76ms |
| โ | TPPNetworkExecutorAPITests | 14 | 14 | 0 | 126ms |
| โ | TPPNetworkExecutorStubbedTests | 17 | 17 | 0 | 1.26s |
| โ | TPPNetworkExecutorTests | 3 | 3 | 0 | 14ms |
| โ | TPPNetworkResponderTests | 12 | 12 | 0 | 46ms |
| โ | TPPOPDSAcquisitionPathTests | 2 | 2 | 0 | 22ms |
| โ | TPPOPDSEntryTests | 5 | 5 | 0 | 46ms |
| โ | TPPOPDSFeedTests | 3 | 3 | 0 | 375ms |
| โ | TPPOPDSGroupSwiftTests | 3 | 3 | 0 | 6ms |
| โ | TPPOPDSLinkTests | 7 | 7 | 0 | 27ms |
| โ | TPPOpenSearchDescriptionExpandedTests | 10 | 10 | 0 | 38ms |
| โ | TPPOpenSearchDescriptionTests | 1 | 1 | 0 | 3ms |
| โ | TPPPDFDocumentMetadataTests | 15 | 15 | 0 | 147ms |
| โ | TPPPDFDocumentTests | 13 | 13 | 0 | 158ms |
| โ | TPPPDFLocationCoverageTests | 7 | 7 | 0 | 171ms |
| โ | TPPPDFLocationTests | 10 | 10 | 0 | 336ms |
| โ | TPPPDFPageBookmarkTests | 9 | 9 | 0 | 29ms |
| โ | TPPPDFPageTests | 5 | 5 | 0 | 16ms |
| โ | TPPPDFReaderModeTests | 6 | 6 | 0 | 10ms |
| โ | TPPPerAccountIsolationTests | 8 | 0 | 0 | 272ms |
| โ | TPPPreferredAuthSelectionTests | 8 | 8 | 0 | 1.09s |
| โ | TPPProblemDocumentCacheManagerTests | 12 | 12 | 0 | 51ms |
| โ | TPPProblemDocumentTests | 21 | 21 | 0 | 140ms |
| โ | TPPReaderAppearanceTests | 4 | 4 | 0 | 13ms |
| โ | TPPReaderBookmarksBusinessLogicTests | 12 | 12 | 0 | 1.87s |
| โ | TPPReaderFontTests | 4 | 4 | 0 | 33ms |
| โ | TPPReaderPreferencesLoadTests | 3 | 3 | 0 | 21ms |
| โ | TPPReaderSettingsTests | 28 | 28 | 0 | 162ms |
| โ | TPPReaderTOCBusinessLogicTests | 15 | 15 | 0 | 3.11s |
| โ | TPPReaderTOCFlattenTests | 2 | 2 | 0 | 1.09s |
| โ | TPPReadiumBookmarkLocationMatchingTests | 5 | 5 | 0 | 22ms |
| โ | TPPReadiumBookmarkTests | 18 | 18 | 0 | 92ms |
| โ | TPPReauthenticatorMockTests | 2 | 2 | 0 | 9ms |
| โ | TPPReauthenticatorTests | 4 | 4 | 0 | 19ms |
| โ | TPPReturnPromptHelperTests | 5 | 5 | 0 | 157ms |
| โ | TPPSAMLCookieExpirationTests | 5 | 5 | 0 | 68ms |
| โ | TPPSAMLFlowTests | 10 | 10 | 0 | 62ms |
| โ | TPPSAMLReauthFlowTests | 2 | 2 | 0 | 534ms |
| โ | TPPSAMLRegressionTests | 4 | 4 | 0 | 393ms |
| โ | TPPSAMLSignInTests | 26 | 26 | 0 | 2.30s |
| โ | TPPSAMLStateIsolationTests | 4 | 4 | 0 | 449ms |
| โ | TPPSAMLStateMachineTests | 6 | 6 | 0 | 741ms |
| โ | TPPSettingsTests | 6 | 6 | 0 | 120ms |
| โ | TPPSignInAdobeSkipTests | 14 | 14 | 0 | 4.64s |
| โ | TPPSignInAuthStateTransitionTests | 3 | 3 | 0 | 759ms |
| โ | TPPSignInBusinessLogicExtendedTests | 53 | 53 | 0 | 7.62s |
| โ | TPPSignInBusinessLogicTests | 12 | 12 | 0 | 1.57s |
| โ | TPPSignInErrorHandlingTests | 2 | 2 | 0 | 270ms |
| โ | TPPSignInProfileDocEdgeCaseTests | 3 | 3 | 0 | 568ms |
| โ | TPPSignedInStateProviderTests | 3 | 3 | 0 | 69ms |
| โ | TPPUserAccountAuthStateTests | 5 | 5 | 0 | 83ms |
| โ | TPPUserAccountGapTests | 4 | 4 | 0 | 18ms |
| โ | TPPUserFriendlyErrorTests | 11 | 11 | 0 | 32ms |
| โ | TPPUserNotificationsTests | 10 | 10 | 0 | 229ms |
| โ | TPPXMLSwiftTests | 16 | 16 | 0 | 47ms |
| โ | TPPXMLTests | 3 | 3 | 0 | 16ms |
| โ | TimeEntryTests | 3 | 3 | 0 | 15ms |
| โ | TokenRefreshIntegrationTests | 2 | 2 | 0 | 34ms |
| โ | TokenRefreshInterceptorTests | 22 | 22 | 0 | 5.77s |
| โ | TokenRefreshTests | 25 | 25 | 0 | 172ms |
| โ | TokenRequestCredentialGuardTests | 13 | 13 | 0 | 73ms |
| โ | TokenRequestTests | 9 | 9 | 0 | 102ms |
| โ | TokenResponseTests | 21 | 21 | 0 | 293ms |
| โ | TypographyPresetTests | 21 | 21 | 0 | 148ms |
| โ | TypographyServiceTests | 31 | 31 | 0 | 822ms |
| โ | TypographySettingsViewModelTests | 27 | 27 | 0 | 535ms |
| โ | UIColor_NYPLAdditionsTests | 1 | 1 | 0 | 4ms |
| โ | URLBackupExclusionTests | 3 | 3 | 0 | 12ms |
| โ | URLExtensionTests | 16 | 16 | 0 | 169ms |
| โ | URLExtensionsTests | 6 | 6 | 0 | 87ms |
| โ | URLRequestExtensionsCoverageTests | 3 | 3 | 0 | 5ms |
| โ | URLRequestExtensionsTests | 11 | 11 | 0 | 39ms |
| โ | URLRequestNYPLAdditionsTests | 11 | 11 | 0 | 47ms |
| โ | URLRequest_NYPLTests | 1 | 1 | 0 | 3ms |
| โ | URLResponseAuthenticationTests | 10 | 10 | 0 | 99ms |
| โ | URLResponseNYPLTests | 14 | 14 | 0 | 62ms |
| โ | URLSessionCredentialStorageTests | 3 | 3 | 0 | 185ms |
| โ | URLTypeTests | 2 | 2 | 0 | 9ms |
| โ | URLValidationTests | 5 | 5 | 0 | 17ms |
| โ | UserAccountPublisherAuthStateTests | 5 | 5 | 0 | 40ms |
| โ | UserAccountPublisherTests | 11 | 11 | 0 | 354ms |
| โ | UserAccountValidationTests | 11 | 11 | 0 | 1.92s |
| โ | UserProfileDocumentTests | 7 | 7 | 0 | 57ms |
| โ | UserRetryTrackerTests | 10 | 10 | 0 | 23ms |
| Target | Coverage | Lines |
|---|---|---|
| Palace.app | 33990 / 79965 |
| Class | Test | Duration | |
|---|---|---|---|
| โ | AccessLintComplianceTests | testAudiobookLabel_isDescriptive | 3ms |
| โ | AccessLintComplianceTests | testBorrowAnnouncementStrings_areMeaningful | 2ms |
| โ | AccessLintComplianceTests | testDownloadAnnouncementStrings_areMeaningful | 2ms |
| โ | AccessLintComplianceTests | testExpandCollapseButton_labelsRoundTripOnStateFlip | 2ms |
| โ | AccessLintComplianceTests | testPDFToolbarButton_fallbackLabel_isDistinctFromOkLabel | 2ms |
| โ | AccessLintComplianceTests | testRetryAnnouncementStrings_areMeaningful | 2ms |
| โ | AccessLintComplianceTests | testReturnAnnouncementStrings_areMeaningful | 2ms |
| โ | AccessLintComplianceTests | testSearchAnnouncementStrings_areMeaningful | 6ms |
| โ | AccessLintComplianceTests | testSortFilterLabels_areDescriptive | 2ms |
| โ | AccessLintComplianceTests | testStatusAnnouncement_actionFailed_combinesTitleAndMessage | 3ms |
| โ | AccessLintComplianceTests | testStatusAnnouncement_errorOccurred_passesThrough | 5ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3594_borrowAndReturnAnnouncements_postMessages | 8ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3594_downloadAnnouncements_respectVoiceOverDisabled | 313ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3673_additionalResultsLoaded_announcesCount | 4ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3673_additionalResultsLoaded_zeroCount_doesNotAnnounce | 309ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3673_allAnnouncements_useAnnouncementNotificationType | 4ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3673_announceError_postsMessage | 6ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3673_announceMessage_postsArbitraryMessage | 19ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3673_announceStatus_combinesTitleAndMessage | 4ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3673_deduplication_allowsDifferentMessages | 4ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3673_deduplication_allowsRepeatAfterWindowExpires | 7ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3673_deduplication_crossMethod_sameText | 7ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3673_deduplication_rapidFireSameMessage_onlyOneAnnouncement | 3ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3673_deduplication_suppressesDuplicateWithinWindow | 11ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3673_emptyMessage_isNotPosted | 310ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3673_errorAnnouncements_respectVoiceOverDisabled | 307ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3673_searchAnnouncements_respectVoiceOverDisabled | 317ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3673_searchFailed_announcesFailure | 3ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3673_searchNoResults_announcesNoResults | 4ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3673_searchRerun_announcesUpdatedResults | 8ms |
| โ | AccessibilityAnnouncementCenterTests | testPP3673_searchResults_announcesResultCountAndQuery | 6ms |
| โ | AccessibilityLabelTests | testAccessibilityStrings_areNotEmpty | 2ms |
| โ | AccessibilityLabelTests | testAccessibilityStrings_formatStringsWork | 4ms |
| โ | AccessibilityLabelTests | testBookmarkLabels_existAndAreDifferent | 3ms |
| โ | AccessibilityLabelTests | testChapterNavigationLabels_exist | 4ms |
| โ | AccessibilityLabelTests | testExistingAccessibilityStrings_areNotEmpty | 2ms |
| โ | AccessibilityLabelTests | testExpandCollapseLabels_areDifferent | 2ms |
| โ | AccessibilityLabelTests | testFilterButtonLabel_changesWithCount | 2ms |
| โ | AccessibilityLabelTests | testPlayPauseLabels_areDifferent | 2ms |
| โ | AccessibilityLabelTests | testSortButtonLabel_changesWithSortOption | 5ms |
| โ | AccessibilityPreferencesTests | testButtonShapesEnabled_WhenEnabled_RoundTripsThroughCodable | 12ms |
| โ | AccessibilityPreferencesTests | testCodableRoundTrip_CustomPreferences | 2ms |
| โ | AccessibilityPreferencesTests | testCodableRoundTrip_DefaultPreferences | 2ms |
| โ | AccessibilityPreferencesTests | testCustomRotorActionsEnabled_Toggle | 2ms |
| โ | AccessibilityPreferencesTests | testDefaultPreferences_ButtonShapesOff | 2ms |
| โ | AccessibilityPreferencesTests | testDefaultPreferences_CustomRotorEnabled | 2ms |
| โ | AccessibilityPreferencesTests | testDefaultPreferences_HapticFeedbackOn | 2ms |
| โ | AccessibilityPreferencesTests | testDefaultPreferences_HasStandardVerbosity | 1ms |
| โ | AccessibilityPreferencesTests | testDefaultPreferences_HighContrastOff | 2ms |
| โ | AccessibilityPreferencesTests | testDefaultPreferences_ReducedMotionOff | 2ms |
| โ | AccessibilityPreferencesTests | testEquatable_DifferentValues | 2ms |
| โ | AccessibilityPreferencesTests | testEquatable_SameValues | 2ms |
| โ | AccessibilityPreferencesTests | testHapticFeedbackEnabled_Toggle | 2ms |
| โ | AccessibilityPreferencesTests | testHighContrastBoost_WhenEnabled_MakesPrefsUnequalToDefault | 2ms |
| โ | AccessibilityPreferencesTests | testPersistence_NoSavedData_ReturnsNil | 4ms |
| โ | AccessibilityPreferencesTests | testPersistence_SaveAndLoad | 5ms |
| โ | AccessibilityPreferencesTests | testReducedMotion_WhenEnabled_RoundTripsThroughCodable | 46ms |
| โ | AccessibilityPreferencesTests | testStorageKey_IsCorrect | 2ms |
| โ | AccessibilityPreferencesTests | testVerbosityMinimal_Description | 2ms |
| โ | AccessibilityPreferencesTests | testVerbosityMinimal_DisplayName | 2ms |
| โ | AccessibilityPreferencesTests | testVerbosityStandard_Description | 2ms |
| โ | AccessibilityPreferencesTests | testVerbosityStandard_DisplayName | 2ms |
| โ | AccessibilityPreferencesTests | testVerbosityVerbose_Description | 2ms |
| โ | AccessibilityPreferencesTests | testVerbosityVerbose_DisplayName | 2ms |
| โ | AccessibilityPreferencesTests | testVerbosity_AllCases | 2ms |
| โ | AccessibilityPreferencesTests | testVerbosity_CodableRoundTrip | 2ms |
| โ | AccessibilityServiceTests | testAccessibilityPreferencesCodable | 4ms |
| โ | AccessibilityServiceTests | testDefaultPreferences | 2ms |
| โ | AccessibilityServiceTests | testHapticDisabledWhenPreferenceOff | 4ms |
| โ | AccessibilityServiceTests | testHapticDisabledWithReducedMotion | 5ms |
| โ | AccessibilityServiceTests | testHighContrastEffective | 5ms |
| โ | AccessibilityServiceTests | testPreferencesPersistAcrossInstances | 5ms |
| โ | AccessibilityServiceTests | testPreferencesPublisher | 5ms |
| โ | AccessibilityServiceTests | testReducedMotionEffective | 14ms |
| โ | AccessibilityServiceTests | testUpdatePreferences | 4ms |
| โ | AccessibilityServiceTests | testVerbosityDescriptions | 3ms |
| โ | AccessibilityServiceTests | testVerbosityDisplayNames | 2ms |
| โ | AccountAuthDocCarryoverTests | testAccount_authenticationDocumentDidSet_createsDetails | 152ms |
| โ | AccountAuthDocCarryoverTests | testAccount_detailsPreserved_whenAuthDocCopiedToNewAccount | 148ms |
| โ | AccountAuthDocCarryoverTests | testAccount_detailsSyncPermission_defaultsToTrue | 143ms |
| โ | AccountAuthDocCarryoverTests | testAccount_multipleAccountsCarryover_matchesByUUID | 380ms |
| โ | AccountAuthDocCarryoverTests | testAccount_replacementWithoutCarryover_losesDetails | 150ms |
| โ | AccountAwareNetworkTests | testCancelNonEssentialTasks_CancelsActiveTasks | 32ms |
| โ | AccountAwareNetworkTests | testCancelNonEssentialTasks_DoesNotCrash_andLeavesExecutorFullyUsable | 38ms |
| โ | AccountAwareNetworkTests | testExecuteTokenRefresh_AcceptsAccountId | 14ms |
| โ | AccountAwareNetworkTests | testExecuteTokenRefresh_NilAccountId_BackwardCompatible | 28ms |
| โ | AccountAwareNetworkTests | testRefreshTokenAndResume_AcceptsAccountIdParameter | 13ms |
| โ | AccountAwareNetworkTests | testRefreshTokenAndResume_DefaultAccountId_BackwardCompatible | 11ms |
| โ | AccountAwareNetworkTests | testRefreshTokenAndResume_NilAccountId_DoesNotCrash | 14ms |
| โ | AccountAwareNetworkTests | testRequest_AccountIdParameter_AcceptsNil | 23ms |
| โ | AccountAwareNetworkTests | testRequest_AccountIdParameter_AcceptsSpecificId | 17ms |
| โ | AccountAwareNetworkTests | testRequest_CapturesCurrentAccountToken | 10ms |
| โ | AccountDetailCredentialStateTests | testIsSignedIn_OAuthRemainsSignedInWhenStateBecomesStale | 17ms |
| โ | AccountDetailCredentialStateTests | testIsSignedIn_SAMLUpdatesWhenStateBecomesStale | 21ms |
| โ | AccountDetailCredentialStateTests | testIsSignedIn_falseWhenSAMLCredentialsStale | 5ms |
| โ | AccountDetailCredentialStateTests | testIsSignedIn_trueWhenLoggedIn | 5ms |
| โ | AccountDetailCredentialStateTests | testIsSignedIn_trueWhenOAuthCredentialsStale | 6ms |
| โ | AccountDetailCredentialStateTests | testIsSignedIn_updatesAfterSAMLReauthentication | 9ms |
| โ | AccountDetailCredentialStateTests | testNeedsReauthentication_trueWhenCredentialsStale | 5ms |
| โ | AccountDetailPINVisibilityTests | testAccountDidChangeViaNotification_ClearsCredentialsOnLogout | 43ms |
| โ | AccountDetailPINVisibilityTests | testBusinessLogicDidCancelSignIn_ClearsLoadingAndSigningOut | 20ms |
| โ | AccountDetailPINVisibilityTests | testBusinessLogicDidCompleteSignIn_ClearsLoadingAndSigningOut | 22ms |
| โ | AccountDetailPINVisibilityTests | testBusinessLogicDidFinishDeauthorizing_ClearsLoadingAndSigningOut | 21ms |
| โ | AccountDetailPINVisibilityTests | testBusinessLogicDidReceiveCredentials_SetsLoadingTrue | 46ms |
| โ | AccountDetailPINVisibilityTests | testBusinessLogicSignOutError_401ShowsUnexpectedCredentialsAlert | 28ms |
| โ | AccountDetailPINVisibilityTests | testBusinessLogicSignOutError_WithErrorUsesLocalizedDescription | 33ms |
| โ | AccountDetailPINVisibilityTests | testBusinessLogicValidationError_CancelledErrorClearsPin | 22ms |
| โ | AccountDetailPINVisibilityTests | testBusinessLogicValidationError_ShowsAlertAndClearsLoading | 27ms |
| โ | AccountDetailPINVisibilityTests | testBusinessLogicWillSignIn_NonOAuth_SetsLoadingTrueAndClearsSigningOut | 23ms |
| โ | AccountDetailPINVisibilityTests | testBusinessLogicWillSignOut_SetsLoadingAndSigningOut | 24ms |
| โ | AccountDetailPINVisibilityTests | testCellType_HashableInSet | 26ms |
| โ | AccountDetailPINVisibilityTests | testCellType_InfoHeaderEqualityByText | 28ms |
| โ | AccountDetailPINVisibilityTests | testCellType_SimpleCasesEqual | 21ms |
| โ | AccountDetailPINVisibilityTests | testContext_ReturnsSettingsTab | 27ms |
| โ | AccountDetailPINVisibilityTests | testLibraryLogo_MatchesSelectedAccountLogo | 38ms |
| โ | AccountDetailPINVisibilityTests | testPINVisibility_DefaultsToHidden | 24ms |
| โ | AccountDetailPINVisibilityTests | testPINVisibility_IndependentOfCredentialChanges | 21ms |
| โ | AccountDetailPINVisibilityTests | testPINVisibility_ToggleMultipleTimes | 23ms |
| โ | AccountDetailPINVisibilityTests | testPinComputed_EmptyReturnsEmptyString | 38ms |
| โ | AccountDetailPINVisibilityTests | testRefreshSignInState_ReloadsTableWhenStateChanges | 29ms |
| โ | AccountDetailPINVisibilityTests | testSelectAuthMethod_ClearsIDPAndSetsSelectedAuth | 26ms |
| โ | AccountDetailPINVisibilityTests | testSignIn_WhenAlreadySignedIn_SetsIsSigningOutTrue | 23ms |
| โ | AccountDetailPINVisibilityTests | testUpdateSync_WritesToAccountDetails | 31ms |
| โ | AccountDetailPINVisibilityTests | testUsernameComputed_EmptyReturnsNil | 26ms |
| โ | AccountDetailSignOutConfirmationTests | testConfirmSignOut_WhenSignedIn_DoesNotImmediatelyDeauthorize | 63ms |
| โ | AccountDetailSignOutConfirmationTests | testMakeSignOutConfirmationAlert_HasDestructiveSignOutAndCancelActions | 17ms |
| โ | AccountDetailViewModelGapTests | testAccountDetailViewModel_updateSync_setsPermission | 113ms |
| โ | AccountDetailViewModelTests | testAlertPropertiesUpdate | 6ms |
| โ | AccountDetailViewModelTests | testBusinessLogic_IsInitialized | 18ms |
| โ | AccountDetailViewModelTests | testCanSignInWithBothCredentials | 5ms |
| โ | AccountDetailViewModelTests | testCanSignInWithEmptyCredentials | 6ms |
| โ | AccountDetailViewModelTests | testCanSignInWithOnlyUsername | 6ms |
| โ | AccountDetailViewModelTests | testCanSignIn_WithSpecialCharacters | 6ms |
| โ | AccountDetailViewModelTests | testCanSignIn_WithWhitespaceOnlyUsername | 6ms |
| โ | AccountDetailViewModelTests | testClearCredentials_WorksIndependently | 7ms |
| โ | AccountDetailViewModelTests | testCredentialFields_AreIndependent | 5ms |
| โ | AccountDetailViewModelTests | testInitialPublishedPropertiesState | 6ms |
| โ | AccountDetailViewModelTests | testIsPINHiddenDefaultsToTrue | 21ms |
| โ | AccountDetailViewModelTests | testIsSyncEnabledToggle | 5ms |
| โ | AccountDetailViewModelTests | testLibraryNameReturnsAccountName | 28ms |
| โ | AccountDetailViewModelTests | testMultipleAlerts_CanBeShown | 4ms |
| โ | AccountDetailViewModelTests | testPinTextUpdate | 6ms |
| โ | AccountDetailViewModelTests | testSelectedAccountMatchesInitialized | 12ms |
| โ | AccountDetailViewModelTests | testShowBarcode_WhenEnabled_TriggerObjectWillChange | 5ms |
| โ | AccountDetailViewModelTests | testTogglePINVisibility | 7ms |
| โ | AccountDetailViewModelTests | testUsernameTextUpdate | 7ms |
| โ | AccountDetailsURLTests | testDebugDescription_ReflectsSupportsSimplyESync_WhenUserProfileUrlPresent | 452ms |
| โ | AccountDetailsURLTests | testDefaultAuth_WithOAuthAndBasic_PrefersBasicOverOAuth | 7ms |
| โ | AccountDetailsURLTests | testEulaIsAccepted_DefaultIsFalse | 3ms |
| โ | AccountDetailsURLTests | testEulaIsAccepted_RoundTrips_ThroughUserDefaults | 8ms |
| โ | AccountDetailsURLTests | testGetLicenseURL_AfterSettingMultipleTypes_ReturnsCorrectURLs | 10ms |
| โ | AccountDetailsURLTests | testGetLicenseURL_WhenNotSet_ReturnsNil | 25ms |
| โ | AccountDetailsURLTests | testSetURL_ForAcknowledgements_StoresURL | 59ms |
| โ | AccountDetailsURLTests | testSetURL_ForAnnotations_StoresURL | 10ms |
| โ | AccountDetailsURLTests | testSetURL_ForContentLicenses_StoresURL | 24ms |
| โ | AccountDetailsURLTests | testSetURL_ForEULA_StoresURL | 57ms |
| โ | AccountDetailsURLTests | testSetURL_ForPrivacyPolicy_StoresURL | 5ms |
| โ | AccountDetailsURLTests | testSetURL_OverwritesPreviousURL | 11ms |
| โ | AccountDetailsURLTests | testSetURL_PersistsToUserDefaults | 16ms |
| โ | AccountDetailsURLTests | testSyncPermissionGranted_DefaultIsTrue | 5ms |
| โ | AccountDetailsURLTests | testSyncPermissionGranted_ToggleOffThenOn_PersistsViaUserDefaults | 12ms |
| โ | AccountDetailsURLTests | testUserAboveAgeLimit_DefaultIsFalse | 3ms |
| โ | AccountDetailsURLTests | testUserAboveAgeLimit_RoundTrips_ThroughUserDefaults | 10ms |
| โ | AccountModelGapTests | testAccountDetails_defaultAuth_prefersNonOAuth | 100ms |
| โ | AccountModelGapTests | testAccountDetails_eulaIsAccepted_persistsAcrossObjectRecreation | 101ms |
| โ | AccountModelGapTests | testAccountDetails_initFromAuthDoc_populatesAuthMethods | 130ms |
| โ | AccountModelGapTests | testAccountDetails_setAndGetLicenseURL_roundTrips | 125ms |
| โ | AccountModelGapTests | testAccountDetails_syncPermissionGranted_persistsAcrossObjectRecreation | 138ms |
| โ | AccountModelGapTests | testAccount_hasSupportOption_reflectsSupportAvailability | 129ms |
| โ | AccountModelGapTests | testAccount_initFromPublication_mapsPropertiesCorrectly | 99ms |
| โ | AccountModelGapTests | testAccount_loansUrl_delegatesToDetails | 128ms |
| โ | AccountModelGapTests | testAuthentication_NSCoding_roundTrip | 169ms |
| โ | AccountModelTests | testAccount_DebugDescription_ContainsName | 3ms |
| โ | AccountModelTests | testAccount_InitFromPublication_DefaultLogo_IsPlaceholder | 1ms |
| โ | AccountModelTests | testAccount_InitFromPublication_DetailsAreNil | 2ms |
| โ | AccountModelTests | testAccount_InitFromPublication_HasUpdatedToken_IsFalse | 2ms |
| โ | AccountModelTests | testAccount_InitFromPublication_SetsAuthDocUrl | 2ms |
| โ | AccountModelTests | testAccount_InitFromPublication_SetsCatalogUrl | 2ms |
| โ | AccountModelTests | testAccount_InitFromPublication_SetsHomePageUrl | 2ms |
| โ | AccountModelTests | testAccount_InitFromPublication_SetsName | 1ms |
| โ | AccountModelTests | testAccount_InitFromPublication_SetsSubtitle | 2ms |
| โ | AccountModelTests | testAccount_InitFromPublication_SetsSupportEmail | 2ms |
| โ | AccountModelTests | testAccount_InitFromPublication_SetsSupportURL | 6ms |
| โ | AccountModelTests | testAccount_InitFromPublication_SetsUUID | 3ms |
| โ | AccountModelTests | testLoadAuthenticationDocument_WithNilUrl_CompletesWithFalse | 15ms |
| โ | AccountModelTests | testLoadLogo_WithCachedImage_UsesCachedImage | 4ms |
| โ | AccountModelTests | testLoadLogo_WithNilLogoUrl_DoesNotCrash | 2ms |
| โ | AccountModelTests | testLoansUrl_WhenDetailsNil_ReturnsNil | 2ms |
| โ | AccountProfileDocumentTests | testGetProfileDocument_WhenUserAccountHasNoCredentials_CompletesWithNil_DoesNotFetch | 8ms |
| โ | AccountProfileDocumentTests | testGetProfileDocument_WithDetailsButNilProfileUrl_CompletesWithNil | 7ms |
| โ | AccountProfileDocumentTests | testGetProfileDocument_WithNilDetails_CompletesWithNil | 5ms |
| โ | AccountSwitchCleanupTests | testBookCellModelCache_ClearsOnAccountChange | 58ms |
| โ | AccountSwitchCleanupTests | testCancelNonEssentialTasks_CalledMultipleTimes_ExecutorIdempotent | 34ms |
| โ | AccountSwitchCleanupTests | testCancelNonEssentialTasks_WithNoActiveTasks_ExecutorRemainsUsable | 53ms |
| โ | AccountSwitchCleanupTests | testPauseAllTasks_AfterCancel_ResumeAcceptsNewRequests | 11ms |
| โ | AccountSwitchCleanupTests | testSharedAccount_RapidSwitching_DoesNotCrash | 3ms |
| โ | AccountSwitchCleanupTests | testSharedAccount_SwitchingUUIDs_DoesNotCrash | 3ms |
| โ | AccountSwitchCleanupTests | testSharedAccount_WithNilUUID_DoesNotCrash | 2ms |
| โ | AccountSwitchCleanupTests | testSharedAccount_WithSpecificUUID_DoesNotCrash | 4ms |
| โ | AccountSwitchIntegrationTests | testAccountSwitch_ClearsBookRegistry | 9ms |
| โ | AccountSwitchIntegrationTests | testAccountSwitch_ClearsCachedCredentials | 21ms |
| โ | AccountSwitchIntegrationTests | testAccountSwitch_InvalidatesCatalogCache | 317ms |
| โ | AccountSwitchIntegrationTests | testAccountSwitch_PostsCurrentAccountDidChangeNotification | 45ms |
| โ | AccountSwitchIntegrationTests | testAccountSwitch_StopsPendingNetworkRequests | 61ms |
| โ | AccountSwitchIntegrationTests | testMultipleRapidSwitches_DoNotCorruptRegistry | 6ms |
| โ | AccountSwitchIntegrationTests | testNewAccount_LoadsFreshCatalog | 71ms |
| โ | AccountSwitchIntegrationTests | testSwitchToSameAccount_IsIdempotent | 4ms |
| โ | AccountsManagerCacheTests | testAccountMainFeedURL_NotOverwrittenWithNil_WhenCurrentAccountMissing | 108ms |
| โ | AccountsManagerCacheTests | testCacheDataAndMetadata_AreWrittenTogether | 185ms |
| โ | AccountsManagerCacheTests | testCacheExpiry_OldCacheIsNotUsed | 7ms |
| โ | AccountsManagerCacheTests | testCatalogCacheMetadata_Codable_EncodesAndDecodes | 5ms |
| โ | AccountsManagerCacheTests | testCatalogCacheMetadata_IsExpired_ReturnsFalseJustUnder24Hours | 7ms |
| โ | AccountsManagerCacheTests | testCatalogCacheMetadata_IsExpired_ReturnsFalseWhenRecent | 2ms |
| โ | AccountsManagerCacheTests | testCatalogCacheMetadata_IsExpired_ReturnsTrueAfter24Hours | 2ms |
| โ | AccountsManagerCacheTests | testCatalogCacheMetadata_IsStale_ReturnsFalseJustUnder6Hours | 2ms |
| โ | AccountsManagerCacheTests | testCatalogCacheMetadata_IsStale_ReturnsFalseWhenFresh | 14ms |
| โ | AccountsManagerCacheTests | testCatalogCacheMetadata_IsStale_ReturnsTrueAfter6Hours | 16ms |
| โ | AccountsManagerCacheTests | testLoadCatalogs_WhenCacheExists_CompletesWithCachedData | 137ms |
| โ | AccountsManagerCacheTests | testLoadCatalogs_WhenCacheExpired_ReturnsNil | 6ms |
| โ | AccountsManagerCacheTests | testLoadCatalogs_WhenCacheStale_ReturnsDataButMarkedStale | 7ms |
| โ | AccountsManagerCacheTests | testNotification_TPPCatalogDidLoad_IsDeliveredToObserver | 8ms |
| โ | AccountsManagerCacheTests | testReadCacheMetadata_ReturnsNilWhenNotExists | 3ms |
| โ | AccountsManagerCacheTests | testWriteAndReadCacheMetadata | 13ms |
| โ | AccountsManagerGapTests | testAccountsManager_accountByUUID_returnsNilForUnknownUUID | 9ms |
| โ | AccountsManagerGapTests | testAccountsManager_currentAccountId_persistsToUserDefaults | 3ms |
| โ | AccountsManagerGapTests | testAccountsManager_tppAccountUUID_isNotEmpty | 2ms |
| โ | AccountsManagerHelpersTests | test_isCacheStale_freshMetadata_returnsFalse | 2ms |
| โ | AccountsManagerHelpersTests | test_isCacheStale_nilMetadata_returnsTrue | 4ms |
| โ | AccountsManagerHelpersTests | test_isCacheStale_serverMaxAgeRespected | 2ms |
| โ | AccountsManagerHelpersTests | test_isCacheStale_staleMetadata_returnsTrue | 3ms |
| โ | AccountsManagerHelpersTests | test_shouldFinishSwitchingImmediately_bothNil_returnsTrue | 3ms |
| โ | AccountsManagerHelpersTests | test_shouldFinishSwitchingImmediately_differentAccounts_returnsFalse | 2ms |
| โ | AccountsManagerHelpersTests | test_shouldFinishSwitchingImmediately_newNilWithExistingPrevious_returnsFalse | 3ms |
| โ | AccountsManagerHelpersTests | test_shouldFinishSwitchingImmediately_previousNil_returnsTrue | 4ms |
| โ | AccountsManagerHelpersTests | test_shouldFinishSwitchingImmediately_sameAccount_returnsTrue | 8ms |
| โ | AccountsManagerHelpersTests | test_shouldPopToRoot_onePath_returnsTrue | 2ms |
| โ | AccountsManagerHelpersTests | test_shouldPopToRoot_threePath_returnsTrue | 10ms |
| โ | AccountsManagerHelpersTests | test_shouldPopToRoot_zeroPath_returnsFalse | 5ms |
| โ | AccountsManagerTests | testAccountChangeNotification_HasCorrectName | 94ms |
| โ | AccountsManagerTests | testAccountDetails_DefaultAuth_ReturnsNonOAuthFirst | 135ms |
| โ | AccountsManagerTests | testAccountDetails_NeedsAgeCheck_WhenCOPPAAuthExists | 93ms |
| โ | AccountsManagerTests | testAccountDetails_SupportsReservations | 87ms |
| โ | AccountsManagerTests | testAccountDetails_SupportsSimplyESync | 103ms |
| โ | AccountsManagerTests | testAccountLookup_FromMultipleThreads_DoesNotCrash | 360ms |
| โ | AccountsManagerTests | testAccount_AuthenticationDocumentUrl_IsValid | 92ms |
| โ | AccountsManagerTests | testAccount_BarcodeAuthentication_IsBasic | 93ms |
| โ | AccountsManagerTests | testAccount_CatalogUrl_IsValid | 110ms |
| โ | AccountsManagerTests | testAccount_HasAuthenticationTypes | 94ms |
| โ | AccountsManagerTests | testAccount_HasRequiredProperties | 133ms |
| โ | AccountsManagerTests | testAccount_OAuthAuthentication_IsOAuth | 149ms |
| โ | AccountsManagerTests | testAccount_SAMLAuthentication_IsSAML | 146ms |
| โ | AccountsManagerTests | testAccount_WithEmptyUUID_ReturnsNil | 76ms |
| โ | AccountsManagerTests | testAccount_WithExistingUUID_ReturnsAccount | 111ms |
| โ | AccountsManagerTests | testAccount_WithNonExistentUUID_CreatesNewAccount | 96ms |
| โ | AccountsManagerTests | testAccount_WithNonExistentUUID_ReturnsNil | 96ms |
| โ | AccountsManagerTests | testAccount_WithValidUUID_ReturnsAccount | 168ms |
| โ | AccountsManagerTests | testAccountsHaveLoaded_IsConsistentWithAccountsQuery | 122ms |
| โ | AccountsManagerTests | testAccountsManager_ConformsToTPPLibraryAccountsProvider | 88ms |
| โ | AccountsManagerTests | testAccountsManager_HasAgeCheck | 95ms |
| โ | AccountsManagerTests | testAccountsManager_HasNYPLAccountUUID | 99ms |
| โ | AccountsManagerTests | testAccountsManager_WithEmptyUUID_ReturnsNil | 97ms |
| โ | AccountsManagerTests | testAccounts_FromMultipleThreads_DoesNotCrash | 119ms |
| โ | AccountsManagerTests | testAccounts_WithNilKey_ReturnsCurrentAccountSet | 120ms |
| โ | AccountsManagerTests | testAccounts_WithNonExistentKey_ReturnsEmptyArray | 133ms |
| โ | AccountsManagerTests | testAuthenticationType_Basic_DoesNotRequireCatalogAuthentication | 128ms |
| โ | AccountsManagerTests | testAuthenticationType_Basic_NeedsAuth | 80ms |
| โ | AccountsManagerTests | testAuthenticationType_OAuth_NeedsAuth | 86ms |
| โ | AccountsManagerTests | testAuthenticationType_OAuth_RequiresCatalogAuthentication | 85ms |
| โ | AccountsManagerTests | testAuthenticationType_SAML_NeedsAuth | 136ms |
| โ | AccountsManagerTests | testCatalogDidLoadNotification_CanBeObservedWithCombine | 209ms |
| โ | AccountsManagerTests | testCatalogDidLoad_NotificationExists | 95ms |
| โ | AccountsManagerTests | testClearCache_DoesNotThrow | 98ms |
| โ | AccountsManagerTests | testCreateOPDS2Publication_ReturnsValidPublication | 141ms |
| โ | AccountsManagerTests | testCurrentAccountId_AfterExplicitClear_ReturnsNilFromDefaults | 176ms |
| โ | AccountsManagerTests | testCurrentAccountId_PersistsToUserDefaults | 105ms |
| โ | AccountsManagerTests | testCurrentAccount_WhenChanged_PostsNotification | 93ms |
| โ | AccountsManagerTests | testLoadCatalogs_PostsCatalogDidLoadNotification | 106ms |
| โ | AccountsManagerTests | testMockLibraryAccountProvider_CurrentAccountId_MatchesUUID | 96ms |
| โ | AccountsManagerTests | testMockLibraryAccountProvider_CurrentAccount_ReturnsTPPAccount | 129ms |
| โ | AccountsManagerTests | testMultipleNotificationObservers_AllReceiveAccountChange | 148ms |
| โ | AccountsManagerTests | testNotificationObserver_ForAccountChange_CanBeAdded | 78ms |
| โ | AccountsManagerTests | testNotification_CanBeObservedWithCombine | 117ms |
| โ | AccountsManagerTests | testShared_ReturnsSameInstance | 78ms |
| โ | AccountsManagerTests | testTPPAccountUUIDs_ContainsExpectedAccounts | 110ms |
| โ | AccountsManagerTests | testTPPNationalAccountUUIDs_ContainsPalaceBookshelf | 106ms |
| โ | AccountsManagerTests | testUpdateAccountSet_WithCompletion_CallsCompletion | 87ms |
| โ | AccountsManagerTests | testUpdateAccountSet_WithNilCompletion_DoesNotCrash | 85ms |
| โ | AccountsManagerTests | testUseBetaDidChange_NotificationExists | 104ms |
| โ | AccountsManagerTests | testUseBetaDidChange_PostsNotificationWhenSettingChanges | 86ms |
| โ | AdobeCertificateGapTests | testAdobeCertificate_expirationDate_computesFromTimestamp | 4ms |
| โ | AdobeCertificateGapTests | testAdobeCertificate_expirationDate_nilWhenNoTimestamp | 6ms |
| โ | AdobeCertificateGapTests | testAdobeCertificate_hasExpired_falseForFutureDate | 4ms |
| โ | AdobeCertificateGapTests | testAdobeCertificate_hasExpired_falseWhenNoExpiration | 5ms |
| โ | AdobeCertificateGapTests | testAdobeCertificate_hasExpired_trueForPastDate | 2ms |
| โ | AdobeCertificateGapTests | testAdobeCertificate_initFromData_decodesValidJSON | 3ms |
| โ | AdobeCertificateGapTests | testAdobeCertificate_initFromData_returnsNilForInvalidJSON | 17ms |
| โ | AdobeDRMErrorGapTests | testAdobeDRMError_conformsToLocalizedError | 2ms |
| โ | AdobeDRMErrorGapTests | testAdobeDRMError_errorDescription_isNotEmpty | 2ms |
| โ | AdobeDRMErrorGapTests | testAdobeDRMError_expiredCase_exists | 7ms |
| โ | AdobeDRMHandlerTests | testHandleCancellation_setsRegistryStateAndBroadcasts | 15ms |
| โ | AdobeDRMHandlerTests | testHandleFulfillment_copyFailure_failsWithAlert | 12ms |
| โ | AdobeDRMHandlerTests | testHandleFulfillment_didFinishCopySucceeded_marksSuccessfulAndPersistsRights | 7ms |
| โ | AdobeDRMHandlerTests | testHandleFulfillment_didFinishDownloadFalse_failsAndDoesNotMarkSuccessful | 18ms |
| โ | AdobeDRMHandlerTests | testHandleFulfillment_missingAdeptToURL_failsWithAlert | 11ms |
| โ | AdobeDRMHandlerTests | testHandleFulfillment_missingDestinationURL_failsWithAlert | 15ms |
| โ | AdobeDRMHandlerTests | testHandleFulfillment_nonReturnable_skipsFulfillmentIdPersistence | 7ms |
| โ | AdobeDRMHandlerTests | testHandleFulfillment_returnableButNoFulfillmentID_skipsPersistence | 7ms |
| โ | AdobeDRMHandlerTests | testHandleFulfillment_undecodableRightsData_returnsEarlyWithoutSideEffects | 8ms |
| โ | AdobeDRMHandlerTests | testHandleFulfillment_unknownBookIdentifier_returnsEarlyWithoutSideEffects | 6ms |
| โ | AdobeDRMHandlerTests | testHandleNoAuthorization_doesNotMutateRegistryOrAlert | 7ms |
| โ | AdobeDRMHandlerTests | testProgressForwarding_invokesDelegateWithProgressAndTag | 8ms |
| โ | AdobeDRMServiceGapTests | testAdobeDRMService_isReady_returnsBoolean | 6ms |
| โ | AdobeDRMServiceGapTests | testAdobeDRMService_shared_isAccessible | 4ms |
| โ | AlertModelCoverageTests | testAlertModel_basicProperties | 2ms |
| โ | AlertModelCoverageTests | testAlertModel_customButtonTitle | 2ms |
| โ | AlertModelCoverageTests | testAlertModel_maxRetriesExceeded | 2ms |
| โ | AlertModelCoverageTests | testAlertModel_retryable | 1ms |
| โ | AlertModelCoverageTests | testAlertModel_retryableWithCancel | 3ms |
| โ | AlertModelCoverageTests | testAlertModel_uniqueId | 1ms |
| โ | AlertModelRetryTests | testAlertModel_eachInstanceHasUniqueIdentity | 24ms |
| โ | AlertModelRetryTests | testDefaultAlertModel_hasExpectedDefaults | 2ms |
| โ | AlertModelRetryTests | testHalfSheetBranching_secondaryNilSelectsOKOnly_secondaryNonNilSelectsRetryCancel | 3ms |
| โ | AlertModelRetryTests | testMaxRetriesExceeded_factoryShapesAlertForOKOnlyBranch | 2ms |
| โ | AlertModelRetryTests | testRetryable_factoryShapesAlertForRetryPlusCancelBranch | 2ms |
| โ | AlertModelRetryTests | testRetryable_invokesRetryActionAndCancelActionOnTheCorrectSlots | 6ms |
| โ | AlertModelRetryTests | testRetryable_omittedCancelActionIsSafeNoOp | 2ms |
| โ | AlertModelTests | testAlertModel_StoresProvidedValues | 2ms |
| โ | AlertModelTests | testAlertModel_SyncingAlertStrings_AreNotEmpty | 2ms |
| โ | AlertUtilsTests | testAlertWithDestructiveStyle | 6ms |
| โ | AlertUtilsTests | testAlertWithDetailsHasOKButtonWhenNoRetry | 8ms |
| โ | AlertUtilsTests | testAlertWithDetailsHasRetryAndCancelWhenRetryProvided | 7ms |
| โ | AlertUtilsTests | testAlertWithDetailsHasViewErrorDetailsButton | 4ms |
| โ | AlertUtilsTests | testAlertWithErrorHavingNoDescription | 4ms |
| โ | AlertUtilsTests | testAlertWithNilError | 4ms |
| โ | AlertUtilsTests | testAlertWithNilMessageAndError_ErrorWins | 7ms |
| โ | AlertUtilsTests | testAlertWithNonURLError | 4ms |
| โ | AlertUtilsTests | testAlertWithTitleAndMessage | 4ms |
| โ | AlertUtilsTests | testAlert_explicitMessageOverridesErrorDerivedMessage | 5ms |
| โ | AlertUtilsTests | testAlert_nilMessage_yieldsEmptyStringWithoutAffectingTitle | 5ms |
| โ | AlertUtilsTests | testAlert_nsurlErrors_alwaysProduceNonEmptyMessage | 33ms |
| โ | AlertUtilsTests | testAlert_nsurlErrors_keyedMessages_areDistinguishable | 12ms |
| โ | AlertUtilsTests | testAlert_titleFallback_handlesNilEmptyAndPassThrough | 11ms |
| โ | AlertUtilsTests | testPresentFromViewControllerOrNilWithNilAlert | 208ms |
| โ | AlertUtilsTests | testSetProblemDocumentAppend | 7ms |
| โ | AlertUtilsTests | testSetProblemDocumentReplace | 15ms |
| โ | AlertUtilsTests | testSetProblemDocumentWithNilController | 2ms |
| โ | AlertUtilsTests | testSetProblemDocumentWithNilDocument | 4ms |
| โ | AlertUtilsTests | testSetProblemDocument_partialDocumentReplacesOnlyPresentFields | 9ms |
| โ | AnnotationContractTests | testBookmarkAndReadingPosition_HaveDifferentMotivations | 48ms |
| โ | AnnotationContractTests | testParseAnnotationContainer | 4ms |
| โ | AnnotationContractTests | testReadingPosition_HasEPUBCFISelector | 3ms |
| โ | AnnotationDeviceIDTests | testAnnotationDeviceID_WhenNoAdobeDRM_ReturnsFirebaseDeviceID | 2ms |
| โ | AnnotationDeviceIDTests | testAnnotationDeviceID_isStableAndDerivedFromFirebaseInTestEnvironment | 4ms |
| โ | AnnotationPostResponseContractTests | testAnnotationPostResponse_HasRequiredFields | 11ms |
| โ | AnnouncementChainTests | test_chainAttachmentIndices_fiveAnnouncements_returnsFourChainedPairs | 3ms |
| โ | AnnouncementChainTests | test_chainAttachmentIndices_oneAnnouncement_returnsEmpty | 2ms |
| โ | AnnouncementChainTests | test_chainAttachmentIndices_threeAnnouncements_returnsTwoChainedPairs | 5ms |
| โ | AnnouncementChainTests | test_chainAttachmentIndices_twoAnnouncements_returnsOnePair | 6ms |
| โ | AnnouncementChainTests | test_chainAttachmentIndices_zeroAnnouncements_returnsEmpty | 8ms |
| โ | AnnouncementTests | testAnnouncement_decodesValidJSON | 5ms |
| โ | AnnouncementTests | testAnnouncement_withMissingContent_throwsError | 2ms |
| โ | AnnouncementTests | testAnnouncement_withMissingId_throwsError | 2ms |
| โ | AnonymousBorrowBaselineFixtureTests | test_02_afterAllowNotif_libraryPickerShowsPalaceBookshelfAtTop | 5ms |
| โ | AnonymousBorrowBaselineFixtureTests | test_02_afterAllowNotif_notifPermissionOverlayDismissed | 5ms |
| โ | AnonymousBorrowBaselineFixtureTests | test_03_catalog_anonymousFlowDoesNotShowSignInModal | 4ms |
| โ | AnonymousBorrowBaselineFixtureTests | test_03_catalog_tabBarHasFourTabs | 3ms |
| โ | AnonymousBorrowBaselineFixtureTests | test_03_catalog_threeLanesRenderInOrder | 6ms |
| โ | AnonymousBorrowBaselineFixtureTests | test_03_catalog_titleIsPalaceBookshelf | 3ms |
| โ | AnonymousBorrowBaselineFixtureTests | test_04_bookDetail_borrowButtonAppearsAboveDescription | 14ms |
| โ | AnonymousBorrowBaselineFixtureTests | test_04_bookDetail_borrowButtonPresent | 7ms |
| โ | AnonymousBorrowBaselineFixtureTests | test_04_bookDetail_preBorrowDoesNotShowReadOrRemove | 4ms |
| โ | AnonymousBorrowBaselineFixtureTests | test_05_afterBorrow_borrowButtonGoneReadAndRemoveAppear | 3ms |
| โ | AnonymousBorrowBaselineFixtureTests | test_05_afterBorrow_libraryAttributionShowsPalaceBookshelf | 4ms |
| โ | AnonymousBorrowBaselineFixtureTests | test_06_myBooks_borrowedBookAppears | 3ms |
| โ | AnonymousBorrowBaselineFixtureTests | test_06_myBooks_sortIndicatorShowsTitle | 7ms |
| โ | AnonymousBorrowCandidateFixtureTests | test_03_catalog_anonymousFlowDoesNotShowSignInModal | 5ms |
| โ | AnonymousBorrowCandidateFixtureTests | test_03_catalog_tabBarHasFourTabs | 3ms |
| โ | AnonymousBorrowCandidateFixtureTests | test_03_catalog_threeLanesRenderInOrder | 4ms |
| โ | AnonymousBorrowCandidateFixtureTests | test_03_catalog_titleIsPalaceBookshelf | 11ms |
| โ | AnonymousBorrowCandidateFixtureTests | test_05_afterBorrow_borrowButtonGoneReadAndRemoveAppear | 6ms |
| โ | AnonymousBorrowCandidateFixtureTests | test_06_myBooks_borrowedBookAppears | 4ms |
| โ | AnonymousBorrowDeltaTests | test_03_catalog_structureMatchesBetweenVersions | 6ms |
| โ | AnonymousBorrowDeltaTests | test_06_myBooks_postBorrowStateMatchesBetweenVersions | 21ms |
| โ | AppContainerTests | testEnvironmentValues_appContainerDefault_matchesProductionFactory | 9ms |
| โ | AppContainerTests | testInit_twoContainersWithDifferentRegistries_remainIndependent | 9ms |
| โ | AppContainerTests | testInit_withMockBookRegistry_exposesTheMockNotTheProductionRegistry | 5ms |
| โ | AppContainerTests | testProduction_handsOutStableAppScopedRegistry | 5ms |
| โ | AppHealthViewModelTests | testAppLaunchStatusThresholds | 211ms |
| โ | AppHealthViewModelTests | testHealthMetricItemProperties | 11ms |
| โ | AppHealthViewModelTests | testInitialState | 6ms |
| โ | AppHealthViewModelTests | testLoadDataIncludesMemoryMetric | 214ms |
| โ | AppHealthViewModelTests | testLoadDataIncludesOfflineQueueMetrics | 233ms |
| โ | AppHealthViewModelTests | testLoadDataPopulatesMetrics | 227ms |
| โ | AppHealthViewModelTests | testOfflineQueueStatusUpdates | 223ms |
| โ | AppHealthViewModelTests | testPerformanceReportGenerated | 208ms |
| โ | AppLaunchTrackerExtendedTests | testAllMilestones_RecordedInChronologicalOrder | 46ms |
| โ | AppLaunchTrackerExtendedTests | testColdLaunch_AfterReset | 2ms |
| โ | AppLaunchTrackerExtendedTests | testDefaultIsColdLaunch | 2ms |
| โ | AppLaunchTrackerExtendedTests | testDuplicateMilestone_DoesNotCreateExtraEntries | 3ms |
| โ | AppLaunchTrackerExtendedTests | testDuplicateMilestone_OverwritesTimestamp | 58ms |
| โ | AppLaunchTrackerExtendedTests | testLaunchMilestone_AllCases | 4ms |
| โ | AppLaunchTrackerExtendedTests | testMarkWarmLaunch_ChangesType | 2ms |
| โ | AppLaunchTrackerExtendedTests | testMilestoneCount_MatchesRecordedCount | 2ms |
| โ | AppLaunchTrackerExtendedTests | testTimeBetween_NilWhenBothMissing | 4ms |
| โ | AppLaunchTrackerExtendedTests | testTimeBetween_NilWhenEndMissing | 2ms |
| โ | AppLaunchTrackerExtendedTests | testTimeBetween_NilWhenStartMissing | 26ms |
| โ | AppLaunchTrackerExtendedTests | testTimeToFirstFrame_NilWithoutFirstFrame | 5ms |
| โ | AppLaunchTrackerExtendedTests | testTimeToInteractive_NilWithoutCatalogLoaded | 3ms |
| โ | AppLaunchTrackerExtendedTests | testTimeToInteractive_NilWithoutProcessStart | 4ms |
| โ | AppLaunchTrackerExtendedTests | testTimeToInteractive_RequiresProcessStartAndCatalogLoaded | 36ms |
| โ | AppLaunchTrackerExtendedTests | testWarmLaunch_ReportsWithWarmType | 256ms |
| โ | AppLaunchTrackerTests | testCatalogLoadedReportsToMonitor | 1.42s |
| โ | AppLaunchTrackerTests | testDefaultLaunchTypeIsCold | 29ms |
| โ | AppLaunchTrackerTests | testRecordAllMilestones | 133ms |
| โ | AppLaunchTrackerTests | testRecordProcessStart | 3ms |
| โ | AppLaunchTrackerTests | testReset | 5ms |
| โ | AppLaunchTrackerTests | testTimeBetweenMilestones | 103ms |
| โ | AppLaunchTrackerTests | testTimeBetweenUnrecordedMilestones | 7ms |
| โ | AppLaunchTrackerTests | testTimeToFirstFrame | 44ms |
| โ | AppLaunchTrackerTests | testTimeToInteractive | 38ms |
| โ | AppLaunchTrackerTests | testWarmLaunchType | 7ms |
| โ | AppRouteTests | testAppRoute_Audio_IsHashable | 2ms |
| โ | AppRouteTests | testAppRoute_BookDetail_IsHashable | 2ms |
| โ | AppRouteTests | testAppRoute_DifferentTypes_NotEqual | 4ms |
| โ | AppRouteTests | testBookRoute_IsHashable | 5ms |
| โ | AppRouteTests | testSearchRoute_IsHashable | 2ms |
| โ | AppTabHostViewBadgeCountTests | test_computeReadyCount_emptyArray_returnsZero | 2ms |
| โ | AppTabHostViewBadgeCountTests | test_computeReadyCount_mixedReservedAndReady_returnsOnlyReadyCount | 17ms |
| โ | AppTabHostViewBadgeCountTests | test_computeReadyCount_oneReadyBook_returnsOne | 6ms |
| โ | AppTabHostViewBadgeCountTests | test_computeReadyCount_reservedBooksOnly_returnsZero | 8ms |
| โ | AppTabHostViewBadgeCountTests | test_computeReadyCount_threeReadyBooks_returnsThree | 8ms |
| โ | AppTabHostViewBadgeCountTests | test_computeReservedCount_emptyArray_returnsZero | 2ms |
| โ | AppTabHostViewBadgeCountTests | test_computeReservedCount_readyBooksOnly_returnsZero | 6ms |
| โ | AppTabHostViewBadgeCountTests | test_computeReservedCount_twoReservedBooks_returnsTwo | 8ms |
| โ | AppTabHostViewBadgeCountTests | test_shouldUpdateBadge_loadedOrSynced_returnsTrue | 2ms |
| โ | AppTabHostViewBadgeCountTests | test_shouldUpdateBadge_unloadedOrLoadingOrSyncing_returnsFalse | 2ms |
| โ | AppTabRouterCoverageTests | testAppTabRouterHub_weakRouterReference | 7ms |
| โ | AppTabRouterCoverageTests | testAppTabRouter_defaultIsCatalog | 3ms |
| โ | AppTabRouterCoverageTests | testAppTabRouter_publishesSelectionChanges | 6ms |
| โ | AppTabRouterCoverageTests | testAppTabRouter_sequentialTabChangesPreserveLastValue | 8ms |
| โ | AppTabRouterGapTests | testAppTabRouterHub_registeredRouterIsWeaklyHeld | 4ms |
| โ | AppTabRouterGapTests | testAppTabRouter_roundTripToDefaultEmitsTwoChangeEvents | 8ms |
| โ | AppTabRouterGapTests | testAppTabRouter_tabSwitchPublishesChangeEvent | 9ms |
| โ | ArrayExtensionsTests | testSafeSubscriptGet_NegativeIndex_ReturnsNil | 2ms |
| โ | ArrayExtensionsTests | testSafeSubscriptGet_OutOfBounds_ReturnsNil | 3ms |
| โ | ArrayExtensionsTests | testSafeSubscriptGet_StringArray_ReturnsElement | 4ms |
| โ | ArrayExtensionsTests | testSafeSubscriptGet_ValidIndex_ReturnsElement | 3ms |
| โ | ArrayExtensionsTests | testSafeSubscriptGet_emptyArray_returnsNilForAllIndices | 4ms |
| โ | ArrayExtensionsTests | testSafeSubscriptSet_updatesValidIndicesAndIgnoresInvalidWrites | 3ms |
| โ | AudioBookmarkGapTests | testAudioBookmark_copy_createsIndependentCopy | 2ms |
| โ | AudioBookmarkGapTests | testAudioBookmark_creation_storesBasicProperties | 2ms |
| โ | AudioBookmarkGapTests | testAudioBookmark_isSimilar_returnsFalseForDifferentChapter | 10ms |
| โ | AudioBookmarkGapTests | testAudioBookmark_isSimilar_returnsTrueForSameChapterPosition | 2ms |
| โ | AudioBookmarkGapTests | testAudioBookmark_toData_producesRoundTripData | 2ms |
| โ | AudioBookmarkGapTests | testAudioBookmark_toTPPBookLocation_producesValidLocation | 2ms |
| โ | AudioInterruptionLogicTests | testNoResume_whenNoShouldResume_andWasNotPlaying | 4ms |
| โ | AudioInterruptionLogicTests | testResume_phoneCallDeclinedScenario | 3ms |
| โ | AudioInterruptionLogicTests | testResume_siriInterruptionScenario | 2ms |
| โ | AudioInterruptionLogicTests | testResume_whenNoShouldResume_butWasPlaying | 2ms |
| โ | AudioInterruptionLogicTests | testResume_whenShouldResumeSet_andWasPlaying | 3ms |
| โ | AudioInterruptionLogicTests | testResume_whenShouldResumeSet_butWasNotPlaying | 8ms |
| โ | AudiobookAccessibilityTests | testAudiobookIndicator_labelExists | 3ms |
| โ | AudiobookAccessibilityTests | testPauseLabel_isDescriptive | 1ms |
| โ | AudiobookAccessibilityTests | testPlayLabel_isDescriptive | 3ms |
| โ | AudiobookAccessibilityTests | testPlayPauseLabel_changesWithState | 1ms |
| โ | AudiobookAccessibilityTests | testPlayPauseLabels_areDifferent | 3ms |
| โ | AudiobookAccessibilityTests | testSkipBackLabel_indicatesTimeUnit | 64ms |
| โ | AudiobookAccessibilityTests | testSkipBackLabel_isDescriptiveWithDuration | 2ms |
| โ | AudiobookBackgroundAudioTests | testContinuousPlayback_accumulatesCorrectly | 266ms |
| โ | AudiobookBackgroundAudioTests | testInterruptedPlayback_savesPartialTime | 23ms |
| โ | AudiobookBookmarkBusinessLogicTests | testBusinessLogic_canBeInitialized | 4ms |
| โ | AudiobookBookmarkBusinessLogicTests | testBusinessLogic_hasBookReference | 2ms |
| โ | AudiobookBookmarkBusinessLogicTests | testDebounce_DeallocDuringPendingWork_DoesNotCrash | 1.53s |
| โ | AudiobookBookmarkBusinessLogicTests | testDebounce_RapidCalls_OnlyLastSyncs | 1.09s |
| โ | AudiobookBookmarkBusinessLogicTests | testFlushPendingOperations_ExecutesPendingWork | 3ms |
| โ | AudiobookBookmarkBusinessLogicTests | testFlush_AfterDealloc_DoesNotCrash | 21ms |
| โ | AudiobookBookmarkBusinessLogicTests | testLoadTracks_succeeds | 16ms |
| โ | AudiobookBookmarkBusinessLogicTests | testPositionRestoration_BothNil_ReturnsNil | 4ms |
| โ | AudiobookBookmarkBusinessLogicTests | testPositionRestoration_LocalNewerThanRemote_UsesLocal | 20ms |
| โ | AudiobookBookmarkBusinessLogicTests | testPositionRestoration_OnlyLocalExists_UsesLocal | 18ms |
| โ | AudiobookBookmarkBusinessLogicTests | testPositionRestoration_OnlyRemoteExists_UsesRemote | 23ms |
| โ | AudiobookBookmarkBusinessLogicTests | testPositionRestoration_RemoteNewerThanLocal_UsesRemote | 19ms |
| โ | AudiobookBookmarkBusinessLogicTests | testPositionRestoration_SameTimestamp_UsesLocal | 20ms |
| โ | AudiobookBookmarkBusinessLogicTests | testSaveBookmark_AddsToRegistry | 1.02s |
| โ | AudiobookBookmarkBusinessLogicTests | testSaveBookmark_CreatesBookmark | 1.02s |
| โ | AudiobookBookmarkBusinessLogicTests | testSaveListeningPositionSync_SavesImmediately | 20ms |
| โ | AudiobookBookmarkBusinessLogicTests | testSaveListeningPosition_SavesLocallyImmediately | 1.04s |
| โ | AudiobookBookmarkBusinessLogicTests | testSaveListeningPosition_SyncsToServer | 1.03s |
| โ | AudiobookBookmarkBusinessLogicTests | testSyncBookmarks_MergesLocalAndRemote | 18ms |
| โ | AudiobookDataManagerEmptyQueueTests | testSyncValues_withEmptyQueue_makesNoRequests | 18ms |
| โ | AudiobookDataManagerErrorHandlingTests | testSyncValues_with404Response_removesEntriesAndURL | 2.46s |
| โ | AudiobookDataManagerErrorHandlingTests | testSyncValues_with500Response_keepsEntriesForRetry | 2.11s |
| โ | AudiobookDataManagerErrorHandlingTests | testSyncValues_with503Response_keepsEntriesForRetry | 2.09s |
| โ | AudiobookDataManagerErrorHandlingTests | testSyncValues_withNetworkError_keepsEntries | 2.06s |
| โ | AudiobookDataManagerErrorHandlingTests | testSyncValues_withPartialSuccess_removesOnlySuccessfulEntries | 2.04s |
| โ | AudiobookDataManagerModelsTests | testAudiobookDataManagerStoreInit_empty | 2ms |
| โ | AudiobookDataManagerModelsTests | testAudiobookDataManagerStoreInit_fromData_invalidJson_returnsNil | 2ms |
| โ | AudiobookDataManagerModelsTests | testAudiobookDataManagerStoreInit_fromData_validJson | 10ms |
| โ | AudiobookDataManagerModelsTests | testAudiobookDataManagerStoreJsonRepresentation | 2ms |
| โ | AudiobookDataManagerModelsTests | testAudiobookDataManagerStoreRoundTrip | 2ms |
| โ | AudiobookDataManagerModelsTests | testAudiobookTimeEntryCodable | 3ms |
| โ | AudiobookDataManagerModelsTests | testAudiobookTimeEntryEquality | 3ms |
| โ | AudiobookDataManagerModelsTests | testLibraryBookCodable | 5ms |
| โ | AudiobookDataManagerModelsTests | testLibraryBookEquality | 2ms |
| โ | AudiobookDataManagerModelsTests | testLibraryBookHashable | 3ms |
| โ | AudiobookDataManagerModelsTests | testLibraryBookInit_directAndFromTimeEntryAreEqual | 2ms |
| โ | AudiobookDataManagerModelsTests | testLibraryBookInit_fromTimeEntry | 39ms |
| โ | AudiobookDataManagerModelsTests | testRequestDataInit_fromLibraryBookAndEntries | 2ms |
| โ | AudiobookDataManagerModelsTests | testRequestDataInit_timeEntryDurationMapsToSecondsPlayed | 2ms |
| โ | AudiobookDataManagerModelsTests | testRequestDataJsonRepresentation | 10ms |
| โ | AudiobookDataManagerModelsTests | testRequestDataTimeEntryDescription | 2ms |
| โ | AudiobookDataManagerModelsTests | testResponseDataInit_fromData_emptyResponses | 5ms |
| โ | AudiobookDataManagerModelsTests | testResponseDataInit_fromData_invalidJson_returnsNil | 2ms |
| โ | AudiobookDataManagerModelsTests | testResponseDataInit_fromData_validJson | 3ms |
| โ | AudiobookDataManagerModelsTests | testResponseDataInit_jsonAndDirectProduceSameResult | 10ms |
| โ | AudiobookDataManagerNetworkSyncTests | testAudiobookDataManager_Sync_InitializesCorrectly | 41ms |
| โ | AudiobookDataManagerNetworkSyncTests | testSyncValues_requestBodyContainsCorrectFormat | 1.05s |
| โ | AudiobookDataManagerNetworkSyncTests | testSyncValues_withMultipleBooks_makesRequestForEach | 1.02s |
| โ | AudiobookDataManagerNetworkSyncTests | testSyncValues_withQueuedEntries_postsToCorrectURL | 1.02s |
| โ | AudiobookDataManagerNetworkSyncTests | testSyncValues_withSuccessfulResponse_removesEntriesFromQueue | 2.02s |
| โ | AudiobookDataManagerSaveTests | testDataManagerConformance_savesViaProtocol | 20ms |
| โ | AudiobookDataManagerSaveTests | testSave_addsEntryToQueue | 8ms |
| โ | AudiobookDataManagerSaveTests | testSave_multipleEntries_allQueued | 16ms |
| โ | AudiobookDataManagerSaveTests | testSave_storesURLMapping | 6ms |
| โ | AudiobookDataManagerStoreRecoveryTests | testAudiobookDataManagerStoreInit_rejectsMalformedPayloads | 5ms |
| โ | AudiobookDataManagerStoreRecoveryTests | testAudiobookDataManagerStoreInit_withPartialData_returnsNil | 6ms |
| โ | AudiobookDataManagerStoreRecoveryTests | testLoadStore_withCorruptedJSON_doesNotCrash | 6ms |
| โ | AudiobookDataManagerStoreRecoveryTests | testLoadStore_withEmptyFile_doesNotCrash | 10ms |
| โ | AudiobookDataManagerStoreRecoveryTests | testSaveAndLoadStore_preservesData | 2.11s |
| โ | AudiobookFileLoggerTests | testGetLogsDirectoryUrl_directoryExists | 5ms |
| โ | AudiobookFileLoggerTests | testGetLogsDirectoryUrl_returnsURL | 3ms |
| โ | AudiobookFileLoggerTests | testLogEvent_containsTimestamp | 6ms |
| โ | AudiobookFileLoggerTests | testLogEvent_createsLogFile | 10ms |
| โ | AudiobookFileLoggerTests | testLogEvent_multipleEvents_allAppear | 14ms |
| โ | AudiobookFileLoggerTests | testRetrieveLog_nonexistentBook_returnsNil | 5ms |
| โ | AudiobookFileLoggerTests | testRetrieveLogs_emptyBookIds_returnsEmptyDict | 4ms |
| โ | AudiobookFileLoggerTests | testRetrieveLogs_multipleBooks | 19ms |
| โ | AudiobookFileLoggerTests | testShared_isNotNil | 7ms |
| โ | AudiobookLoadFailureSAMLReauthTests | testRegressionForBug_SAMLOpenFailureGetsReauth_perHelpSpot17727 | 143ms |
| โ | AudiobookLoadFailureSAMLReauthTests | testShouldNotTrigger_forBasicAuthAccount | 181ms |
| โ | AudiobookLoadFailureSAMLReauthTests | testShouldNotTrigger_forOAuthAccount | 157ms |
| โ | AudiobookLoadFailureSAMLReauthTests | testShouldNotTrigger_onCancelledLoadEvenWhenSAMLStale | 154ms |
| โ | AudiobookLoadFailureSAMLReauthTests | testShouldNotTrigger_whenAuthStateIsLoggedIn | 155ms |
| โ | AudiobookLoadFailureSAMLReauthTests | testShouldNotTrigger_whenAuthStateIsLoggedOut | 136ms |
| โ | AudiobookLoadFailureSAMLReauthTests | testShouldNotTrigger_whenCurrentBookIsNil | 94ms |
| โ | AudiobookLoadFailureSAMLReauthTests | testShouldNotTrigger_whenNoStoredCredentials | 178ms |
| โ | AudiobookLoadFailureSAMLReauthTests | testShouldTrigger_forAnyNonCancelledLoadErrorWhenSAMLStale | 165ms |
| โ | AudiobookLoadFailureSAMLReauthTests | testShouldTrigger_whenStaleCredentialsAndSAMLAndBook | 145ms |
| โ | AudiobookLoaderTests | testLoad_missingLocalFileAndUnreachableURL_failsWithManifestError | 76ms |
| โ | AudiobookLoaderTests | testLoad_whenCancelledFirst_surfacesCancelledError | 102ms |
| โ | AudiobookNetworkValidationTests | testFullyDownloaded_bypassesNetworkRulesAcrossAllConnectivityCombinations | 2ms |
| โ | AudiobookNetworkValidationTests | testFullyDownloaded_neverNeedsNetwork_offline | 2ms |
| โ | AudiobookNetworkValidationTests | testStreaming_networkValidationCoversAllConnectivityCombinations | 10ms |
| โ | AudiobookPhoneAlertContentTests | testLoaderAndUnknownErrors_returnNil_toAvoidDoubleAlerts | 3ms |
| โ | AudiobookPhoneAlertContentTests | testValidationErrors_allProduceAlertContent | 6ms |
| โ | AudiobookPhoneAlertContentTests | testWifiRequired_producesAlertContent | 2ms |
| โ | AudiobookPlaybackStateTests | testPlaybackStartAndStop_cycle | 77ms |
| โ | AudiobookPlaybackStateTests | testPlaybackStarted_canBeCalledMultipleTimes | 24ms |
| โ | AudiobookPlaybackStateTests | testPlaybackStopped_canBeCalledWithoutStart | 14ms |
| โ | AudiobookPlaybackTests | testAudiobookTimeEntry_DurationCappedAt60 | 43ms |
| โ | AudiobookPlaybackTests | testAudiobookTimeEntry_ValidDuration | 16ms |
| โ | AudiobookPlaybackTests | testChapterIndex_ValidTrack | 16ms |
| โ | AudiobookPlaybackTests | testChapterNavigation_NextChapter | 16ms |
| โ | AudiobookPlaybackTests | testChapterNavigation_NextChapter_AtEnd | 22ms |
| โ | AudiobookPlaybackTests | testChapterNavigation_PreviousChapter | 27ms |
| โ | AudiobookPlaybackTests | testChapterNavigation_PreviousChapter_ClampsToZero | 14ms |
| โ | AudiobookPlaybackTests | testPlaybackSpeed_0_75x_CalculatesCorrectDuration | 19ms |
| โ | AudiobookPlaybackTests | testPlaybackSpeed_1_0x_CalculatesCorrectDuration | 19ms |
| โ | AudiobookPlaybackTests | testPlaybackSpeed_1_25x_CalculatesCorrectDuration | 18ms |
| โ | AudiobookPlaybackTests | testPlaybackSpeed_1_5x_CalculatesCorrectDuration | 18ms |
| โ | AudiobookPlaybackTests | testPlaybackSpeed_2_0x_CalculatesCorrectDuration | 21ms |
| โ | AudiobookPlaybackTests | testPlaybackSpeed_ContentPlayedCalculation | 20ms |
| โ | AudiobookPlaybackTests | testSkipAhead_Adds30Seconds | 21ms |
| โ | AudiobookPlaybackTests | testSkipAhead_ClampsToTrackEnd | 19ms |
| โ | AudiobookPlaybackTests | testSkipAhead_WithinTrackDuration | 16ms |
| โ | AudiobookPlaybackTests | testSkipBehind_ClampsToZero | 22ms |
| โ | AudiobookPlaybackTests | testSkipBehind_Subtracts30Seconds | 15ms |
| โ | AudiobookPlaybackTests | testSleepTimer_15Minutes | 19ms |
| โ | AudiobookPlaybackTests | testSleepTimer_30Minutes | 17ms |
| โ | AudiobookPlaybackTests | testSleepTimer_60Minutes | 37ms |
| โ | AudiobookPlaybackTests | testSleepTimer_Expired | 21ms |
| โ | AudiobookPlaybackTests | testSleepTimer_RemainingTime | 21ms |
| โ | AudiobookPlaybackTests | testTrackPosition_Creation | 20ms |
| โ | AudiobookPlaybackTests | testTrackPosition_ToAudioBookmark | 22ms |
| โ | AudiobookPlaybackTests | testTrackPosition_ToTPPBookLocation | 24ms |
| โ | AudiobookSAMLReauthTests | testShouldNotTriggerSAMLReauthForNilError | 16ms |
| โ | AudiobookSAMLReauthTests | testShouldNotTriggerSAMLReauthForNonSAMLAuth | 3ms |
| โ | AudiobookSAMLReauthTests | testShouldNotTriggerSAMLReauthForWrongCode | 23ms |
| โ | AudiobookSAMLReauthTests | testShouldNotTriggerSAMLReauthForWrongDomain | 5ms |
| โ | AudiobookSAMLReauthTests | testShouldNotTriggerSAMLReauthWithNilBook | 2ms |
| โ | AudiobookSAMLReauthTests | testShouldNotTriggerSAMLReauthWithoutCredentials | 4ms |
| โ | AudiobookSessionErrorDescriptionTests | testAllErrorCases_haveNonEmptyDescriptions | 2ms |
| โ | AudiobookSessionErrorDescriptionTests | testErrorEquatable_differentTypes | 2ms |
| โ | AudiobookSessionErrorDescriptionTests | testErrorEquatable_sameTypes | 4ms |
| โ | AudiobookSessionErrorDescriptionTests | testUnknownError_preservesCustomMessage | 3ms |
| โ | AudiobookSessionErrorExtTests | testErrorDescriptions | 138ms |
| โ | AudiobookSessionErrorExtTests | testErrorEquality | 5ms |
| โ | AudiobookSessionErrorExtTests | testUnknownErrorDescription_preservesCallerMessageVerbatim | 5ms |
| โ | AudiobookSessionErrorExtTests | testUnknownErrorEquality | 4ms |
| โ | AudiobookSessionErrorTests | testAudiobookSessionError_Equatable | 2ms |
| โ | AudiobookSessionErrorTests | testAudiobookSessionError_localizedDescription_isCaseSpecificAndPreservesUnknownMessage | 3ms |
| โ | AudiobookSessionManagerErrorMappingTests | testMap_cancelled_isUnknown | 6ms |
| โ | AudiobookSessionManagerErrorMappingTests | testMap_factoryFailed_isPlayerCreationFailed | 8ms |
| โ | AudiobookSessionManagerErrorMappingTests | testMap_lcpFamily_isManifestLoadFailed | 7ms |
| โ | AudiobookSessionManagerErrorMappingTests | testMap_manifestFamily_isManifestLoadFailed | 8ms |
| โ | AudiobookSessionManagerErrorMappingTests | testMap_tokenRefresh_isNotAuthenticated | 11ms |
| โ | AudiobookSessionManagerErrorMappingTests | testMap_vendorKey_surfacesUnderlyingMessage | 4ms |
| โ | AudiobookSessionManagerTests | testBackgroundCompletionHandlerRegistration | 40ms |
| โ | AudiobookSessionManagerTests | testRegisterActiveDownload | 3ms |
| โ | AudiobookSessionManagerTests | testUpdateDownloadProgress | 10ms |
| โ | AudiobookSessionStateTests | testErrorState | 2ms |
| โ | AudiobookSessionStateTests | testIdleState | 7ms |
| โ | AudiobookSessionStateTests | testLoadingState | 3ms |
| โ | AudiobookSessionStateTests | testPausedState | 5ms |
| โ | AudiobookSessionStateTests | testPlayingState | 3ms |
| โ | AudiobookSessionStateTests | testStateEquality | 26ms |
| โ | AudiobookSessionStateTransitionTests | testErrorState_isNotActive_butHasBookId | 2ms |
| โ | AudiobookSessionStateTransitionTests | testIdleState_isNotActive | 2ms |
| โ | AudiobookSessionStateTransitionTests | testLoadingState_isActive_andHasBookId | 2ms |
| โ | AudiobookSessionStateTransitionTests | testPausedState_isActive_andHasBookId | 2ms |
| โ | AudiobookSessionStateTransitionTests | testPlayingState_isActive_andHasBookId | 2ms |
| โ | AudiobookSessionStateTransitionTests | testSessionManager_cyclePlaybackRate_withoutManager_returnsNormalTime | 3ms |
| โ | AudiobookSessionStateTransitionTests | testSessionManager_initialState_isIdle | 4ms |
| โ | AudiobookSessionStateTransitionTests | testSessionManager_pause_withoutManager_doesNotCrash | 2ms |
| โ | AudiobookSessionStateTransitionTests | testSessionManager_play_withoutManager_doesNotCrash | 2ms |
| โ | AudiobookSessionStateTransitionTests | testSessionManager_skipToChapter_withoutManager_doesNotCrash | 4ms |
| โ | AudiobookSessionStateTransitionTests | testSessionManager_stopPlayback_publishesIdleState | 3ms |
| โ | AudiobookSessionStateTransitionTests | testSessionManager_stopPlayback_resetsState | 6ms |
| โ | AudiobookSessionStateTransitionTests | testSessionManager_togglePlayPause_withoutManager_doesNotCrash | 2ms |
| โ | AudiobookSessionStateTransitionTests | testSessionManager_updateCoverImage_nil_clearsImage | 5ms |
| โ | AudiobookSessionStateTransitionTests | testSessionManager_updateCoverImage_setsImage | 2ms |
| โ | AudiobookSessionStateTransitionTests | testStateEquality_differentBookIds | 2ms |
| โ | AudiobookSessionStateTransitionTests | testStateEquality_differentStates | 2ms |
| โ | AudiobookSessionStateTransitionTests | testStateEquality_sameStates | 2ms |
| โ | AudiobookSleepTimerIntegrationTests | testEndOfChapterSleepTimer_savesPartialTime | 128ms |
| โ | AudiobookSleepTimerIntegrationTests | testSleepTimer30Minutes_savesAllPlayedTime | 72ms |
| โ | AudiobookSleepTimerIntegrationTests | testSleepTimerCancelResume_preservesAllTime | 45ms |
| โ | AudiobookSleepTimerIntegrationTests | testSleepTimerMultipleMinutes_createsSeparateEntries | 34ms |
| โ | AudiobookSleepTimerIntegrationTests | testSleepTimerScenario_savesAllPlayedTime | 38ms |
| โ | AudiobookStorageLocationTests | testApplicationSupportDirectoryExists | 2ms |
| โ | AudiobookStorageLocationTests | testAudiobooksDirectoryPath | 2ms |
| โ | AudiobookStorageLocationTests | testOverdriveDirectoryPath | 3ms |
| โ | AudiobookTOCTests | testChapterName_MatchesAfterNavigation | 33ms |
| โ | AudiobookTOCTests | testChapterName_SavedCorrectly | 20ms |
| โ | AudiobookTOCTests | testChapter_AutoAdvanceToNext | 20ms |
| โ | AudiobookTOCTests | testChapter_HasDuration | 22ms |
| โ | AudiobookTOCTests | testChapter_PositionAtStart | 16ms |
| โ | AudiobookTOCTests | testChapter_PositionInMiddle | 20ms |
| โ | AudiobookTOCTests | testChapter_PositionPersistsAfterRestart | 16ms |
| โ | AudiobookTOCTests | testChapter_SelectionPersistsAfterReturn | 23ms |
| โ | AudiobookTOCTests | testChapter_TotalDuration | 136ms |
| โ | AudiobookTOCTests | testTOC_ChaptersAreOrdered | 37ms |
| โ | AudiobookTOCTests | testTOC_ChaptersHaveTitles | 22ms |
| โ | AudiobookTOCTests | testTOC_ContentsAndBookmarksTabs | 14ms |
| โ | AudiobookTOCTests | testTOC_HasChapters | 14ms |
| โ | AudiobookTOCTests | testTOC_OpenFirstChapter | 29ms |
| โ | AudiobookTOCTests | testTOC_OpenRandomChapter | 16ms |
| โ | AudiobookTOCTests | testTOC_OpenSpecificChapter | 21ms |
| โ | AudiobookTOCTests | testTOC_SwitchToBookmarks | 25ms |
| โ | AudiobookTOCTests | testTOC_SwitchToChapters | 26ms |
| โ | AudiobookTimeEntryTests | testTimeEntry_codableRoundTrip | 10ms |
| โ | AudiobookTimeEntryTests | testTimeEntry_conformsToProtocol | 5ms |
| โ | AudiobookTimeEntryTests | testTimeEntry_durationCanExceed60InStruct | 7ms |
| โ | AudiobookTimeEntryTests | testTimeEntry_equality | 3ms |
| โ | AudiobookTimeEntryTests | testTimeEntry_hashable | 8ms |
| โ | AudiobookTimeEntryTests | testTimeEntry_storesProperties | 5ms |
| โ | AudiobookTimeTrackerEdgeTests | testPlaybackStopped_savesAccumulatedTime_beforeCancellingTimer | 23ms |
| โ | AudiobookTimeTrackerEdgeTests | testReceiveValue_crossingMinuteBoundary_savesEntry | 34ms |
| โ | AudiobookTimeTrackerEdgeTests | testReceiveValue_withinSameMinute_doesNotSaveUntilStop | 38ms |
| โ | AudiobookTimeTrackerEdgeTests | testStopAndSave_calledMultipleTimes_doesNotDuplicate | 25ms |
| โ | AudiobookTimeTrackerEdgeTests | testTimeEntry_containsCorrectBookAndLibraryIds | 16ms |
| โ | AudiobookTimeTrackerEdgeTests | testTimeEntry_durationCappedAt60_andIsNonNegativeAtInit | 13ms |
| โ | AudiobookTimeTrackerEdgeTests | testTimeEntry_duringMinute_isUTCFormat | 14ms |
| โ | AudiobookTimeTrackerEdgeTests | testZeroDuration_isNotSaved | 21ms |
| โ | AudiobookTimeTrackerLifecycleTests | testAppTerminationNotification_savesData | 1.09s |
| โ | AudiobookTimeTrackerLifecycleTests | testStopAndSave_canBeCalledMultipleTimes | 29ms |
| โ | AudiobookTimeTrackerLifecycleTests | testStopAndSave_savesAllAccumulatedTime | 19ms |
| โ | AudiobookTimeTrackerLifecycleTests | testTimeEntryProperty_isThreadSafe | 29ms |
| โ | AudiobookTimeTrackerLifecycleTests | testTrackerDeallocation_savesAccumulatedTime | 32ms |
| โ | AudiobookTimeTrackerTests | testExactMinuteOfPlayback_savesCorrectTimeEntry | 22ms |
| โ | AudiobookTimeTrackerTests | testMultipleMinuteBoundaries_createsMultipleEntries | 31ms |
| โ | AudiobookTimeTrackerTests | testNoPlayback_savesNoTimeEntry | 17ms |
| โ | AudiobookTimeTrackerTests | testPlaybackStarted_savesCorrectAggregateTime | 15ms |
| โ | AudiobookTimeTrackerTests | testPlaybackStopped_stopsTimer | 22ms |
| โ | AudiobookTimeTrackerTests | testSaveCurrentDuration_savesTimeEntryCorrectly | 21ms |
| โ | AudiobookTimeTrackerTests | testTimeEntries_areInUTC | 16ms |
| โ | AudiobookTimeTrackerTests | testTimeEntries_areLimitedTo60Seconds | 14ms |
| โ | AudiobookTimeTrackerTests | testTimeEntry_hasCorrectMetadata | 15ms |
| โ | AudiobookTrackCompletionTests | testTrackerFinalize_savesAccumulatedTime | 13ms |
| โ | AudiobookTrackCompletionTests | testZeroDuration_notSaved | 19ms |
| โ | AudiobookTypeRoutingTests | testAudiobookLCPBook_hasExpectedIdentifiers | 9ms |
| โ | AudiobookTypeRoutingTests | testBearerTokenBook_hasExpectedIdentifiers | 8ms |
| โ | AudiobookTypeRoutingTests | testLCPAudiobook_canOpenBook_usesCorrectAcquisitionType | 20ms |
| โ | AudiobookTypeRoutingTests | testOpenAccessAudiobook_hasExpectedIdentifiers | 38ms |
| โ | AudiobookTypeRoutingTests | testReadiumLCPBook_hasExpectedIdentifiers | 7ms |
| โ | AudiobookmarkTests | testDecodeEarlyBookmark | 8ms |
| โ | AudiobookmarkTests | testDecodeLocatorAudioBookTime2 | 8ms |
| โ | AudiobookmarkTests | testDecodeNewerBookmark | 23ms |
| โ | AudiobookmarkTests | testEncodeAndDecodeBookmark | 26ms |
| โ | AuthDocumentContractTests | testAuthDocument_HasRequiredLinks | 3ms |
| โ | AuthDocumentContractTests | testParseAuthDocument_ExtractsAllFields | 18ms |
| โ | AuthDocumentVariantsContractTests | testOAuthAuthDocument_FeatureFlagsExpressedViaDisabledList | 3ms |
| โ | AuthDocumentVariantsContractTests | testOAuthAuthDocument_HasMultipleAuthMethods | 23ms |
| โ | AuthDocumentVariantsContractTests | testSAMLAuthDocument_HasAnnouncements | 3ms |
| โ | AuthDocumentVariantsContractTests | testSAMLAuthDocument_HasRequiredLinks | 7ms |
| โ | AuthDocumentVariantsContractTests | testSAMLAuthDocument_ParsesWithSAMLType | 5ms |
| โ | AuthErrorCategoryTests | testHTTPURLResponse_bare401WithoutProblemDoc_shouldIndicateAuthRefresh | 2ms |
| โ | AuthErrorCategoryTests | testHTTPURLResponse_withOldCredentialsInvalidType_shouldIndicateAuthRefresh | 43ms |
| โ | AuthErrorCategoryTests | testHTTPURLResponse_withRecoverableError_shouldIndicateAuthRefresh | 5ms |
| โ | AuthErrorCategoryTests | testHTTPURLResponse_withUnrecoverableError_shouldNotIndicateAuthRefresh | 3ms |
| โ | AuthErrorCategoryTests | testHTTPURLResponse_withUnrecoverableNoAccess_shouldNotIndicateAuthRefresh | 2ms |
| โ | AuthErrorCategoryTests | testProblemDocument_nilType_isNeitherCategory | 2ms |
| โ | AuthErrorCategoryTests | testProblemDocument_nonAuthType_isNeitherCategory | 2ms |
| โ | AuthErrorCategoryTests | testProblemDocument_recoverableSAMLBearerTokenInvalid_isRecoverable | 98ms |
| โ | AuthErrorCategoryTests | testProblemDocument_recoverableSAMLSessionExpired_isRecoverable | 2ms |
| โ | AuthErrorCategoryTests | testProblemDocument_recoverableTokenExpired_isRecoverable | 5ms |
| โ | AuthErrorCategoryTests | testProblemDocument_unrecoverableInvalidCredentials_isUnrecoverable | 2ms |
| โ | AuthErrorCategoryTests | testProblemDocument_unrecoverableNoAccess_isUnrecoverable | 2ms |
| โ | AuthFlowSecurityTests | testSession_identifierRotatedOnSignIn | 9ms |
| โ | AuthFlowSecurityTests | testToken_networkExecutorRefreshCount_singleFlightSemantics | 8ms |
| โ | AuthFlowSecurityTests | testToken_reauthenticatorCallCount_observableForRawCallAssertion | 9ms |
| โ | AuthReducerTests | testAuthDocumentLoadCompleted_clearsLoadingFlag | 3ms |
| โ | AuthReducerTests | testAuthDocumentLoadStarted_setsLoadingFlag | 6ms |
| โ | AuthReducerTests | testBearerTokenReceived_storesTokenAndExpiration | 2ms |
| โ | AuthReducerTests | testClassifyValidationError_genericError_fallsBackToInvalidCredentials | 3ms |
| โ | AuthReducerTests | testClassifyValidationError_networkConnectivityError_returnsConnectivityCopy | 9ms |
| โ | AuthReducerTests | testClassifyValidationError_problemDocument_takesPrecedenceOverEverything | 5ms |
| โ | AuthReducerTests | testCredentialCaptureStarted_acceptsNilCredentials | 12ms |
| โ | AuthReducerTests | testCredentialCaptureStarted_storesBarcodeAndPinAndClearsStaleError | 2ms |
| โ | AuthReducerTests | testCredentialsValidationFailed_clearsFlagAndSurfacesError | 2ms |
| โ | AuthReducerTests | testCredentialsValidationStarted_setsFlagAndClearsAnyPriorError | 5ms |
| โ | AuthReducerTests | testCredentialsValidationSucceeded_clearsFlagWithoutTouchingCapturedCreds | 2ms |
| โ | AuthReducerTests | testErrorCleared_dropsPriorErrorWithoutTouchingOtherFields | 2ms |
| โ | AuthReducerTests | testLoggingInAfterSignUpFlagSet_storesValue | 2ms |
| โ | AuthReducerTests | testRefreshAuthStarted_basicAuth_neverArmsBypass | 2ms |
| โ | AuthReducerTests | testRefreshAuthStarted_oauthNonExisting_armsIgnoreSignedInState | 2ms |
| โ | AuthReducerTests | testRefreshAuthStarted_oidcNonExisting_armsIgnoreSignedInState | 2ms |
| โ | AuthReducerTests | testRefreshAuthStarted_samlNonExisting_armsIgnoreSignedInState | 2ms |
| โ | AuthReducerTests | testRefreshAuthStarted_samlWithExistingCredentials_doesNotArmBypass | 8ms |
| โ | AuthReducerTests | testRefreshAuthStarted_tokenAuth_neverArmsBypass | 4ms |
| โ | AuthReducerTests | testSignOutCompleted_resetsToInitialState | 2ms |
| โ | AuthReducerTests | testUserAccountUpdated_clearsAllInFlightAuthState | 3ms |
| โ | AuthTypeTests | testAuthType_AnonymousRawValue_IsCorrect | 2ms |
| โ | AuthTypeTests | testAuthType_BasicRawValue_IsCorrect | 5ms |
| โ | AuthTypeTests | testAuthType_CoppaRawValue_IsCorrect | 5ms |
| โ | AuthTypeTests | testAuthType_InitFromInvalidString_ReturnsNil | 14ms |
| โ | AuthTypeTests | testAuthType_OAuthRawValue_IsCorrect | 4ms |
| โ | AuthTypeTests | testAuthType_SamlRawValue_IsCorrect | 3ms |
| โ | AuthTypeTests | testAuthType_TokenRawValue_IsCorrect | 2ms |
| โ | AuthenticationTests | testCatalogRequiresAuthentication_ForBasicType_ReturnsFalse | 2ms |
| โ | AuthenticationTests | testCatalogRequiresAuthentication_ForOAuthType_ReturnsTrue | 2ms |
| โ | AuthenticationTests | testCoppaURL_WhenOfAge_ReturnsOverUrl | 2ms |
| โ | AuthenticationTests | testCoppaURL_WhenUnderAge_ReturnsUnderUrl | 2ms |
| โ | AuthenticationTests | testIsBasic_ForBasicType_ReturnsTrue | 2ms |
| โ | AuthenticationTests | testIsOauth_ForOAuthType_ReturnsTrue | 3ms |
| โ | AuthenticationTests | testIsSaml_ForSamlType_ReturnsTrue | 3ms |
| โ | AuthenticationTests | testIsToken_ForTokenType_ReturnsTrue | 2ms |
| โ | AuthenticationTests | testNeedsAgeCheck_ForBasicType_ReturnsFalse | 7ms |
| โ | AuthenticationTests | testNeedsAgeCheck_ForCoppaType_ReturnsTrue | 2ms |
| โ | AuthenticationTests | testNeedsAuth_ForAnonymousType_ReturnsFalse | 5ms |
| โ | AuthenticationTests | testNeedsAuth_ForBasicType_ReturnsTrue | 3ms |
| โ | AuthenticationTests | testNeedsAuth_ForCoppaType_ReturnsFalse | 2ms |
| โ | AuthenticationTests | testNeedsAuth_ForOAuthType_ReturnsTrue | 3ms |
| โ | AuthenticationTests | testNeedsAuth_ForSamlType_ReturnsTrue | 3ms |
| โ | AuthenticationTests | testNeedsAuth_ForTokenType_ReturnsTrue | 3ms |
| โ | BackgroundDownloadHandlerTests | testDetectRightsManagement_adobeAdept | 3ms |
| โ | BackgroundDownloadHandlerTests | testDetectRightsManagement_bearerToken | 6ms |
| โ | BackgroundDownloadHandlerTests | testDetectRightsManagement_epubZip | 3ms |
| โ | BackgroundDownloadHandlerTests | testDetectRightsManagement_readiumLCP | 6ms |
| โ | BackgroundDownloadHandlerTests | testDetectRightsManagement_unknownType | 5ms |
| โ | BackgroundDownloadHandlerTests | testHandleDownloadProgress_firstBytes_detectsMimeType | 11ms |
| โ | BackgroundDownloadHandlerTests | testHandleDownloadProgress_noDelegate_doesNotCrash | 6ms |
| โ | BackgroundDownloadHandlerTests | testInit_withDelegate | 6ms |
| โ | BackgroundDownloadHandlerTests | testInit_withoutDelegate | 3ms |
| โ | BackgroundDownloadHandlerTests | testIsOPDSEntryMimeType_applicationXml | 2ms |
| โ | BackgroundDownloadHandlerTests | testIsOPDSEntryMimeType_atomXml | 2ms |
| โ | BackgroundDownloadHandlerTests | testIsOPDSEntryMimeType_caseInsensitive | 2ms |
| โ | BackgroundDownloadHandlerTests | testIsOPDSEntryMimeType_epub_returnsFalse | 2ms |
| โ | BackgroundDownloadHandlerTests | testIsOPDSEntryMimeType_html_returnsFalse | 5ms |
| โ | BackgroundDownloadHandlerTests | testIsOPDSEntryMimeType_json_returnsFalse | 4ms |
| โ | BackgroundDownloadHandlerTests | testIsOPDSEntryMimeType_opdsCatalog | 4ms |
| โ | BackgroundDownloadHandlerTests | testIsOPDSEntryMimeType_textXml | 3ms |
| โ | BackgroundDownloadHandlerTests | testMoveFile_moveFailure_logsError | 7ms |
| โ | BackgroundDownloadHandlerTests | testMoveFile_noDelegate_returnsFalse | 6ms |
| โ | BackgroundDownloadHandlerTests | testMoveFile_noFileUrl_returnsFalse | 10ms |
| โ | BackgroundDownloadHandlerTests | testMoveFile_success_setsDownloadSuccessful | 12ms |
| โ | BackgroundDownloadHandlerTests | testReplaceBook_existingFile_replacesIt | 19ms |
| โ | BackgroundDownloadHandlerTests | testReplaceBook_noDelegate_returnsFalse | 7ms |
| โ | BackgroundDownloadHandlerTests | testReplaceBook_noFileUrl_returnsFalse | 9ms |
| โ | BackgroundDownloadHandlerTests | testReplaceBook_success_setsDownloadSuccessful | 9ms |
| โ | BackgroundDownloadHandlerTests | testValidateDownloadedFile_emptyFile_returnsFalse | 8ms |
| โ | BackgroundDownloadHandlerTests | testValidateDownloadedFile_existingFileWithContent_returnsTrue | 7ms |
| โ | BackgroundDownloadHandlerTests | testValidateDownloadedFile_missingFile_returnsFalse | 10ms |
| โ | BackgroundListenerTests | testOpenAccessListenerIdentifiesCorrectSessions | 9ms |
| โ | BackgroundListenerTests | testOverdriveListenerIdentifiesCorrectSessions | 24ms |
| โ | BackupExclusionMigrationTests | test_run_continuesAfterMissingRoot_doesNotPoisonSubsequentRoots | 75ms |
| โ | BackupExclusionMigrationTests | test_run_flagsFilesAddedBetweenInvocations | 7ms |
| โ | BackupExclusionMigrationTests | test_run_recursivelyFlagsEveryFileAndDirectory | 5ms |
| โ | BadgeDefinitionTests | testBadgeCatalog_ContainsAllBadges | 7ms |
| โ | BadgeDefinitionTests | testBadgeCatalog_HasUniqueIDs | 2ms |
| โ | BadgeDefinitionTests | testFiftyBooksClub_CapsAtOne | 2ms |
| โ | BadgeDefinitionTests | testFiftyBooksClub_FailingCriteria | 5ms |
| โ | BadgeDefinitionTests | testFiftyBooksClub_Metadata | 6ms |
| โ | BadgeDefinitionTests | testFiftyBooksClub_PassingCriteria | 4ms |
| โ | BadgeDefinitionTests | testFiftyBooksClub_ProgressCalculation | 13ms |
| โ | BadgeDefinitionTests | testHundredBooksClub_FailingCriteria | 2ms |
| โ | BadgeDefinitionTests | testHundredBooksClub_Metadata | 4ms |
| โ | BadgeDefinitionTests | testHundredBooksClub_PassingCriteria | 3ms |
| โ | BadgeDefinitionTests | testHundredBooksClub_ProgressCalculation | 6ms |
| โ | BadgeDefinitionTests | testHundredBooksClub_ZeroCompletions | 2ms |
| โ | BadgeDefinitionTests | testMakeBadge_DefaultsToNotEarned | 2ms |
| โ | BadgeDefinitionTests | testMakeBadge_ProducesCorrectBadge | 2ms |
| โ | BadgeDefinitionTests | testSpeedReader_FailingCriteria_MultiDayRead | 3ms |
| โ | BadgeDefinitionTests | testSpeedReader_Metadata | 4ms |
| โ | BadgeDefinitionTests | testSpeedReader_PassingCriteria_SameDayStartAndFinish | 2ms |
| โ | BadgeDefinitionTests | testSpeedReader_ProgressWithCompletionsButNoneSameDay | 2ms |
| โ | BadgeDefinitionTests | testSpeedReader_ZeroProgress_NoCompletions | 3ms |
| โ | BadgeDefinitionTests | testStreakImmortal_CapsAtOne | 2ms |
| โ | BadgeDefinitionTests | testStreakImmortal_FailingCriteria | 3ms |
| โ | BadgeDefinitionTests | testStreakImmortal_Metadata | 2ms |
| โ | BadgeDefinitionTests | testStreakImmortal_PassingCriteria | 3ms |
| โ | BadgeDefinitionTests | testStreakImmortal_ProgressCalculation | 4ms |
| โ | BadgeDefinitionTests | testStreakLegend_FailingCriteria | 6ms |
| โ | BadgeDefinitionTests | testStreakLegend_Metadata | 3ms |
| โ | BadgeDefinitionTests | testStreakLegend_PassingCriteria | 3ms |
| โ | BadgeDefinitionTests | testStreakLegend_ProgressCalculation | 2ms |
| โ | BadgeDefinitionTests | testStreakLegend_UsesLongestStreak | 4ms |
| โ | BadgeDefinitionTests | testWeekendWarrior_FailingCriteria_NoWeekendSessions | 6ms |
| โ | BadgeDefinitionTests | testWeekendWarrior_Metadata | 6ms |
| โ | BadgeDefinitionTests | testWeekendWarrior_PassingCriteria_FourConsecutiveWeekends | 3ms |
| โ | BadgeDefinitionTests | testWeekendWarrior_ProgressCalculation_TwoWeekends | 9ms |
| โ | BadgeServiceTests | testAllBadgesAreDefined | 7ms |
| โ | BadgeServiceTests | testAudiobookAdventurerEarned | 5ms |
| โ | BadgeServiceTests | testBadgeEarnedNotificationFires | 101ms |
| โ | BadgeServiceTests | testEarlyBirdBadge | 10ms |
| โ | BadgeServiceTests | testFirstBookFinishedBadge | 5ms |
| โ | BadgeServiceTests | testFirstBookNotEarnedWithNoCompletions | 5ms |
| โ | BadgeServiceTests | testGenreExplorerProgress | 4ms |
| โ | BadgeServiceTests | testInProgressBadges | 485ms |
| โ | BadgeServiceTests | testLibraryExplorerProgress | 218ms |
| โ | BadgeServiceTests | testLockedBadges | 6ms |
| โ | BadgeServiceTests | testMarathonReaderEarned | 10ms |
| โ | BadgeServiceTests | testMarathonReaderProgress | 4ms |
| โ | BadgeServiceTests | testNightOwlBadge | 9ms |
| โ | BadgeServiceTests | testStreakMasterProgress | 109ms |
| โ | BadgeServiceTests | testTenBooksClubEarned | 12ms |
| โ | BadgeServiceTests | testTenBooksClubProgress | 20ms |
| โ | BadgesViewModelTests | testBadgeCategories_AreMutuallyExclusive | 2ms |
| โ | BadgesViewModelTests | testInitialState_HasEmptyBadgeLists | 2ms |
| โ | BadgesViewModelTests | testInitialState_IsNotLoading | 2ms |
| โ | BadgesViewModelTests | testInitialState_NoSelectedBadge | 7ms |
| โ | BadgesViewModelTests | testLoad_PopulatesEarnedBadges | 2ms |
| โ | BadgesViewModelTests | testLoad_PopulatesInProgressBadges | 5ms |
| โ | BadgesViewModelTests | testLoad_PopulatesLockedBadges | 6ms |
| โ | BadgesViewModelTests | testLoad_SetsIsLoadingFalseOnCompletion | 7ms |
| โ | BadgesViewModelTests | testNewBadgeNotification_AddsToBadgeIDs | 3ms |
| โ | BadgesViewModelTests | testNewBadgeNotification_TriggersReload | 59ms |
| โ | BadgesViewModelTests | testProgressSummary_FormatsCorrectly | 6ms |
| โ | BadgesViewModelTests | testProgressSummary_ZeroEarned | 3ms |
| โ | BadgesViewModelTests | testSelectBadge_SetsSelectedBadge | 3ms |
| โ | BadgesViewModelTests | testTotalBadgesCount_MatchesCatalogCount | 1ms |
| โ | BasicAuthEmptyCredentialTests | testHandleChallenge_EmptyUsername_StillUsesCredential | 2ms |
| โ | BasicAuthEmptyCredentialTests | testHandleChallenge_NilPassword_CancelsChallenge | 4ms |
| โ | BasicAuthEmptyCredentialTests | testHandleChallenge_NilUsername_CancelsChallenge | 2ms |
| โ | BasicAuthEmptyCredentialTests | testHandleChallenge_ValidCredentials_UsesCredentialWithNoPersistence | 2ms |
| โ | BearerTokenFulfillFlowTests | testFulfillURL_andManifestURL_areDifferentEndpoints | 3ms |
| โ | BearerTokenFulfillFlowTests | testFullFlow_bearerTokenWithExpiredManifestFetch_returnsNil | 15ms |
| โ | BearerTokenFulfillFlowTests | testFullFlow_fulfillReturnsBearerToken_thenManifestIsFetched | 14ms |
| โ | BearerTokenFulfillFlowTests | testFullFlow_manifestResponseIsNotMistakenForBearerToken | 2ms |
| โ | BearerTokenRefreshTests | testRefreshRequest_includesAuthHeader | 5ms |
| โ | BearerTokenRefreshTests | testRefreshRequest_withoutToken_noAuthHeader | 2ms |
| โ | BearerTokenRefreshTests | testSimplifiedBearerToken_isExpired_withPastDate | 4ms |
| โ | BearerTokenRefreshTests | testSimplifiedBearerToken_isNotExpired_withFutureDate | 3ms |
| โ | BearerTokenResponseDetectionTests | testAudiobookManifestJSON_isNotMistakenForBearerToken | 6ms |
| โ | BearerTokenResponseDetectionTests | testBearerTokenJSON_isDetectedCorrectly | 11ms |
| โ | BearerTokenResponseDetectionTests | testBearerTokenJSON_withExpirationKey_isDetected | 12ms |
| โ | BearerTokenResponseDetectionTests | testManifestWithAccessTokenKey_butNoLocation_isNotBearerToken | 3ms |
| โ | BearerTokenResponseDetectionTests | testManifestWithLocationKey_butNoAccessToken_isNotBearerToken | 4ms |
| โ | BearerTokenResponseDetectionTests | testNonBearerJSONShapes_areRejected | 6ms |
| โ | BearerTokenResponseDetectionTests | testProblemDocumentJSON_isNotBearerToken | 3ms |
| โ | BookAvailabilityFormatterTests | test_isDate_crossDayBoundary | 4ms |
| โ | BookAvailabilityFormatterTests | test_isDate_crossYearBoundary | 4ms |
| โ | BookAvailabilityFormatterTests | test_isDate_emptyStrings_returnsFalse | 4ms |
| โ | BookAvailabilityFormatterTests | test_isDate_invalidDateStrings_returnsFalse | 3ms |
| โ | BookAvailabilityFormatterTests | test_isDate_moreRecentThan_newerDate_isMoreRecent | 4ms |
| โ | BookAvailabilityFormatterTests | test_isDate_moreRecentThan_olderDate_notMoreRecent | 4ms |
| โ | BookAvailabilityFormatterTests | test_isDate_moreRecentThan_sameDate_notMoreRecent | 15ms |
| โ | BookAvailabilityFormatterTests | test_isDate_negativeDelay_makesNewerDateFail | 23ms |
| โ | BookAvailabilityFormatterTests | test_isDate_newerDateWithDelay_alwaysPasses | 5ms |
| โ | BookAvailabilityFormatterTests | test_isDate_oneSecondDifference_noDelay | 23ms |
| โ | BookAvailabilityFormatterTests | test_isDate_sameTimestamp_withSmallDelay_returnsTrue | 4ms |
| โ | BookAvailabilityFormatterTests | test_isDate_withInsufficientDelay_olderDateStillFails | 4ms |
| โ | BookAvailabilityFormatterTests | test_isDate_withPositiveDelay_makesOlderDatePassAsNewer | 5ms |
| โ | BookAvailabilityFormatterTests | test_syncDecision_bothExist_localNewer_usesLocal | 3ms |
| โ | BookAvailabilityFormatterTests | test_syncDecision_bothExist_remoteNewer_promptsSync | 6ms |
| โ | BookAvailabilityFormatterTests | test_syncDecision_localExistsRemoteNil_localIsUsed | 1ms |
| โ | BookAvailabilityFormatterTests | test_syncDecision_localNilRemoteExists_remoteIsNewer | 1ms |
| โ | BookAvailabilityFormatterTests | test_syncDecision_localNilRemoteNil_noSync | 3ms |
| โ | BookButtonMapperHoldReadyTests | testMap_DownloadingState_Unaffected | 2ms |
| โ | BookButtonMapperHoldReadyTests | testMap_HoldingState_LimitedNoCopiesAvailability_ReturnsHolding | 2ms |
| โ | BookButtonMapperHoldReadyTests | testMap_HoldingState_LimitedWithCopiesAvailability_ReturnsHolding | 4ms |
| โ | BookButtonMapperHoldReadyTests | testMap_HoldingState_NilAvailability_ReturnsHolding | 2ms |
| โ | BookButtonMapperHoldReadyTests | testMap_HoldingState_ReadyAvailability_ReturnsCanBorrow | 35ms |
| โ | BookButtonMapperHoldReadyTests | testMap_HoldingState_ReservedAvailability_ReturnsHolding | 3ms |
| โ | BookButtonMapperHoldReadyTests | testMap_HoldingState_UnavailableAvailability_ReturnsHolding | 3ms |
| โ | BookButtonMapperHoldReadyTests | testMap_HoldingState_UnlimitedAvailability_ReturnsHolding | 3ms |
| โ | BookButtonMapperHoldReadyTests | testMap_ProcessingDownload_Unaffected | 2ms |
| โ | BookButtonMapperHoldReadyTests | testStateForAvailability_dispatchesEachAvailabilityToItsExpectedButtonState | 3ms |
| โ | BookButtonMapperTests | testAllRegistryStatesAreMapped | 16ms |
| โ | BookButtonMapperTests | testMapDownloadFailed | 37ms |
| โ | BookButtonMapperTests | testMapDownloadNeeded | 5ms |
| โ | BookButtonMapperTests | testMapDownloadSuccessful | 3ms |
| โ | BookButtonMapperTests | testMapDownloading | 4ms |
| โ | BookButtonMapperTests | testMapHolding | 93ms |
| โ | BookButtonMapperTests | testMapReturning | 3ms |
| โ | BookButtonMapperTests | testMapSAMLStarted | 3ms |
| โ | BookButtonMapperTests | testMapUsed | 6ms |
| โ | BookButtonMapperTests | testMappingIsDeterministic | 4ms |
| โ | BookButtonMapperTests | testProcessingDownloadOverridesDownloadSuccessful | 4ms |
| โ | BookButtonMapperTests | testProcessingDownloadOverridesState | 6ms |
| โ | BookButtonMapperTests | testStateForNilAvailability | 4ms |
| โ | BookButtonMapperTests | testUnregisteredWithNilAvailability | 7ms |
| โ | BookButtonMapperViewModelTests | testMap_DownloadFailed_ReturnsDownloadFailed | 4ms |
| โ | BookButtonMapperViewModelTests | testMap_DownloadNeeded_ReturnsDownloadNeeded | 2ms |
| โ | BookButtonMapperViewModelTests | testMap_DownloadSuccessful_ReturnsDownloadSuccessful | 4ms |
| โ | BookButtonMapperViewModelTests | testMap_DownloadingPrioritizedOverAvailability | 2ms |
| โ | BookButtonMapperViewModelTests | testMap_Downloading_ReturnsDownloadInProgress | 4ms |
| โ | BookButtonMapperViewModelTests | testMap_Holding_WithNilAvailability_ReturnsHolding | 2ms |
| โ | BookButtonMapperViewModelTests | testMap_Holding_WithReadyAvailability_ReturnsCanBorrow | 2ms |
| โ | BookButtonMapperViewModelTests | testMap_Holding_WithReservedAvailability_ReturnsHolding | 3ms |
| โ | BookButtonMapperViewModelTests | testMap_IsProcessingDownload_ReturnsDownloadInProgress | 2ms |
| โ | BookButtonMapperViewModelTests | testMap_Returning_ReturnsReturning | 2ms |
| โ | BookButtonMapperViewModelTests | testMap_Unregistered_WithLimitedAvailability_CopiesAvailable_ReturnsCanBorrow | 6ms |
| โ | BookButtonMapperViewModelTests | testMap_Unregistered_WithNilAvailability_ReturnsUnsupported | 4ms |
| โ | BookButtonMapperViewModelTests | testMap_Unregistered_WithUnavailability_ReturnsCanHold | 3ms |
| โ | BookButtonMapperViewModelTests | testMap_Unregistered_WithUnlimitedAvailability_ReturnsCanBorrow | 7ms |
| โ | BookButtonMapperViewModelTests | testMap_Used_ReturnsUsed | 2ms |
| โ | BookButtonMapperViewModelTests | testStateForAvailability_Nil_ReturnsNil | 2ms |
| โ | BookButtonMapperViewModelTests | testStateForAvailability_Ready_ReturnsCanBorrow | 3ms |
| โ | BookButtonMapperViewModelTests | testStateForAvailability_Reserved_ReturnsHoldingFrontOfQueue | 4ms |
| โ | BookButtonStateTests | testAllCases | 6ms |
| โ | BookButtonStateTests | testDownloadFailed_cancelAndRetry | 17ms |
| โ | BookButtonStateTests | testDownloadInProgress_cancelButton | 10ms |
| โ | BookButtonStateTests | testEquatable | 6ms |
| โ | BookButtonStateTests | testReturning_returningButton | 7ms |
| โ | BookButtonStateTests | testStateForAvailability_nilAvailability | 2ms |
| โ | BookButtonStateTests | testStateForAvailability_unlimited | 5ms |
| โ | BookButtonStateTests | testUnsupported_emptyButtons | 4ms |
| โ | BookButtonTypeTests | testAllCases_haveRawValues | 2ms |
| โ | BookButtonTypeTests | testBorderColor | 2ms |
| โ | BookButtonTypeTests | testButtonBackgroundColor | 2ms |
| โ | BookButtonTypeTests | testButtonStyle_destructive | 2ms |
| โ | BookButtonTypeTests | testButtonStyle_primary | 2ms |
| โ | BookButtonTypeTests | testButtonStyle_secondary | 2ms |
| โ | BookButtonTypeTests | testButtonStyle_tertiary | 4ms |
| โ | BookButtonTypeTests | testButtonTextColor | 13ms |
| โ | BookButtonTypeTests | testDisplaysIndicator_falseForOthers | 3ms |
| โ | BookButtonTypeTests | testDisplaysIndicator_trueForExpected | 2ms |
| โ | BookButtonTypeTests | testHasBorder | 5ms |
| โ | BookButtonTypeTests | testIsPrimary | 3ms |
| โ | BookButtonTypeTests | testTitle_returnsNonEmptyStrings | 5ms |
| โ | BookCellModelActionTests | testAcquireReaderPresentationLock_FirstCall_Succeeds | 6ms |
| โ | BookCellModelActionTests | testAcquireReaderPresentationLock_ReleasesAfterDelay | 531ms |
| โ | BookCellModelActionTests | testAcquireReaderPresentationLock_SecondRapidCall_IsBlocked | 6ms |
| โ | BookCellModelActionTests | testCancelHold_AlertContainsBookTitle | 7ms |
| โ | BookCellModelActionTests | testCancelHold_AlertHasBothPrimaryAndDistinctCancelButton | 8ms |
| โ | BookCellModelActionTests | testCancelHold_CancellingAlert_DoesNotSetReturningState | 55ms |
| โ | BookCellModelActionTests | testCancelHold_ConfirmingAlert_SetsReturningState | 8ms |
| โ | BookCellModelActionTests | testCancelHold_DoesNotStartReturnImmediately | 8ms |
| โ | BookCellModelActionTests | testCancelHold_ShowsConfirmationAlert_BeforeRevoking | 6ms |
| โ | BookCellModelActionTests | testRemove_doesNotShowAlertImmediatelyOrAfterDrain | 13ms |
| โ | BookCellModelActionTests | testReturn_AlertContainsBookTitle | 8ms |
| โ | BookCellModelActionTests | testReturn_AlertHasBothPrimaryAndDistinctCancelButton | 7ms |
| โ | BookCellModelActionTests | testReturn_CancellingAlert_DoesNotSetReturningState | 5ms |
| โ | BookCellModelActionTests | testReturn_CancellingAlert_ResetsIsLoading | 5ms |
| โ | BookCellModelActionTests | testReturn_ConfirmingAlert_DismissesAlert | 9ms |
| โ | BookCellModelActionTests | testReturn_ConfirmingAlert_SetsReturningState | 34ms |
| โ | BookCellModelActionTests | testReturn_DoesNotStartReturnImmediately | 11ms |
| โ | BookCellModelActionTests | testReturn_ShowsConfirmationAlert_BeforeRevoking | 6ms |
| โ | BookCellModelCacheInvalidationTests | testCacheInvalidatesDownloadingToFailed | 19ms |
| โ | BookCellModelCacheInvalidationTests | testCacheInvalidatesDownloadingToSuccessful | 11ms |
| โ | BookCellModelCacheInvalidationTests | testCacheInvalidatesFailedToSuccessful | 16ms |
| โ | BookCellModelCacheInvalidationTests | testCacheInvalidatesOnDirectInvalidation | 19ms |
| โ | BookCellModelCacheInvalidationTests | testCacheReturnsDifferentModelsForDifferentBooks | 14ms |
| โ | BookCellModelCacheInvalidationTests | testCacheReturnsSameModel | 8ms |
| โ | BookCellModelCacheInvalidationTests | testClearAllRemovesAllModels | 28ms |
| โ | BookCellModelCacheInvalidationTests | testInvalidateForSpecificBook | 24ms |
| โ | BookCellModelCachePrefetchSafetyTests | testPrefetch_EmptyBooksArray_DoesNotCrash | 3ms |
| โ | BookCellModelCachePrefetchSafetyTests | testPrefetch_EmptyBooksArray_WithNonZeroRange_DoesNotCrash | 4ms |
| โ | BookCellModelCachePrefetchSafetyTests | testPrefetch_EndOfList_DoesNotAccessBeyondBounds | 38ms |
| โ | BookCellModelCachePrefetchSafetyTests | testPrefetch_LargeBuffer_ClampsToArraySize | 40ms |
| โ | BookCellModelCachePrefetchSafetyTests | testPrefetch_NegativeBufferRange_ClampsToZero | 42ms |
| โ | BookCellModelCachePrefetchSafetyTests | testPrefetch_NormalRange_PreloadsModels | 64ms |
| โ | BookCellModelCachePrefetchSafetyTests | testPrefetch_RangeExceedsArraySize_DoesNotCrash | 24ms |
| โ | BookCellModelCachePrefetchSafetyTests | testPrefetch_SingleElementArray_DoesNotCrash | 10ms |
| โ | BookCellModelCachePrefetchSafetyTests | testPrefetch_StartOfList_DoesNotAccessNegativeIndex | 43ms |
| โ | BookCellModelCacheTests | testAggressiveConfiguration_HasLargerValues | 6ms |
| โ | BookCellModelCacheTests | testCacheWithSameIdentifierDifferentUpdatedDate | 15ms |
| โ | BookCellModelCacheTests | testClear | 20ms |
| โ | BookCellModelCacheTests | testConcurrentAccess_DoesNotCrash | 141ms |
| โ | BookCellModelCacheTests | testDefaultConfiguration_HasReasonableValues | 3ms |
| โ | BookCellModelCacheTests | testDifferentBooksGetDifferentModels | 20ms |
| โ | BookCellModelCacheTests | testDirectInvalidation_RefreshesModel | 29ms |
| โ | BookCellModelCacheTests | testDirectInvalidation_WorksForHoldingState | 12ms |
| โ | BookCellModelCacheTests | testDirectInvalidation_WorksForStateTransitions | 26ms |
| โ | BookCellModelCacheTests | testEmptyCache_survivesAllPublicMutatorsWithoutCrashOrSpuriousEntries | 8ms |
| โ | BookCellModelCacheTests | testInvalidate | 16ms |
| โ | BookCellModelCacheTests | testInvalidateMultiple | 22ms |
| โ | BookCellModelCacheTests | testLRUEviction | 78ms |
| โ | BookCellModelCacheTests | testMemoryWarning | 62ms |
| โ | BookCellModelCacheTests | testModelCreation | 11ms |
| โ | BookCellModelCacheTests | testModelReuse_returnsSameInstanceAndDoesNotGrowCacheCount | 10ms |
| โ | BookCellModelCacheTests | testModelUpdate_SameInstance_DoesNotMutateBook | 13ms |
| โ | BookCellModelCacheTests | testModelUpdate_SwapsInstance_IgnoringTimestamp | 17ms |
| โ | BookCellModelCacheTests | testModelUpdate_WithNewerBook_DefersUpdateToTask | 15ms |
| โ | BookCellModelCacheTests | testModelUpdate_WithSameBook_DoesNotUpdate | 11ms |
| โ | BookCellModelCacheTests | testModelUpdatesWhenBookChanges | 17ms |
| โ | BookCellModelCacheTests | testPreload | 38ms |
| โ | BookCellModelComputedPropertyTests | testAuthors_ReturnsBookAuthors | 11ms |
| โ | BookCellModelComputedPropertyTests | testAuthors_ReturnsEmptyStringWhenNil | 4ms |
| โ | BookCellModelComputedPropertyTests | testBookState_ReturnsRegistryStateByDefault | 5ms |
| โ | BookCellModelComputedPropertyTests | testBookState_SetToNonReturning_ClearsOverride | 5ms |
| โ | BookCellModelComputedPropertyTests | testBookState_SetToReturning_OverridesRegistryState | 8ms |
| โ | BookCellModelComputedPropertyTests | testButtonTypes_WhenReturning_UsesReturningState | 18ms |
| โ | BookCellModelComputedPropertyTests | testIsManagingHold_DefaultsFalse | 17ms |
| โ | BookCellModelComputedPropertyTests | testIsProcessing_ReturnsIsLoading | 6ms |
| โ | BookCellModelComputedPropertyTests | testLoadBookCoverImage_UsesCachedImage | 37ms |
| โ | BookCellModelComputedPropertyTests | testShowHalfSheet_CanBeToggled | 7ms |
| โ | BookCellModelComputedPropertyTests | testShowHalfSheet_DefaultsFalse | 4ms |
| โ | BookCellModelComputedPropertyTests | testShowUnreadIndicator_FalseForDownloadFailed | 5ms |
| โ | BookCellModelComputedPropertyTests | testShowUnreadIndicator_FalseForDownloading | 7ms |
| โ | BookCellModelComputedPropertyTests | testShowUnreadIndicator_FalseForHolding | 331ms |
| โ | BookCellModelComputedPropertyTests | testShowUnreadIndicator_FalseForUnregistered | 4ms |
| โ | BookCellModelComputedPropertyTests | testShowUnreadIndicator_FalseForUsed | 6ms |
| โ | BookCellModelComputedPropertyTests | testShowUnreadIndicator_TrueForDownloadSuccessful | 127ms |
| โ | BookCellModelComputedPropertyTests | testStatePublisher_EmitsOnIsLoadingChange | 5ms |
| โ | BookCellModelComputedPropertyTests | testTitle_ReturnsBookTitle | 4ms |
| โ | BookCellModelOfflineTests | testDidSelectDownload_whenOffline_doesNotInvokeDownloadCenter | 45ms |
| โ | BookCellModelOfflineTests | testDidSelectDownload_whenOffline_doesNotSetIsLoading | 21ms |
| โ | BookCellModelOfflineTests | testDidSelectDownload_whenOffline_surfacesRetryableNoConnectionAlert | 15ms |
| โ | BookCellModelOfflineTests | testDidSelectDownload_whenOnline_proceedsWithoutAlert | 12ms |
| โ | BookCellModelOfflineTests | testDidSelectReserve_whenOffline_doesNotSetIsLoading | 23ms |
| โ | BookCellModelOfflineTests | testReachabilityDropsToOffline_whileLoading_clearsLoadingAndShowsAlert | 65ms |
| โ | BookCellModelOfflineTests | testReachabilityInitialState_offline_withoutLoading_doesNotShowAlert | 10ms |
| โ | BookCellModelOfflineTests | testReachabilityRecovers_doesNotAutoStartDownload | 57ms |
| โ | BookCellModelOfflineTests | testReadAction_whenOffline_isNotGatedByReachability | 45ms |
| โ | BookCellModelRegistryBindingTests | testRegistryStateChange_ClearsLoadingForTerminalStates | 16ms |
| โ | BookCellModelRegistryBindingTests | testRegistryStateChange_IgnoresOtherBookIds | 232ms |
| โ | BookCellModelRegistryBindingTests | testRegistryStateChange_ToDownloadFailed_ClearsLoading | 14ms |
| โ | BookCellModelRegistryBindingTests | testRegistryStateChange_UpdatesRegistryState | 10ms |
| โ | BookCellModelStateTests | testBookCellStateButtonState_MapsThroughCorrectly | 4ms |
| โ | BookCellModelStateTests | testBookCellStateForDownloadFailed | 15ms |
| โ | BookCellModelStateTests | testBookCellStateForDownloadInProgress | 12ms |
| โ | BookCellModelStateTests | testBookCellStateForDownloadSuccessful | 13ms |
| โ | BookCellModelStateTests | testDownloadErrorRoutesToCellAlertWhenHalfSheetHidden | 18ms |
| โ | BookCellModelStateTests | testDownloadErrorRoutesToHalfSheetAlertWhenHalfSheetVisible | 29ms |
| โ | BookCellModelStateTests | testInitialStateForDownloadFailed | 6ms |
| โ | BookCellModelStateTests | testInitialStateForDownloadNeeded | 6ms |
| โ | BookCellModelStateTests | testInitialStateForDownloading | 8ms |
| โ | BookCellModelStateTests | testInitialStateForHolding | 12ms |
| โ | BookCellModelStateTests | testInitialStateForUnregisteredBook | 7ms |
| โ | BookCellModelStateTests | testInitialStateMatchesRegistry | 7ms |
| โ | BookCellModelStateTests | testIsLoading_EmitsViaStatePublisher_WhenChanged | 12ms |
| โ | BookCellModelStateTests | testIsLoading_SettlesFalseAfterImageFetchCompletes | 16ms |
| โ | BookCellModelStateTests | testValidateStateConsistencyDetectsMismatch | 24ms |
| โ | BookCellModelStateTests | testValidateStateConsistencyPasses | 9ms |
| โ | BookCellStateComprehensiveTests | testBookCellState_CanBorrow_MapsToNormal | 2ms |
| โ | BookCellStateComprehensiveTests | testBookCellState_CanHold_MapsToNormal | 10ms |
| โ | BookCellStateComprehensiveTests | testBookCellState_DownloadFailed_MapsToDownloadFailed | 2ms |
| โ | BookCellStateComprehensiveTests | testBookCellState_DownloadInProgress_MapsToDownloading | 2ms |
| โ | BookCellStateComprehensiveTests | testBookCellState_DownloadNeeded_MapsToNormal | 4ms |
| โ | BookCellStateComprehensiveTests | testBookCellState_HoldingFrontOfQueue_MapsToNormal | 3ms |
| โ | BookCellStateComprehensiveTests | testBookCellState_Holding_MapsToNormal | 3ms |
| โ | BookCellStateComprehensiveTests | testBookCellState_ManagingHold_MapsToNormal | 7ms |
| โ | BookCellStateComprehensiveTests | testBookCellState_Returning_MapsToNormal | 2ms |
| โ | BookCellStateComprehensiveTests | testBookCellState_Unsupported_MapsToNormal | 2ms |
| โ | BookCellStateComprehensiveTests | testBookCellState_Used_MapsToNormal | 5ms |
| โ | BookCellStateComprehensiveTests | testButtonState_ExtractionFromDownloadFailed | 3ms |
| โ | BookCellStateComprehensiveTests | testButtonState_ExtractionFromDownloading | 27ms |
| โ | BookCellStateComprehensiveTests | testButtonState_ExtractionFromNormal | 2ms |
| โ | BookContentResetServiceTests | testPurge_force_invokesEvenWithActiveAudiobooks | 15ms |
| โ | BookContentResetServiceTests | testResetAccount_otherAccount_removesContentDirectory | 16ms |
| โ | BookDetailMetadataHydrationTests | testHydrate_PopulatesAudienceAndLanguageFromAlternateFeed | 8ms |
| โ | BookDetailMetadataHydrationTests | testHydrate_PreservesAcquisitionAndNavigationalURLs | 28ms |
| โ | BookDetailMetadataHydrationTests | testHydrate_TriggeredWhenOnlyAudienceOrLanguageMissing_DoesNotFireIfOthersPopulated | 36ms |
| โ | BookDetailMetadataHydrationTests | testHydrate_WhenAllTargetFieldsEmpty_PopulatesFromAlternateFeed | 15ms |
| โ | BookDetailMetadataHydrationTests | testHydrate_WhenMetadataAlreadyPresent_DoesNotFetch | 17ms |
| โ | BookDetailMetadataHydrationTests | testHydrate_WhenNoAlternateURL_DoesNotFetch | 24ms |
| โ | BookDetailViewModelTests | testAllBookStates_HaveValidMapping | 4ms |
| โ | BookDetailViewModelTests | testAllButtonStates_HaveValidButtonTypes | 74ms |
| โ | BookDetailViewModelTests | testAvailability_Nil_ReturnsNil | 4ms |
| โ | BookDetailViewModelTests | testAvailability_Unlimited_MapsToCanBorrow | 3ms |
| โ | BookDetailViewModelTests | testBookContentType_Audiobook | 11ms |
| โ | BookDetailViewModelTests | testBookContentType_EPUB | 5ms |
| โ | BookDetailViewModelTests | testBookContentType_PDF | 8ms |
| โ | BookDetailViewModelTests | testBookLane_Creation | 9ms |
| โ | BookDetailViewModelTests | testBookLane_EmptyBooks | 2ms |
| โ | BookDetailViewModelTests | testBookLane_WithNilURL | 5ms |
| โ | BookDetailViewModelTests | testBookState_SetReturning_SetsLocalOverride_HidesViaRegistryOnlyWhenUnregistered | 14ms |
| โ | BookDetailViewModelTests | testBookState_SetUnregistered_ClearsLocalOverride | 5ms |
| โ | BookDetailViewModelTests | testBook_GetExpirationDate_ReturnsDate_WhenLimitedAvailability | 13ms |
| โ | BookDetailViewModelTests | testBook_GetExpirationDate_ReturnsNilForUnborrowed | 5ms |
| โ | BookDetailViewModelTests | testButtonState_DownloadFailed_MapsToDownloadFailed | 9ms |
| โ | BookDetailViewModelTests | testButtonState_DownloadNeeded_MapsToDownloadNeeded | 2ms |
| โ | BookDetailViewModelTests | testButtonState_DownloadSuccessful_MapsToDownloadSuccessful | 2ms |
| โ | BookDetailViewModelTests | testButtonState_Downloading_MapsToDownloadInProgress | 2ms |
| โ | BookDetailViewModelTests | testButtonState_Holding_MapsToHolding | 2ms |
| โ | BookDetailViewModelTests | testButtonState_IsProcessingDownload_MapsToDownloadInProgress | 2ms |
| โ | BookDetailViewModelTests | testButtonState_Returning_MapsToReturning | 2ms |
| โ | BookDetailViewModelTests | testButtonState_ReturnsStableButtonState | 5ms |
| โ | BookDetailViewModelTests | testButtonState_Unregistered_MapsToCanBorrow | 2ms |
| โ | BookDetailViewModelTests | testButtonState_Used_MapsToUsed | 2ms |
| โ | BookDetailViewModelTests | testButtonTypesProvider_DelegatesToStableButtonState | 45ms |
| โ | BookDetailViewModelTests | testButtonTypes_CanBorrowAudiobookWithSample_IncludesAudiobookSample | 12ms |
| โ | BookDetailViewModelTests | testButtonTypes_CanBorrowWithSample_IncludesSampleButton | 12ms |
| โ | BookDetailViewModelTests | testButtonTypes_CanBorrow_ReturnsGetButton | 11ms |
| โ | BookDetailViewModelTests | testButtonTypes_CanHold_ReturnsReserveButton | 9ms |
| โ | BookDetailViewModelTests | testButtonTypes_DownloadFailed_ReturnsCancelAndRetry | 10ms |
| โ | BookDetailViewModelTests | testButtonTypes_DownloadInProgress_ReturnsCancelButton | 10ms |
| โ | BookDetailViewModelTests | testButtonTypes_DownloadSuccessful_AudiobookReturnsListen | 14ms |
| โ | BookDetailViewModelTests | testButtonTypes_DownloadSuccessful_EpubReturnsRead | 17ms |
| โ | BookDetailViewModelTests | testButtonTypes_PreviewDisabled_ExcludesSampleButton | 31ms |
| โ | BookDetailViewModelTests | testButtonTypes_Returning_ReturnsReturningButton | 11ms |
| โ | BookDetailViewModelTests | testButtonTypes_Unsupported_ReturnsEmpty | 6ms |
| โ | BookDetailViewModelTests | testCredentialCheck_AllowsActionWhenLoggedIn | 8ms |
| โ | BookDetailViewModelTests | testCredentialCheck_PreventsActionWhenNotLoggedIn | 2ms |
| โ | BookDetailViewModelTests | testDidSelectCancel_ResetsDownloadProgress | 8ms |
| โ | BookDetailViewModelTests | testDownloadProgress_IgnoresDifferentBook | 526ms |
| โ | BookDetailViewModelTests | testDownloadProgress_NeverGoesBackwards | 17ms |
| โ | BookDetailViewModelTests | testEnsureAuthPattern_ChecksCredentialsAfterModalDismiss | 4ms |
| โ | BookDetailViewModelTests | testFetchRelatedBooks_NilURL_IsNoOp_AndDoesNotSetLoading | 5ms |
| โ | BookDetailViewModelTests | testHalfSheet_DismissedOnHoldPlaced | 2ms |
| โ | BookDetailViewModelTests | testHalfSheet_DismissedOnUnregistered | 2ms |
| โ | BookDetailViewModelTests | testHalfSheet_StaysOpenDuringDownload | 4ms |
| โ | BookDetailViewModelTests | testHalfSheet_StaysOpenOnDownloadFailed | 4ms |
| โ | BookDetailViewModelTests | testHalfSheet_StaysOpenOnDownloadSuccess | 3ms |
| โ | BookDetailViewModelTests | testHalfSheet_StaysOpenOnUsedState | 4ms |
| โ | BookDetailViewModelTests | testHandleAction_Cancel_ResetsDownloadProgressToZero | 7ms |
| โ | BookDetailViewModelTests | testHandleAction_Close_DoesNothingButInsertsProcessing | 9ms |
| โ | BookDetailViewModelTests | testHandleAction_DuplicateTap_IsIgnored | 5ms |
| โ | BookDetailViewModelTests | testHandleAction_ManageHold_SetsManagingHoldAndHoldingState | 5ms |
| โ | BookDetailViewModelTests | testHandleBookRegistryChange_UpdatesBookFromRegistry | 9ms |
| โ | BookDetailViewModelTests | testHoldingState_ButtonTypesIncludeHoldManagement | 11ms |
| โ | BookDetailViewModelTests | testHoldingState_MapsFromBorrowAttempt | 2ms |
| โ | BookDetailViewModelTests | testIsFullSize_ReturnsFalseOnNonIpad | 10ms |
| โ | BookDetailViewModelTests | testIsProcessing_ReturnsTrueWhenButtonInSet | 6ms |
| โ | BookDetailViewModelTests | testManagedHoldState_ButtonTypes | 13ms |
| โ | BookDetailViewModelTests | testProcessingButtonTypes_DownloadRelated | 2ms |
| โ | BookDetailViewModelTests | testProcessingButtons_ClearedWhenLoginCancelled | 26ms |
| โ | BookDetailViewModelTests | testProcessingButtons_DidSetUpdatesIsProcessingFlag | 6ms |
| โ | BookDetailViewModelTests | testRegistryTransitionToDownloadFailed_ClearsDownloadProcessingButtons | 10ms |
| โ | BookDetailViewModelTests | testRegistryTransitionToDownloadSuccessful_ClearsDownloadProcessingButtons | 9ms |
| โ | BookDetailViewModelTests | testRegistryTransitionToDownloading_ClearsDownloadProcessingButtons | 14ms |
| โ | BookDetailViewModelTests | testRegistryTransitionToHolding_ClearsReserveAndDismissesHalfSheet | 25ms |
| โ | BookDetailViewModelTests | testRegistryTransitionToUnregistered_ResetsManagingHoldAndHalfSheetAndReturning | 14ms |
| โ | BookDetailViewModelTests | testRelatedBooks_ClearedWhenNavigatingToDifferentBook | 16ms |
| โ | BookDetailViewModelTests | testRelatedBooks_PersistAfterViewReappears | 16ms |
| โ | BookDetailViewModelTests | testRelatedBooks_PreservedDuringRefetchForSameBook | 13ms |
| โ | BookDetailViewModelTests | testRemoveProcessingButton_RemovesTheButton | 8ms |
| โ | BookDetailViewModelTests | testSelectRelatedBook_DifferentBook_UpdatesBookAndClearsLanes | 8ms |
| โ | BookDetailViewModelTests | testSelectRelatedBook_SameBook_IsNoOp | 7ms |
| โ | BookDetailViewModelTests | testShowMoreBooksForLane_LaneWithNilURL_DoesNotSetSelected | 9ms |
| โ | BookDetailViewModelTests | testShowMoreBooksForLane_MissingLane_LeavesSelectedNil | 7ms |
| โ | BookDetailViewModelTests | testShowMoreBooksForLane_SetsSelectedBookURL | 6ms |
| โ | BookDetailViewModelTests | testStableButtonState_ManagingHold_WhileHoldingOverridesToManagingHold | 7ms |
| โ | BookDetailViewModelTests | testStableButtonState_UpdatesWhenBookStateChanges | 13ms |
| โ | BookDetailViewModelTests | testViewModel_BookStatePublisher_TriggersBookUpdate | 7ms |
| โ | BookDetailViewModelTests | testViewModel_ReceivesBookFromRegistry_NotCachedVersion | 10ms |
| โ | BookDetailViewModelTests | testViewModel_UpdatesBookWhenRegistryChanges | 21ms |
| โ | BookFileManagerTests | testContentDirectoryURL_createsDirectoryOnFirstCall | 4ms |
| โ | BookFileManagerTests | testContentDirectoryURL_distinctAccounts_distinctDirectories | 7ms |
| โ | BookFileManagerTests | testContentDirectoryURL_idempotent_reusesExistingDirectory | 4ms |
| โ | BookFileManagerTests | testFileUrl_byIdentifier_andByBook_returnSameUrlForSameAccount | 7ms |
| โ | BookFileManagerTests | testFileUrl_byIdentifier_returnsNilWhenBookNotInRegistry | 8ms |
| โ | BookFileManagerTests | testFileUrl_byIdentifier_returnsUrlWhenBookInRegistry | 33ms |
| โ | BookFileManagerTests | testFileUrl_forBook_buildsHashedFileNameWithEpubExtension | 8ms |
| โ | BookFileManagerTests | testPathExtension_defaultsToEpub_forNilOrNonLCPBooks | 11ms |
| โ | BookPreviewTests | testEpubBookPreviewExtraction | 5ms |
| โ | BookPreviewTests | testOverdriveMPEGAudiobookExtraction | 5ms |
| โ | BookPreviewTests | testOverdriveWaveAudiobookExtraction | 7ms |
| โ | BookPreviewTests | testOverdriveWebAudiobookExtraction | 3ms |
| โ | BookRegistryStoreTests | test_addBook_thenRetrieve | 17ms |
| โ | BookRegistryStoreTests | test_addBook_withLocationAndBookmarks | 9ms |
| โ | BookRegistryStoreTests | test_allBooks_returnsAllRegisteredBooks | 22ms |
| โ | BookRegistryStoreTests | test_bookForIdentifier_returnsNilForUnregisteredOrInvalidInputs | 9ms |
| โ | BookRegistryStoreTests | test_concurrentReadsAndWrites_noDataRace | 289ms |
| โ | BookRegistryStoreTests | test_fulfillmentId_emptyIdentifier_returnsNil | 3ms |
| โ | BookRegistryStoreTests | test_fulfillmentId_nilIdentifier_returnsNil | 2ms |
| โ | BookRegistryStoreTests | test_fulfillmentId_setAndGet | 10ms |
| โ | BookRegistryStoreTests | test_heldBooks_onlyReturnsHoldingState | 15ms |
| โ | BookRegistryStoreTests | test_mutateRegistrySync_directMutation | 12ms |
| โ | BookRegistryStoreTests | test_myBooks_returnsCorrectStates | 47ms |
| โ | BookRegistryStoreTests | test_processing_defaultsFalseForUnknownAndRegisteredBooks | 19ms |
| โ | BookRegistryStoreTests | test_readRegistry_returnsSnapshot | 9ms |
| โ | BookRegistryStoreTests | test_record_returnsNilForUnregisteredOrInvalidInputs | 40ms |
| โ | BookRegistryStoreTests | test_registrySnapshot_returnsDictionaryRepresentations | 28ms |
| โ | BookRegistryStoreTests | test_registrySubject_emitsOnAdd | 19ms |
| โ | BookRegistryStoreTests | test_removeAll_clearsRegistry | 23ms |
| โ | BookRegistryStoreTests | test_removeBook_nonexistentId_completesWithNilBook | 3ms |
| โ | BookRegistryStoreTests | test_removeBook_removesFromRegistry | 17ms |
| โ | BookRegistryStoreTests | test_setProcessing_true_thenFalse | 7ms |
| โ | BookRegistryStoreTests | test_setState_updatesState | 14ms |
| โ | BookRegistryStoreTests | test_state_returnsUnregisteredForUnregisteredOrInvalidInputs | 12ms |
| โ | BookRegistryStoreTests | test_updateAndRemoveBook_setsStateUnregistered | 6ms |
| โ | BookRegistryStoreTests | test_updatedBookMetadata_preservesExistingAuthorsWhenIncomingIsEmpty | 7ms |
| โ | BookRegistryStoreTests | test_updatedBookMetadata_returnsNilWhenBookIsNotInRegistry | 3ms |
| โ | BookRegistryStoreTests | test_updatedBookMetadata_takesIncomingAuthorsWhenPresent | 15ms |
| โ | BookRegistrySyncTests | test_bulkDeletionProtection_emptyFeedWithLargeLibrary_skipsDeletion | 5ms |
| โ | BookRegistrySyncTests | test_bulkDeletionProtection_emptyFeedWithSingleLocalBook_skipsDeletion | 6ms |
| โ | BookRegistrySyncTests | test_bulkDeletionProtection_emptyFeedWithTwoLocalBooks_skipsDeletion | 6ms |
| โ | BookRegistrySyncTests | test_bulkDeletionProtection_normalFeedDoesNotSkip | 3ms |
| โ | BookRegistrySyncTests | test_bulkDeletionProtection_zeroLocalBooks_doesNotSkip | 3ms |
| โ | BookRegistrySyncTests | test_checkIfBookFileExists_returnsFalseForUnknownBook | 11ms |
| โ | BookRegistrySyncTests | test_largeDeletionWarning_notTriggeredForSmallRatio | 2ms |
| โ | BookRegistrySyncTests | test_loadStateTransition_downloadingWithNoFile_becomesDownloadFailed | 6ms |
| โ | BookRegistrySyncTests | test_load_allowsLoadForDifferentAccount | 14ms |
| โ | BookRegistrySyncTests | test_load_preventsReentrantLoadsForSameAccount | 22ms |
| โ | BookRegistrySyncTests | test_load_withMalformedJSON_doesNotCrashAndLoadsEmpty | 6ms |
| โ | BookRegistrySyncTests | test_load_withMissingFile_transitionsToLoadedWithEmptyRegistry | 14ms |
| โ | BookRegistrySyncTests | test_registrySnapshot_producesSerializableData | 23ms |
| โ | BookRegistrySyncTests | test_registryUrl_returnsPathContainingAccountAndRegistryFile | 5ms |
| โ | BookRegistrySyncTests | test_reset_clearsSyncUrlAndStore | 15ms |
| โ | BookRegistrySyncTests | test_reset_removesRegistryFileFromDisk | 12ms |
| โ | BookRegistrySyncTests | test_storeSnapshotWithMultipleStates | 38ms |
| โ | BookRegistrySyncTests | test_syncUrl_isSetDuringSync_andClearedAfter | 3ms |
| โ | BookRegistrySyncTests | test_sync_whenAlreadySyncing_returnsWithoutChangingState | 4ms |
| โ | BookRegistrySyncTests | test_sync_whenStateIsLoading_shortCircuitsBeforeTouchingAccounts | 3ms |
| โ | BookRegistrySyncTests | test_sync_whenStateIsUnloaded_shortCircuitsBeforeTouchingAccounts | 23ms |
| โ | BookRegistrySyncTests | test_sync_withNoCurrentAccount_isNoOp | 5ms |
| โ | BookRegistrySyncTests | test_validateDownloadedContent_marksDownloadNeededWhenFileMissing | 9ms |
| โ | BookReturnServiceTests | testReturnBook_bookNotInRegistry_callsCompletionAndDoesNothing | 16ms |
| โ | BookReturnServiceTests | testReturnBook_noRevokeURL_downloaded_deletesContentAndRemovesBook | 12ms |
| โ | BookReturnServiceTests | testReturnBook_noRevokeURL_notDownloaded_skipsContentDeletion | 100ms |
| โ | BookReturnServiceTests | testReturnBook_revokeURLReturnsGenericError_announcesFailureAndRunsCompletion | 794ms |
| โ | BookReturnServiceTests | testReturnBook_revokeURLReturnsInvalidCredentials_reauthenticatesAndRetries | 335ms |
| โ | BookReturnServiceTests | testReturnBook_revokeURLReturnsLoanTermLimitDetail_cleansUpLocallyAndAnnouncesSuccess | 15ms |
| โ | BookReturnServiceTests | testReturnBook_revokeURLReturnsNoActiveLoan_cleansUpLocallyAndAnnouncesSuccess | 24ms |
| โ | BookReturnServiceTests | testReturnBook_revokeURLReturnsParsingError_treatsAsSuccessAndCleansUp | 22ms |
| โ | BookSignInRedirectHandlerTests | testClearAndSetCookies_replacesSessionCookiesWithUserAccountCookies | 8ms |
| โ | BookSignInRedirectHandlerTests | testHandleBookFound_nilRequest_skipsRetry | 4ms |
| โ | BookSignInRedirectHandlerTests | testHandleBookFound_setsCookiesAndRetriesDownloadIfRequestPresent | 7ms |
| โ | BookSignInRedirectHandlerTests | testHandleLoginCancellation_setsDownloadNeededAndCancelsViaDelegate | 5ms |
| โ | BookSignInRedirectHandlerTests | testHandleProblem_alreadySAMLStarted_setsFailedAndPresentsReauthModal | 35ms |
| โ | BookSignInRedirectHandlerTests | testHandleProblem_hasCredentialsAndNotSaml_logsButDoesNotAuthenticate | 75ms |
| โ | BookSignInRedirectHandlerTests | testHandleProblem_noCredentialsLoginRequired_presentsReauthAndRetriesOnHasCredentials | 32ms |
| โ | BookSignInRedirectHandlerTests | testHandleProblem_samlCookiesExpired_setsSAMLStartedAndRetries | 48ms |
| โ | BookStateIntegrationTests | testBookBorrow_UpdatesRegistry | 4ms |
| โ | BookStateIntegrationTests | testBookDownloadFailure_UpdatesStateToDownloadFailed | 6ms |
| โ | BookStateIntegrationTests | testBookReturn_RemovesFromRegistry | 7ms |
| โ | BookStateIntegrationTests | testBookStateChange_PublishesViaCombine | 5ms |
| โ | BookStateIntegrationTests | testBookStateTransition_FullDownloadLifecycle | 5ms |
| โ | BookStateIntegrationTests | testBookWithHolds_ShowsHoldingState | 4ms |
| โ | BookStateIntegrationTests | testConcurrentStateChanges_DoNotCorruptRegistry | 19ms |
| โ | BookStateIntegrationTests | testRegistryPublisher_EmitsOnBookAdd | 11ms |
| โ | BookmarkBusinessLogicExtendedTests | testBookmarkAtIndex_returnsNilForOutOfRangeIndicesAndItemForValid | 132ms |
| โ | BookmarkBusinessLogicExtendedTests | testBookmarkAtIndex_validIndex_returnsBookmark | 113ms |
| โ | BookmarkBusinessLogicExtendedTests | testDeleteBookmarkAtIndex_guardsOutOfRangeAndRemovesOnlyValidIndex | 95ms |
| โ | BookmarkBusinessLogicExtendedTests | testDeleteBookmarkAtIndex_validIndex_removesAndReturns | 112ms |
| โ | BookmarkBusinessLogicExtendedTests | testDeleteBookmark_existingBookmark_removes | 127ms |
| โ | BookmarkBusinessLogicExtendedTests | testReadOnlySurfaces_noBookmarksText_shouldSelect_shouldAllowRefresh | 133ms |
| โ | BookmarkDeletionLogTests | testUpdateLocalBookmarks_matchingLocalBookmark_preservesLocal | 121ms |
| โ | BookmarkDeletionLogTests | testUpdateLocalBookmarks_serverBookmarkNotDeleted_addsLocally | 122ms |
| โ | BookmarkDeletionLogTests | testUpdateLocalBookmarks_withPendingDeletion_deletesFromServer | 115ms |
| โ | BookmarkDeviceIdMatchingTests | testUpdateLocalBookmarks_ServerBookmarkFromDifferentDevice_AddedLocally | 124ms |
| โ | BookmarkDeviceIdMatchingTests | testUpdateLocalBookmarks_ServerBookmarkFromSameDevice_NotLocallyPresent_MarkedForDeletion | 115ms |
| โ | BookmarkDeviceIdMatchingTests | testUpdateLocalBookmarks_ServerBookmarkWithNilDevice_AddedLocally | 207ms |
| โ | BookmarkExistenceTests | testIsBookmarkExisting_differentProgress_returnsNil | 85ms |
| โ | BookmarkExistenceTests | testIsBookmarkExisting_matchingBookmark_returnsBookmark | 91ms |
| โ | BookmarkExistenceTests | testIsBookmarkExisting_noBookmarks_returnsNil | 88ms |
| โ | BookmarkExistenceTests | testIsBookmarkExisting_returnsNilForNilLocationAndForLocationWithoutMatch | 86ms |
| โ | BookmarkManagerTests | test_addGenericBookmark | 21ms |
| โ | BookmarkManagerTests | test_addGenericBookmark_initializesArrayIfNil | 14ms |
| โ | BookmarkManagerTests | test_addGenericBookmark_toMissingBook_doesNotCrash | 497ms |
| โ | BookmarkManagerTests | test_addMultipleReadiumBookmarks_sortedByProgress | 29ms |
| โ | BookmarkManagerTests | test_addOrReplaceGenericBookmark_addsWhenNew | 81ms |
| โ | BookmarkManagerTests | test_addOrReplaceGenericBookmark_initializesArrayIfNil | 52ms |
| โ | BookmarkManagerTests | test_addOrReplaceGenericBookmark_replacesExisting | 67ms |
| โ | BookmarkManagerTests | test_addReadiumBookmark | 20ms |
| โ | BookmarkManagerTests | test_addReadiumBookmark_initializesArrayIfNil | 18ms |
| โ | BookmarkManagerTests | test_addReadiumBookmark_toMissingBook_doesNotCrash | 4ms |
| โ | BookmarkManagerTests | test_bookmarksAreIsolatedBetweenBooks | 117ms |
| โ | BookmarkManagerTests | test_deleteGenericBookmark_byAnnotationId | 20ms |
| โ | BookmarkManagerTests | test_deleteGenericBookmark_bySimilarity | 21ms |
| โ | BookmarkManagerTests | test_deleteReadiumBookmark | 24ms |
| โ | BookmarkManagerTests | test_everyMutationCallsSave | 101ms |
| โ | BookmarkManagerTests | test_locationAndBookmarksAreIndependent | 32ms |
| โ | BookmarkManagerTests | test_missingBook_locationAndBookmarkLookups_returnAbsentValues | 3ms |
| โ | BookmarkManagerTests | test_replaceGenericBookmark | 23ms |
| โ | BookmarkManagerTests | test_replaceReadiumBookmark | 18ms |
| โ | BookmarkManagerTests | test_setAndGetLocation | 16ms |
| โ | BookmarkManagerTests | test_setLocationSync_callsSaveSyncInsteadOfSave | 14ms |
| โ | BookmarkManagerTests | test_setLocationSync_emptyIdentifier_neitherSyncNorAsyncSaveFires | 3ms |
| โ | BookmarkManagerTests | test_setLocation_emptyIdentifier_doesNotSaveAndDoesNotTouchAnyBook | 23ms |
| โ | BookmarkManagerTests | test_setLocation_nil_clearsLocation | 23ms |
| โ | BookmarkSortingTests | testBookmarks_sortedByProgressWithinBook | 96ms |
| โ | BookmarkSyncTests | testUpdateLocalBookmarks_addsServerBookmarks | 97ms |
| โ | BookmarkSyncTests | testUpdateLocalBookmarks_handlesEmptyServerList | 102ms |
| โ | BookmarkSyncTests | testUpdateLocalBookmarks_preservesFailedUploads | 103ms |
| โ | BorrowErrorMessageTests | testAllRetryableParsingErrors_showUserFriendlyBaseMessage | 3ms |
| โ | BorrowErrorMessageTests | testBookTitle_isIncludedInMessage | 3ms |
| โ | BorrowErrorMessageTests | testDifferentBookTitles_produceDistinctMessages | 3ms |
| โ | BorrowErrorMessageTests | testMessageFormat_matchesLegacyPattern_noProblemDoc | 5ms |
| โ | BorrowErrorMessageTests | testMessageFormat_matchesLegacyPattern_withProblemDoc | 3ms |
| โ | BorrowErrorMessageTests | testNetworkErrors_showUserFriendlyBaseMessage | 5ms |
| โ | BorrowErrorMessageTests | testNilProblemDocument_usesRecoverySuggestion | 2ms |
| โ | BorrowErrorMessageTests | testNoTechnicalErrorString_appearsAsMessage | 3ms |
| โ | BorrowErrorMessageTests | testOPDSFeedInvalid_showsUserFriendlyMessage_notTechnicalError | 2ms |
| โ | BorrowErrorMessageTests | testProblemDocument_takesPriorityOverRecoverySuggestion | 2ms |
| โ | BorrowErrorMessageTests | testWithProblemDocument_appendsServerDetail | 5ms |
| โ | BorrowErrorMessageTests | testWithProblemDocument_emptyDetail_fallsBackToBaseMessage | 2ms |
| โ | BorrowErrorMessageTests | testWithProblemDocument_nilDetail_fallsBackToBaseMessage | 3ms |
| โ | BorrowErrorPresenterTests | testProcess_genericProblemDoc_publishesAlertWithProblemDocDetail | 33ms |
| โ | BorrowErrorPresenterTests | testProcess_invalidCredentialsTwice_secondCallSkipsReauthAndShowsAlert | 191ms |
| โ | BorrowErrorPresenterTests | testProcess_invalidCredentialsWhileAlreadyRequesting_skipsBoth | 75ms |
| โ | BorrowErrorPresenterTests | testProcess_invalidCredentials_triggersReauthAndRetriesViaDelegate | 172ms |
| โ | BorrowErrorPresenterTests | testProcess_loanAlreadyExists_publishesLoanAlreadyExistsAlertWithoutRetry | 32ms |
| โ | BorrowErrorPresenterTests | testProcess_noErrorDict_publishesGenericBorrowFailedAlert | 31ms |
| โ | BorrowOperationTests | testBorrowAsync_attemptDownloadTrue_callsDelegateStartDownload | 176ms |
| โ | BorrowOperationTests | testBorrowAsync_genericError_presentsAlertAndRethrows | 178ms |
| โ | BorrowOperationTests | testBorrowAsync_holdingRace_throwsHoldCopyUnavailableAndSetsHolding | 56ms |
| โ | BorrowOperationTests | testBorrowAsync_noAcquisitionURL_throwsInvalidState | 19ms |
| โ | BorrowOperationTests | testBorrowAsync_success_addsBookToRegistryAsDownloadNeeded | 8ms |
| โ | BorrowReducerTests | testBookStateAssigned_toOtherState_doesNotChangeOverride | 3ms |
| โ | BorrowReducerTests | testBookStateAssigned_toReturning_armsTheOverride | 2ms |
| โ | BorrowReducerTests | testBookStateAssigned_toUnregistered_clearsTheOverride | 2ms |
| โ | BorrowReducerTests | testCancelTapped_resetsDownloadProgressAndIsIdempotent | 2ms |
| โ | BorrowReducerTests | testDownloadErrorOccurred_resyncsBookStateAndPurgesAllAcquireSpinners | 4ms |
| โ | BorrowReducerTests | testDownloadProgressUpdated_clampsToMaxSeen_neverSlidesBackward | 2ms |
| โ | BorrowReducerTests | testDownloadStartConfirmed_setsDownloadingAndOpensHalfSheet | 4ms |
| โ | BorrowReducerTests | testManageHoldTapped_setsHoldingStateAndManagingFlag | 2ms |
| โ | BorrowReducerTests | testProcessingButtonInserted_addsTheButton | 2ms |
| โ | BorrowReducerTests | testProcessingButtonRemoved_removesOnlyThatButton_andIsIdempotent | 5ms |
| โ | BorrowReducerTests | testRegistryStateChanged_toDownloadFailed_keepsHalfSheetOpenForRetryAlert | 4ms |
| โ | BorrowReducerTests | testRegistryStateChanged_toDownloadSuccessful_keepsHalfSheetOpenSoUserCanReadOrListen | 5ms |
| โ | BorrowReducerTests | testRegistryStateChanged_toDownloading_clearsDownloadSpinnersOnly | 3ms |
| โ | BorrowReducerTests | testRegistryStateChanged_toHolding_clearsReserveAndDismissesHalfSheet | 5ms |
| โ | BorrowReducerTests | testRegistryStateChanged_toUnregistered_closesHalfSheetAndClearsReturnSpinners | 2ms |
| โ | BorrowReducerTests | testRegistryStateChanged_whenReturningOverrideArmed_acceptsUnregisteredAsTerminal | 2ms |
| โ | BorrowReducerTests | testRegistryStateChanged_whenReturningOverrideArmed_suppressesNonTerminalState | 2ms |
| โ | BorrowReducerTests | testReturnStartConfirmed_insertsReturningSpinnerOnlyAndPreservesBookState | 2ms |
| โ | BorrowReducerTests | testSignInCancelled_releasesAcquireSpinnersAndPreservesUnrelatedFlags | 8ms |
| โ | ButtonStateTests | testCanBorrow_audiobookButtonsRespectPreviewToggle | 4ms |
| โ | ButtonStateTests | testCanBorrow_epubButtonsRespectPreviewToggle | 10ms |
| โ | ButtonStateTests | testCanHold_audiobookButtonsRespectPreviewToggle | 3ms |
| โ | ButtonStateTests | testCanHold_epubButtonsRespectPreviewToggle | 8ms |
| โ | ButtonStateTests | testDownloadFailed_yieldsCancelAndRetry | 17ms |
| โ | ButtonStateTests | testDownloadInProgress_yieldsOnlyCancelButton | 5ms |
| โ | ButtonStateTests | testDownloadNeededAudiobook | 5ms |
| โ | ButtonStateTests | testDownloadNeededEpub | 5ms |
| โ | ButtonStateTests | testDownloadSuccessfulAudiobook | 13ms |
| โ | ButtonStateTests | testDownloadSuccessfulEpub | 5ms |
| โ | ButtonStateTests | testDownloadSuccessfulPDF | 35ms |
| โ | ButtonStateTests | testHoldingFrontOfQueue_withoutHoldReady_returnsManageHoldOnly | 11ms |
| โ | ButtonStateTests | testHolding_audiobookButtonsRespectPreviewToggle | 7ms |
| โ | ButtonStateTests | testHolding_epubButtonsRespectPreviewToggle | 5ms |
| โ | ButtonStateTests | testUnsupported_yieldsEmptyButtonSetAndNoLeakageFromOtherStates | 5ms |
| โ | ButtonStateTests | testUsedEpub | 4ms |
| โ | ButtonStyleTypeTests | testAllCases | 2ms |
| โ | ButtonStyleTypeTests | testEquality | 36ms |
| โ | C64ConversionTests | testC64ConverionWithAccentedString | 2ms |
| โ | C64ConversionTests | testC64ConverionWithEmptyString | 1ms |
| โ | C64ConversionTests | testC64ConverionWithNilString | 2ms |
| โ | C64ConversionTests | testC64ConverionWithRegularString | 1ms |
| โ | C64ConversionTests | testC64ConverionWithSpecialCharacters | 4ms |
| โ | C64ConversionTests | testC64ConverionWithUnicodeCharecters | 6ms |
| โ | CarPlayChapterListTests | testCarPlayBridge_NoChaptersAvailable_ReturnsNil | 15ms |
| โ | CarPlayChapterListTests | testCarPlayBridge_NoPlayback_CurrentChapterIsNil | 5ms |
| โ | CarPlayChapterListTests | testCarPlayBridge_SkipToChapter_WithoutPlayback_DoesNotCrash | 24ms |
| โ | CarPlayIntegrationTests | testCarPlayTemplateIntegration_BookSelectionHandling | 3ms |
| โ | CarPlayIntegrationTests | testCarPlay_ImageProvider_CachesBehavior | 12ms |
| โ | CarPlayLibraryRefreshTests | testCarPlay_BookRegistry_IsAccessible | 5ms |
| โ | CarPlayLibraryRefreshTests | testCarPlay_DownloadedAudiobooks_CanBeFiltered | 3ms |
| โ | CarPlayLibraryRefreshTests | testCarPlay_LibraryName_CanBeUpdated | 4ms |
| โ | CarPlayNowPlayingTemplateTests | testCarPlayBridge_DoesNotConfigureNowPlayingOnInit | 7ms |
| โ | CarPlayNowPlayingTemplateTests | testCarPlayBridge_HasPlaybackStatePublisher | 511ms |
| โ | CarPlayNowPlayingTemplateTests | testCarPlayBridge_NowPlayingConfigurationIsIdempotent | 3ms |
| โ | CarPlayNowPlayingTemplateTests | testCarPlayImageProvider_InitializesIndependently | 9ms |
| โ | CarPlayOpenAppAlertTests | testCarPlay_OpenAppMessage_MentionsPalace | 5ms |
| โ | CarPlayOpenAppAlertTests | testCarPlay_OpenAppMessage_MentionsPhone | 3ms |
| โ | CarPlayOpenAppAlertTests | testCarPlay_OpenAppStrings_AreConfigured | 4ms |
| โ | CarPlayOpenAppAlertTests | testSceneDelegate_HasMainSceneConnected_Flag | 4ms |
| โ | CarPlayPlaybackErrorTests | testAudiobookSessionError_MapsToCarPlayAlert | 3ms |
| โ | CarPlayPlaybackErrorTests | testBridge_currentBook_nilWhenNoSession | 6ms |
| โ | CarPlayPlaybackErrorTests | testBridge_isPlaying_reflectsSessionManager | 4ms |
| โ | CarPlayPlaybackErrorTests | testCarPlay_ErrorStrings_AuthRequired | 3ms |
| โ | CarPlayPlaybackErrorTests | testCarPlay_ErrorStrings_NotDownloaded | 3ms |
| โ | CarPlayPlaybackErrorTests | testCarPlay_ErrorStrings_Offline | 2ms |
| โ | CarPlayPlaybackErrorTests | testCarPlay_ErrorStrings_PlaybackFailed | 2ms |
| โ | CarPlayPlaybackErrorTests | testNowPlayingInfo_isAccessible | 11ms |
| โ | CarPlayTests | testAudiobookSessionManager_Initialization | 3ms |
| โ | CarPlayTests | testCarPlayBridge_Initialization | 7ms |
| โ | CarPlayTests | testCarPlayImageProvider_GeneratesPlaceholder | 9ms |
| โ | CarPlayTests | testCarPlay_BookDownloadedState | 4ms |
| โ | CarPlayTests | testCarPlay_ChapterListFormatting | 3ms |
| โ | CarPlayTests | testCarPlay_ChapterNumber_Formatting | 5ms |
| โ | CarPlayTests | testCarPlay_ErrorStrings_NotEmpty | 4ms |
| โ | CarPlayTests | testCarPlay_FiltersOnlyAudiobooks | 12ms |
| โ | CarPlayTests | testCarPlay_NoEbooksInLibrary | 14ms |
| โ | CarPlayTests | testCarPlay_ShortDurationFormatting | 2ms |
| โ | CarPlayTests | testCarPlay_UIStrings_NotEmpty | 3ms |
| โ | CarPlayTests | testCarPlay_ZeroDurationFormatting | 11ms |
| โ | CarPlayTimeTrackingTests | testCarPlayChapterSkip_properlyTracksTime | 145ms |
| โ | CarPlayTimeTrackingTests | testCarPlayDisconnect_trackerContinuesIndependently | 47ms |
| โ | CarPlayTimeTrackingTests | testCarPlayPlayback_usesStandardTrackerDelegateMethods | 1.60s |
| โ | CatalogAPIDedupeTests | testFetchFeed_ConcurrentCallersForDifferentURLs_DoNotDedupe | 108ms |
| โ | CatalogAPIDedupeTests | testFetchFeed_ConcurrentCallersForSameURL_ShareOneNetworkRequest | 107ms |
| โ | CatalogAPIDedupeTests | testFetchFeed_SequentialCallsAfterCompletion_FireFreshRequests | 221ms |
| โ | CatalogAPIEntryPointTests | testExtractSearchEntryPointsFromEmptyFeed | 5ms |
| โ | CatalogAccessibilityTests | testCollapseSectionLabel_isDescriptive | 5ms |
| โ | CatalogAccessibilityTests | testExpandCollapseLabel_roundTripsOnRepeatedFlips | 3ms |
| โ | CatalogAccessibilityTests | testExpandCollapseLabels_areDifferent | 5ms |
| โ | CatalogAccessibilityTests | testExpandSectionLabel_isDescriptive | 4ms |
| โ | CatalogAccessibilityTests | testMoreBooksInLaneLabel_includesLaneTitle | 3ms |
| โ | CatalogAccessibilityTests | testMoreBooksLabel_differsForDifferentLanes | 4ms |
| โ | CatalogAccessibilityTests | testMoreBooksLabel_indicatesNavigation | 7ms |
| โ | CatalogAccessibilityTests | testSwitchLibraryLabel_isDescriptive | 3ms |
| โ | CatalogCacheMetadataTests | testCacheLifecycle_FreshThenStaleThenExpired | 2ms |
| โ | CatalogCacheMetadataTests | testEncodeDecode_PreservesAllProperties | 6ms |
| โ | CatalogCacheMetadataTests | testInvariant_ExpiredImpliesStale | 3ms |
| โ | CatalogCacheMetadataTests | testIsExpired_EpochTimestamp_IsAlwaysStaleAndExpired | 3ms |
| โ | CatalogCacheMetadataTests | testIsExpired_TransitionsAtTwentyFourHourBoundary | 2ms |
| โ | CatalogCacheMetadataTests | testIsStale_DeepInsideTTL_RemainsFresh | 5ms |
| โ | CatalogCacheMetadataTests | testIsStale_FreshCache_StaysFreshAcrossSubSecondJitter | 56ms |
| โ | CatalogCacheMetadataTests | testIsStale_FutureTimestamp_TreatsAsFresh | 3ms |
| โ | CatalogCacheMetadataTests | testIsStale_TransitionsAtSixHourBoundary | 2ms |
| โ | CatalogCacheMetadataTests | testIsStale_WithServerMaxAge_RespectsOverride | 2ms |
| โ | CatalogCacheMetadataTests | testStaleTTL_ClampsAboveTwelveHoursDownToCeiling | 7ms |
| โ | CatalogCacheMetadataTests | testStaleTTL_ClampsBelowFiveMinutesUpToFloor | 3ms |
| โ | CatalogCacheMetadataTests | testStaleTTL_HalvesServerMaxAgeInMidRange | 3ms |
| โ | CatalogCacheMetadataTests | testStaleTTL_NilOrNegativeServerMaxAge_UsesDefault | 4ms |
| โ | CatalogFeedModelTests | testCatalogEntryFromOPDS1Entry | 11ms |
| โ | CatalogFeedModelTests | testCatalogFeedFromNilFeedReturnsNil | 2ms |
| โ | CatalogFeedModelTests | testCatalogFeedFromOPDS1 | 16ms |
| โ | CatalogFeedModelTests | testSearchFormatEntryEquality | 4ms |
| โ | CatalogFilterGroupModelTests | testEdgeCase_EmptyGroupName | 4ms |
| โ | CatalogFilterGroupModelTests | testEdgeCase_SpecialCharactersInName | 2ms |
| โ | CatalogFilterGroupModelTests | testEquality_DifferentFiltersMakesGroupsUnequal | 3ms |
| โ | CatalogFilterGroupModelTests | testEquality_DifferentIdsMakesGroupsUnequal | 2ms |
| โ | CatalogFilterGroupModelTests | testEquality_DifferentNamesMakesGroupsUnequal | 3ms |
| โ | CatalogFilterGroupModelTests | testEquality_IdenticalGroupsAreEqual | 2ms |
| โ | CatalogFilterGroupModelTests | testFilters_FilterByHrefPresence | 2ms |
| โ | CatalogFilterGroupModelTests | testFilters_FindActiveFilter | 55ms |
| โ | CatalogFilterGroupModelTests | testFilters_MultipleActiveFilters | 2ms |
| โ | CatalogFilterGroupModelTests | testFilters_NoActiveFilter | 1ms |
| โ | CatalogFilterGroupModelTests | testHashable_EqualGroupsHaveSameHash | 2ms |
| โ | CatalogFilterGroupModelTests | testHashable_GroupsCanBeUsedInSet | 3ms |
| โ | CatalogFilterGroupModelTests | testIdentifiable_UsesIdProperty | 1ms |
| โ | CatalogFilterGroupModelTests | testInit_StoresAllProperties | 19ms |
| โ | CatalogFilterGroupModelTests | testInit_WithEmptyFilters | 2ms |
| โ | CatalogFilterGroupModelTests | testInit_WithManyFilters | 3ms |
| โ | CatalogFilterGroupModelTests | testInit_WithSingleFilter | 6ms |
| โ | CatalogFilterModelTests | testEdgeCase_ComplexURL | 101ms |
| โ | CatalogFilterModelTests | testEdgeCase_EmptyStringId | 2ms |
| โ | CatalogFilterModelTests | testEdgeCase_EmptyStringTitle | 2ms |
| โ | CatalogFilterModelTests | testEdgeCase_SpecialCharactersInTitle | 6ms |
| โ | CatalogFilterModelTests | testEdgeCase_UnicodeInTitle | 3ms |
| โ | CatalogFilterModelTests | testEquality_DifferentActiveStateMakesFiltersUnequal | 1ms |
| โ | CatalogFilterModelTests | testEquality_DifferentHrefMakesFiltersUnequal | 3ms |
| โ | CatalogFilterModelTests | testEquality_DifferentIdsMakesFiltersUnequal | 3ms |
| โ | CatalogFilterModelTests | testEquality_DifferentTitlesMakesFiltersUnequal | 2ms |
| โ | CatalogFilterModelTests | testEquality_IdenticalFiltersAreEqual | 1ms |
| โ | CatalogFilterModelTests | testEquality_NilAndNonNilHrefMakesFiltersUnequal | 4ms |
| โ | CatalogFilterModelTests | testHashable_DifferentFiltersCanBeUsedInSet | 6ms |
| โ | CatalogFilterModelTests | testHashable_EqualFiltersHaveSameHash | 2ms |
| โ | CatalogFilterModelTests | testIdentifiable_UsesIdProperty | 5ms |
| โ | CatalogFilterModelTests | testInit_StoresAllProperties | 4ms |
| โ | CatalogFilterModelTests | testInit_WithInactiveState | 2ms |
| โ | CatalogFilterModelTests | testInit_WithNilHref | 6ms |
| โ | CatalogFilterServiceTests | testActiveFacetHrefs_excludesDefaultsWhenFlagFalse | 36ms |
| โ | CatalogFilterServiceTests | testActiveFacetHrefs_returnsActiveURLs | 2ms |
| โ | CatalogFilterServiceTests | testActiveFiltersCount_emptySet_returnsZero | 2ms |
| โ | CatalogFilterServiceTests | testActiveFiltersCount_excludesDefaults | 30ms |
| โ | CatalogFilterServiceTests | testCategorizeFacetURL_categorisesCorrectly | 6ms |
| โ | CatalogFilterServiceTests | testFindFacetGroupName_matchesURL | 4ms |
| โ | CatalogFilterServiceTests | testFindFacetGroupName_returnsNilForUnknownURL | 2ms |
| โ | CatalogFilterServiceTests | testFindFilterInCurrentFacets_caseInsensitiveMatch | 4ms |
| โ | CatalogFilterServiceTests | testFindFilterInCurrentFacets_returnsNilWhenNotFound | 4ms |
| โ | CatalogFilterServiceTests | testGroupPriority_caseInsensitive | 3ms |
| โ | CatalogFilterServiceTests | testGroupPriority_collectionIsHighest | 2ms |
| โ | CatalogFilterServiceTests | testGroupPriority_distributorBeforeFormat | 2ms |
| โ | CatalogFilterServiceTests | testGroupPriority_unknownGroupReturnsFallback | 2ms |
| โ | CatalogFilterServiceTests | testKeysForCurrentFacets_excludesSortGroups | 4ms |
| โ | CatalogFilterServiceTests | testKeysForCurrentFacets_mapsGroupTitleKeysToFullKeys | 25ms |
| โ | CatalogFilterServiceTests | testMakeGroupTitleKey_omitsHref | 2ms |
| โ | CatalogFilterServiceTests | testMakeKey_producesCanonicalFormat | 4ms |
| โ | CatalogFilterServiceTests | testNormalizeTitle_trimsAndLowercases | 2ms |
| โ | CatalogFilterServiceTests | testParseKey_handlesEmptyComponents | 6ms |
| โ | CatalogFilterServiceTests | testParseKey_returnsNilForInvalidKey | 4ms |
| โ | CatalogFilterServiceTests | testParseKey_roundTrips | 2ms |
| โ | CatalogFilterServiceTests | testParsedKey_isDefaultTitle_detectsAllVariants | 141ms |
| โ | CatalogFilterServiceTests | testParsedKey_isDefaultTitle_rejectsNonDefaults | 2ms |
| โ | CatalogFilterServiceTests | testPrioritizeSelectedFilters_ordersCollectionBeforeFormat | 6ms |
| โ | CatalogFilterServiceTests | testReconstructSelections_matchesByGroupAndTitle | 3ms |
| โ | CatalogFilterServiceTests | testReconstructSelections_skipsInvalidKeys | 2ms |
| โ | CatalogFilterServiceTests | testSelectionKeys_excludesDefaultsWhenFlagFalse | 99ms |
| โ | CatalogFilterServiceTests | testSelectionKeys_excludesSortGroups | 2ms |
| โ | CatalogFilterServiceTests | testSelectionKeys_includesDefaultsWhenFlagTrue | 2ms |
| โ | CatalogFilterTests | testCatalogFilter_StoresValues | 3ms |
| โ | CatalogLaneModelStructTests | testBooks_EmptyCollection | 2ms |
| โ | CatalogLaneModelStructTests | testBooks_LargeCollection | 309ms |
| โ | CatalogLaneModelStructTests | testBooks_MixedContentTypes | 11ms |
| โ | CatalogLaneModelStructTests | testBooks_MultipleBooks | 15ms |
| โ | CatalogLaneModelStructTests | testBooks_OrderPreserved | 16ms |
| โ | CatalogLaneModelStructTests | testBooks_SingleBook | 8ms |
| โ | CatalogLaneModelStructTests | testEdgeCase_ComplexMoreURL | 2ms |
| โ | CatalogLaneModelStructTests | testEdgeCase_EmptyTitle | 2ms |
| โ | CatalogLaneModelStructTests | testEdgeCase_LongTitle | 2ms |
| โ | CatalogLaneModelStructTests | testEdgeCase_SpecialCharactersInTitle | 2ms |
| โ | CatalogLaneModelStructTests | testEdgeCase_UnicodeInTitle | 2ms |
| โ | CatalogLaneModelStructTests | testIdentifiable_HasUniqueId | 2ms |
| โ | CatalogLaneModelStructTests | testIdentifiable_IdIsUUID | 5ms |
| โ | CatalogLaneModelStructTests | testInit_StoresAllProperties | 8ms |
| โ | CatalogLaneModelStructTests | testInit_WithDefaultIsLoading | 3ms |
| โ | CatalogLaneModelStructTests | testInit_WithLoadingState | 2ms |
| โ | CatalogLaneModelStructTests | testInit_WithNilMoreURL | 2ms |
| โ | CatalogLaneModelStructTests | testSnapshotBooks_WithDeterministicData | 10ms |
| โ | CatalogLaneModelTests | testHasUniqueId | 3ms |
| โ | CatalogLaneMoreFilterStateTests | testActiveSortTitle_WithMultipleActive_ReturnsFirst | 4ms |
| โ | CatalogLaneMoreFilterStateTests | testOpeningFilterSheet_PopulatesPendingFromApplied | 4ms |
| โ | CatalogLaneMoreFilterStateTests | testOpeningFilterSheet_WithNoApplied_ClearsPending | 11ms |
| โ | CatalogLaneMoreFilterStateTests | testRestoreFilterState_RestoresAppliedSelections | 5ms |
| โ | CatalogLaneMoreFilterStateTests | testRestoreFilterState_RestoresFacetGroups | 5ms |
| โ | CatalogLaneMoreFilterStateTests | testRestoreFilterState_WithEmptyState_ClearsAll | 17ms |
| โ | CatalogLaneMoreFilterStateTests | testSortFacets_CaseInsensitiveGroupMatch | 5ms |
| โ | CatalogLaneMoreFilterStateTests | testURL_MatchesInitializer | 4ms |
| โ | CatalogLaneMoreViewModelTests | testActiveFiltersCount_AfterClearingSelections | 3ms |
| โ | CatalogLaneMoreViewModelTests | testActiveFiltersCount_FiltersOutAllDefaults | 2ms |
| โ | CatalogLaneMoreViewModelTests | testActiveFiltersCount_WhenEmpty | 2ms |
| โ | CatalogLaneMoreViewModelTests | testActiveFiltersCount_WithAppliedSelections | 2ms |
| โ | CatalogLaneMoreViewModelTests | testActiveSortTitle_WhenActiveFacetExists_ReturnsTitle | 10ms |
| โ | CatalogLaneMoreViewModelTests | testActiveSortTitle_WhenNoActiveFacet_FallsBackToFirstFilterTitle | 2ms |
| โ | CatalogLaneMoreViewModelTests | testActiveSortTitle_WhenSortGroupEmpty_ReturnsNil | 2ms |
| โ | CatalogLaneMoreViewModelTests | testAllBooks_CombinesMultipleLanes | 7ms |
| โ | CatalogLaneMoreViewModelTests | testAllBooks_EmptyWhenNoData | 2ms |
| โ | CatalogLaneMoreViewModelTests | testAllBooks_WhenLanesEmpty_ReturnsUngroupedBooks | 9ms |
| โ | CatalogLaneMoreViewModelTests | testAllBooks_WhenLanesHaveBooks_ReturnsLaneBooks | 17ms |
| โ | CatalogLaneMoreViewModelTests | testAppliedSelectionsUpdate | 2ms |
| โ | CatalogLaneMoreViewModelTests | testApplyRegistryUpdates_OnlyTargetsChangedIdentifier_WhenProvided | 11ms |
| โ | CatalogLaneMoreViewModelTests | testApplyRegistryUpdates_PreservesIdentifierSequenceAfterBorrow | 13ms |
| โ | CatalogLaneMoreViewModelTests | testDisplayedSortFacets_WhenNoneActive_MarksFirstAsDefault | 3ms |
| โ | CatalogLaneMoreViewModelTests | testDisplayedSortFacets_WhenOneActive_Unchanged | 4ms |
| โ | CatalogLaneMoreViewModelTests | testDisplayedSortFacets_WhenPendingIDUnknown_FallsBackNormally | 3ms |
| โ | CatalogLaneMoreViewModelTests | testDisplayedSortFacets_WhenPendingSet_HighlightsOnlyPendingFacet | 6ms |
| โ | CatalogLaneMoreViewModelTests | testErrorPublishes | 5ms |
| โ | CatalogLaneMoreViewModelTests | testError_CanBeCleared | 2ms |
| โ | CatalogLaneMoreViewModelTests | testError_CanBeSet | 3ms |
| โ | CatalogLaneMoreViewModelTests | testFacetGroups_MultipleGroups | 3ms |
| โ | CatalogLaneMoreViewModelTests | testFilterStateInitialValues | 4ms |
| โ | CatalogLaneMoreViewModelTests | testInitialState | 7ms |
| โ | CatalogLaneMoreViewModelTests | testIsApplyingFiltersInitiallyFalse | 3ms |
| โ | CatalogLaneMoreViewModelTests | testIsLoadingMoreInitiallyFalse | 2ms |
| โ | CatalogLaneMoreViewModelTests | testIsLoadingPublishes | 4ms |
| โ | CatalogLaneMoreViewModelTests | testLanesPublishes | 6ms |
| โ | CatalogLaneMoreViewModelTests | testPagination_ClearedWhenNil | 4ms |
| โ | CatalogLaneMoreViewModelTests | testPagination_NextPageURLCanBeSet | 4ms |
| โ | CatalogLaneMoreViewModelTests | testPendingSelectionsUpdate | 2ms |
| โ | CatalogLaneMoreViewModelTests | testProcessOPDS2GroupedFeed_UsesFeedURLForActiveDetection | 4ms |
| โ | CatalogLaneMoreViewModelTests | testProcessOPDS2PublicationFeed_UsesFeedURLForActiveDetection | 2ms |
| โ | CatalogLaneMoreViewModelTests | testShouldShowPagination_WhenNextPageURLExists | 2ms |
| โ | CatalogLaneMoreViewModelTests | testShowSearchToggle | 2ms |
| โ | CatalogLaneMoreViewModelTests | testShowingFiltersSheetToggle | 2ms |
| โ | CatalogLaneMoreViewModelTests | testShowingSortSheetToggle | 2ms |
| โ | CatalogLaneMoreViewModelTests | testSortFacets_WhenNoSortGroup_ReturnsEmpty | 3ms |
| โ | CatalogLaneMoreViewModelTests | testSortFacets_WhenSortGroupExists_ReturnsFacets | 2ms |
| โ | CatalogLaneMoreViewModelTests | testTitle_Empty | 3ms |
| โ | CatalogLaneMoreViewModelTests | testTitle_WithSpecialCharacters | 2ms |
| โ | CatalogLaneMoreViewModelTests | testUIStateInitialValues | 2ms |
| โ | CatalogLaneRowViewAccessibilityTests | testAccessibilityLabel_audiobookFormat | 5ms |
| โ | CatalogLaneRowViewAccessibilityTests | testAccessibilityLabel_audiobookIncludesAudiobookDesignation | 6ms |
| โ | CatalogLaneRowViewAccessibilityTests | testAccessibilityLabel_audiobook_authorOnly | 6ms |
| โ | CatalogLaneRowViewAccessibilityTests | testAccessibilityLabel_bookWithoutAuthor | 5ms |
| โ | CatalogLaneRowViewAccessibilityTests | testAccessibilityLabel_doesNotIncludeSummaryOrBlurbs | 42ms |
| โ | CatalogLaneRowViewAccessibilityTests | testAccessibilityLabel_ebookDoesNotIncludeAudiobookDesignation | 4ms |
| โ | CatalogLaneRowViewAccessibilityTests | testAccessibilityLabel_ebook_noAuthor_titleOnly | 6ms |
| โ | CatalogLaneRowViewAccessibilityTests | testAccessibilityLabel_ebook_titleByAuthor | 5ms |
| โ | CatalogLaneRowViewAccessibilityTests | testAccessibilityLabel_includesTitleAndAuthor | 6ms |
| โ | CatalogLaneRowViewAccessibilityTests | testAccessibilityLabel_usesCommaSeparatedFormat | 5ms |
| โ | CatalogLaneRowViewAccessibilityTests | testSwimlaneTitle_sourceDeclaresHeaderAccessibilityTrait | 4ms |
| โ | CatalogLaneSortingTests | testExtractFacets_ActiveSortFacet_IsMarkedActive | 11ms |
| โ | CatalogLaneSortingTests | testExtractFacets_GroupedFeedWithSortFacets_ExtractsSortGroup | 13ms |
| โ | CatalogLaneSortingTests | testLaneMoreViewModel_ActiveSortTitle_ReturnsActiveFacetTitle | 45ms |
| โ | CatalogLaneSortingTests | testLaneMoreViewModel_GroupedFeedWithSortFacets_ExposesSortFacets | 406ms |
| โ | CatalogLoadIntegrationTests | testAuthenticationRequired_ReturnsUnauthorizedError | 6ms |
| โ | CatalogLoadIntegrationTests | testCacheInvalidation_TriggersFreshFetch | 5ms |
| โ | CatalogLoadIntegrationTests | testFetchFeed_DelegatesToLoadTopLevelCatalog | 6ms |
| โ | CatalogLoadIntegrationTests | testFreshLoad_FetchesFromNetwork | 3ms |
| โ | CatalogLoadIntegrationTests | testNetworkFailure_PropagatesError | 37ms |
| โ | CatalogLoadIntegrationTests | testOPDSFeedXML_IsGeneratedCorrectly | 5ms |
| โ | CatalogPreloaderTests | testPreloader_ContinuesOnFailure | 5ms |
| โ | CatalogPreloaderTests | testPreloader_NilCurrentAccount_StillPreloadsRecent | 3ms |
| โ | CatalogPreloaderTests | testPreloader_PreloadsCurrentAccountCatalog | 5ms |
| โ | CatalogPreloaderTests | testPreloader_PreloadsRecentlyUsedAccounts_UpToLimit | 4ms |
| โ | CatalogPreloaderTests | testPreloader_SkipsAccountsWithNoCatalogURL | 6ms |
| โ | CatalogPreloaderTests | testPreloader_SkipsDuplicateCurrentAccount | 3ms |
| โ | CatalogRepositoryCoreTests | testDifferentURLsAreCachedSeparately | 13ms |
| โ | CatalogRepositoryCoreTests | testInvalidateCacheForcesFreshFetch | 112ms |
| โ | CatalogRepositoryCoreTests | testLoadTopLevelCatalogCachesFeed | 24ms |
| โ | CatalogRepositoryCoreTests | testLoadTopLevelCatalogCallsAPI | 31ms |
| โ | CatalogRepositoryCoreTests | testLoadTopLevelCatalogFallsToCacheOnNetworkError | 169ms |
| โ | CatalogRepositoryCoreTests | testLoadTopLevelCatalogPropagatesError | 8ms |
| โ | CatalogRepositoryCoreTests | testLoadTopLevelCatalogReturnsFeedTitle | 11ms |
| โ | CatalogRepositoryCoreTests | testSearchDelegatesToAPI | 83ms |
| โ | CatalogRepositoryCoreTests | testSearchPropagatesError | 10ms |
| โ | CatalogRepositoryTests | testFetchFeed_DoesNotCache_AlwaysFetchesFresh | 9ms |
| โ | CatalogRepositoryTests | testFetchFeed_NetworkError_ThrowsError | 5ms |
| โ | CatalogRepositoryTests | testFetchFeed_Success_ReturnsFeed | 9ms |
| โ | CatalogRepositoryTests | testIntegration_ErrorPropagation | 14ms |
| โ | CatalogRepositoryTests | testIntegration_FullFetchFlow | 9ms |
| โ | CatalogRepositoryTests | testInvalidateCache_ClearsSpecificURL | 8ms |
| โ | CatalogRepositoryTests | testLoadTopLevelCatalog_401Unauthorized_ThrowsError | 45ms |
| โ | CatalogRepositoryTests | testLoadTopLevelCatalog_500ServerError_ThrowsError | 6ms |
| โ | CatalogRepositoryTests | testLoadTopLevelCatalog_CachesFeed_ReturnsFromCache | 10ms |
| โ | CatalogRepositoryTests | testLoadTopLevelCatalog_EmptyFeed_ReturnsEmptyEntries | 60ms |
| โ | CatalogRepositoryTests | testLoadTopLevelCatalog_InvalidXML_ThrowsParsingError | 8ms |
| โ | CatalogRepositoryTests | testLoadTopLevelCatalog_MultipleURLs_CachesIndependently | 13ms |
| โ | CatalogRepositoryTests | testLoadTopLevelCatalog_NetworkError_FallsBackToStaleCache | 8ms |
| โ | CatalogRepositoryTests | testLoadTopLevelCatalog_NetworkError_ThrowsError | 7ms |
| โ | CatalogRepositoryTests | testLoadTopLevelCatalog_PreservesQueryParameters | 9ms |
| โ | CatalogRepositoryTests | testLoadTopLevelCatalog_ProblemDocument_ParsesErrorDetails | 12ms |
| โ | CatalogRepositoryTests | testLoadTopLevelCatalog_SpecialCharactersInTitle_ParsesCorrectly | 6ms |
| โ | CatalogRepositoryTests | testLoadTopLevelCatalog_Success_ReturnsFeed | 9ms |
| โ | CatalogRepositoryTests | testLoadTopLevelCatalog_UsesGETMethod | 6ms |
| โ | CatalogSearchViewModelRegistryUpdateTests | testApplyRegistryUpdates_EmptyFilteredBooks_DoesNotCrash | 8ms |
| โ | CatalogSearchViewModelRegistryUpdateTests | testApplyRegistryUpdates_MultipleRapidCalls_DoesNotCrash | 57ms |
| โ | CatalogSearchViewModelRegistryUpdateTests | testApplyRegistryUpdates_NilChangedIdentifier_UpdatesAllBooks | 20ms |
| โ | CatalogSearchViewModelRegistryUpdateTests | testApplyRegistryUpdates_UnknownIdentifier_NoChanges | 7ms |
| โ | CatalogSearchViewModelRegistryUpdateTests | testApplyRegistryUpdates_WithBooks_UpdatesMatchingBook | 10ms |
| โ | CatalogSearchViewModelTests | testApplyRegistryUpdates_DoesNotChangeSearchId | 5ms |
| โ | CatalogSearchViewModelTests | testApplyRegistryUpdates_WithEmptyFilteredBooks_DoesNothing | 2ms |
| โ | CatalogSearchViewModelTests | testClearSearch_CancelsPendingOperations | 307ms |
| โ | CatalogSearchViewModelTests | testClearSearch_ChangesSearchId | 2ms |
| โ | CatalogSearchViewModelTests | testClearSearch_ResetsSelectedFormat_DoesNotChangeFormatEntries | 4ms |
| โ | CatalogSearchViewModelTests | testClearSearch_ResetsState | 6ms |
| โ | CatalogSearchViewModelTests | testClearSearch_RestoresAllBooks | 29ms |
| โ | CatalogSearchViewModelTests | testConcurrentUpdates_DoNotCrash | 14ms |
| โ | CatalogSearchViewModelTests | testInit_HasCorrectDefaults | 11ms |
| โ | CatalogSearchViewModelTests | testLoadFormatEntryPoints_SelectsActiveEntry | 3ms |
| โ | CatalogSearchViewModelTests | testLoadFormatEntryPoints_WhenFeedHasNoEntryPoints_LeavesFormatEntriesEmpty | 8ms |
| โ | CatalogSearchViewModelTests | testLoadFormatEntryPoints_WhenFetchFails_LeavesFormatEntriesEmpty | 161ms |
| โ | CatalogSearchViewModelTests | testLoadFormatEntryPoints_WhenSuccessful_PopulatesFormatEntries | 4ms |
| โ | CatalogSearchViewModelTests | testLoadFormatEntryPoints_WithNilBaseURL_DoesNotCallRepository | 168ms |
| โ | CatalogSearchViewModelTests | testLoadNextPage_DoesNotChangeSearchId | 3ms |
| โ | CatalogSearchViewModelTests | testLoadNextPage_SetsIsLoadingMore | 6ms |
| โ | CatalogSearchViewModelTests | testLoadNextPage_WhenAlreadyLoading_DoesNothing | 7ms |
| โ | CatalogSearchViewModelTests | testLoadNextPage_WithNoNextURL_DoesNothing | 4ms |
| โ | CatalogSearchViewModelTests | testPP3605_ApplyRegistryUpdates_DoesNotChangeSearchId | 16ms |
| โ | CatalogSearchViewModelTests | testPP3605_ClearSearch_ChangesSearchId | 16ms |
| โ | CatalogSearchViewModelTests | testPP3605_DifferentSearches_EachHaveUniqueSearchId | 118ms |
| โ | CatalogSearchViewModelTests | testPP3605_LoadNextPage_DoesNotChangeSearchId | 61ms |
| โ | CatalogSearchViewModelTests | testPP3605_NewSearch_ChangesSearchId | 60ms |
| โ | CatalogSearchViewModelTests | testPP3673_clearSearch_doesNotAnnounce | 223ms |
| โ | CatalogSearchViewModelTests | testPP3673_search_emptyQuery_doesNotAnnounce | 160ms |
| โ | CatalogSearchViewModelTests | testPP3673_search_error_announcesFailure | 60ms |
| โ | CatalogSearchViewModelTests | testPP3673_search_noResults_announcesNoResults | 60ms |
| โ | CatalogSearchViewModelTests | testPP3673_search_rerun_announcesUpdatedResults | 115ms |
| โ | CatalogSearchViewModelTests | testSearch_CancelsDebounce_OnNewQuery | 1.42s |
| โ | CatalogSearchViewModelTests | testSearch_CancelsInFlight_OnNewQuery | 214ms |
| โ | CatalogSearchViewModelTests | testSearch_Debounces_DoesNotSearchDuringDebounceWindow | 1.02s |
| โ | CatalogSearchViewModelTests | testSearch_Debounces_MultipleQueries | 109ms |
| โ | CatalogSearchViewModelTests | testSearch_DifferentQueries_HaveDifferentSearchIds | 122ms |
| โ | CatalogSearchViewModelTests | testSearch_NewSearch_ChangesSearchId | 59ms |
| โ | CatalogSearchViewModelTests | testSearch_SpecialCharacters_DoesNotCrash | 60ms |
| โ | CatalogSearchViewModelTests | testSearch_UnicodeCharacters_Works | 59ms |
| โ | CatalogSearchViewModelTests | testSearch_VeryLongQuery_Works | 58ms |
| โ | CatalogSearchViewModelTests | testSearch_WithEmptyQuery_DoesNotCallRepository | 157ms |
| โ | CatalogSearchViewModelTests | testSearch_WithEmptyQuery_ShowsAllBooks | 170ms |
| โ | CatalogSearchViewModelTests | testSearch_WithError_ClearsNextPageURL | 59ms |
| โ | CatalogSearchViewModelTests | testSearch_WithError_SetsErrorMessage | 60ms |
| โ | CatalogSearchViewModelTests | testSearch_WithNilBaseURL_ClearsNextPageURL | 161ms |
| โ | CatalogSearchViewModelTests | testSearch_WithNilBaseURL_DoesNotSearch | 165ms |
| โ | CatalogSearchViewModelTests | testSearch_WithNilResult_SetsEmptyResults | 68ms |
| โ | CatalogSearchViewModelTests | testSearch_WithNoFormatEntries_UsesDefaultBaseURL | 58ms |
| โ | CatalogSearchViewModelTests | testSearch_WithResults_UpdatesResults | 60ms |
| โ | CatalogSearchViewModelTests | testSearch_WithValidQuery_CallsRepository | 58ms |
| โ | CatalogSearchViewModelTests | testSearch_WithValidQuery_ClearsIsLoadingAfterCompletion | 59ms |
| โ | CatalogSearchViewModelTests | testSearch_WithValidQuery_SetsIsSearching | 58ms |
| โ | CatalogSearchViewModelTests | testSearch_WithWhitespaceOnlyQuery_DoesNotCallRepository | 157ms |
| โ | CatalogSearchViewModelTests | testSelectFormat_ChangesSelectedIndex | 5ms |
| โ | CatalogSearchViewModelTests | testSelectFormat_SameIndex_DoesNotChangeIndex | 181ms |
| โ | CatalogSearchViewModelTests | testSelectFormat_WithActiveQuery_TriggersNewSearch | 64ms |
| โ | CatalogSearchViewModelTests | testSelectFormat_WithCachedDescriptorURL_UsesDescriptorSearch | 59ms |
| โ | CatalogSearchViewModelTests | testSelectFormat_WithEmptyQuery_DoesNotSearch | 164ms |
| โ | CatalogSearchViewModelTests | testUpdateBooks_DoesNotChangeFilteredBooks_WhenQueryNotEmpty | 16ms |
| โ | CatalogSearchViewModelTests | testUpdateBooks_EmptyArray_Works | 9ms |
| โ | CatalogSearchViewModelTests | testUpdateBooks_LargeArray_Works | 193ms |
| โ | CatalogSearchViewModelTests | testUpdateBooks_SetsFilteredBooks_WhenQueryEmpty | 15ms |
| โ | CatalogSelectorsTests | testWithSelectedEntryPoint_UpdatesActiveState | 4ms |
| โ | CatalogSelectorsTests | testWithSelectedFacet_UpdatesActiveState | 5ms |
| โ | CatalogSortServiceTests | testAllCases | 2ms |
| โ | CatalogSortServiceTests | testSortByAuthorAZ | 17ms |
| โ | CatalogSortServiceTests | testSortByAuthorZA | 9ms |
| โ | CatalogSortServiceTests | testSortByRecentlyAddedAZ | 8ms |
| โ | CatalogSortServiceTests | testSortByRecentlyAddedZA | 8ms |
| โ | CatalogSortServiceTests | testSortByTitleAZ | 8ms |
| โ | CatalogSortServiceTests | testSortByTitleZA | 9ms |
| โ | CatalogSortServiceTests | testSortEmptyArray | 2ms |
| โ | CatalogSortServiceTests | testSortOptionFromLocalizedString_invalidString_returnsNil | 2ms |
| โ | CatalogSortServiceTests | testSortOptionFromLocalizedString_validStrings | 2ms |
| โ | CatalogSortServiceTests | testSortOptionLocalizedStrings | 3ms |
| โ | CatalogSortServiceTests | testSortSingleBook | 4ms |
| โ | CatalogSortServiceTests | testSortWithNilAuthors | 7ms |
| โ | CatalogSortServiceTests | testSortedReturnsNewArray | 8ms |
| โ | CatalogStateTests | testState_AllBooks_Grouped | 12ms |
| โ | CatalogStateTests | testState_AllBooks_Ungrouped | 6ms |
| โ | CatalogStateTests | testState_ApplyingFacet_IsTrue | 2ms |
| โ | CatalogStateTests | testState_Error_HasNoContent | 2ms |
| โ | CatalogStateTests | testState_Loaded_ExposesContent | 7ms |
| โ | CatalogStateTests | testState_Loading_HasNoContent | 2ms |
| โ | CatalogStateTests | testState_SwitchingEntryPoint_HasNoContent | 4ms |
| โ | CatalogViewModelStateMachineTests | testApplyEntryPoint_RequiresLoadedState | 2ms |
| โ | CatalogViewModelStateMachineTests | testApplyEntryPoint_WithNilHref_NoOp | 2ms |
| โ | CatalogViewModelStateMachineTests | testApplyFacet_RequiresLoadedState | 4ms |
| โ | CatalogViewModelStateMachineTests | testApplyFacet_WithNilHref_NoOp | 5ms |
| โ | CatalogViewModelStateMachineTests | testForceRefresh_TransitionsToLoading | 4ms |
| โ | CatalogViewModelStateMachineTests | testLoad_WithError_TransitionsToError | 8ms |
| โ | CatalogViewModelStateMachineTests | testLoad_WithNilResult_TransitionsToError | 3ms |
| โ | CatalogViewModelStateMachineTests | testLoad_WithNilURL_DoesNotCallRepository | 2ms |
| โ | CatalogViewModelStateMachineTests | testSearchRepository_ReturnsMock | 2ms |
| โ | CatalogViewModelStateMachineTests | testViewModel_InitialState_IsLoading | 6ms |
| โ | ChaosFaultInjectionTests | test_scenario1_midDownloadNetworkKill_failsRecoverably | 10ms |
| โ | ChaosFaultInjectionTests | test_scenario2_diskFullDuringExtraction_throwsAndLeavesNoFullFile | 6ms |
| โ | ChaosFaultInjectionTests | test_scenario3_lowMemoryDuringDRMFetch_remainsRecoverable | 15ms |
| โ | ChaosFaultInjectionTests | test_scenario4_processKillDuringRegistryWrite_atomicityHolds | 9ms |
| โ | ChaosFaultInjectionTests | test_scenario5_tokenExpiryMidAnnotationSync_invokesReauthAndRetries | 12ms |
| โ | CirculationAnalyticsTests | testEventPathComponents | 3ms |
| โ | CirculationAnalyticsTests | testNetworkQueueStatusCodesExist | 3ms |
| โ | CirculationAnalyticsTests | testPostEventConstructsCorrectURL | 2ms |
| โ | CirculationAnalyticsTests | testPostEventWithNilAnalyticsURL | 8ms |
| โ | ColorExtensionTests | testIsDark_Black_ReturnsTrue | 3ms |
| โ | ColorExtensionTests | testIsDark_DarkGray_ReturnsTrue | 43ms |
| โ | ColorExtensionTests | testIsDark_LightGray_ReturnsFalse | 2ms |
| โ | ColorExtensionTests | testIsDark_PureRed_ReturnsFalse | 6ms |
| โ | ColorExtensionTests | testIsDark_White_ReturnsFalse | 2ms |
| โ | ConcurrentBookStateTests | testConcurrent_differentContentTypes_supportedSimultaneously | 13ms |
| โ | ConcurrentBookStateTests | testConcurrent_drmTypes_supportedSimultaneously | 7ms |
| โ | ConcurrentBookStateTests | testConcurrent_multipleDownloads_independentStates | 13ms |
| โ | ConcurrentDownloadStateTests | testMultipleBooks_canBeRegisteredSimultaneously | 12ms |
| โ | ConcurrentDownloadStateTests | testMultipleBooks_canHaveDifferentStates | 16ms |
| โ | ConcurrentDownloadStateTests | testMultipleBooks_stateChangesAreIndependent | 10ms |
| โ | ConcurrentTokenRefreshTests | testRefreshTokenAndResume_noCredentials_failsImmediately | 16ms |
| โ | ConcurrentTokenRefreshTests | testTokenRequest_canExecuteViaStub | 12ms |
| โ | ContinuousPlaybackTrackingTests | testBiblioBoardScenario_61MinutesWithTrackChanges | 344ms |
| โ | ContinuousPlaybackTrackingTests | testRapidTrackChanges_noTimeLoss | 530ms |
| โ | ContinuousPlaybackTrackingTests | testTrackTransition_savesTimeBeforeNextTrackStarts | 45ms |
| โ | CrawlStateTests | testCrawlState_DecodesWithMissingOptionals | 3ms |
| โ | CrawlStateTests | testCrawlState_EncodesAndDecodes | 3ms |
| โ | CrawlStateTests | testCrawlState_LoadFromMissingFile_Fails | 3ms |
| โ | CrawlStateTests | testCrawlState_PersistsToDisk | 9ms |
| โ | CrawlStateTests | testNeedsFullCrawl_WhenBothNil_ReturnsTrue | 2ms |
| โ | CrawlStateTests | testNeedsFullCrawl_WhenBothPresent_ReturnsFalse | 2ms |
| โ | CrawlStateTests | testNeedsFullCrawl_WhenNoFacetURL_ReturnsTrue | 3ms |
| โ | CrawlStateTests | testNeedsFullCrawl_WhenNoLastCrawlDate_ReturnsTrue | 2ms |
| โ | CrawlableFeedAnalysisTests | testIsFullCrawlComplete_WhenHasNextLink_ReturnsFalse | 8ms |
| โ | CrawlableFeedAnalysisTests | testIsFullCrawlComplete_WhenNoNextLink_ReturnsTrue | 3ms |
| โ | CrawlableFeedAnalysisTests | testIsFullCrawlComplete_returnsTrueForNilOrEmptyLinks | 4ms |
| โ | CrawlableFeedAnalysisTests | testIsOrderModifiedActive_WhenFacetHasRelSelf_ReturnsTrue | 4ms |
| โ | CrawlableFeedAnalysisTests | testIsOrderModifiedActive_WhenOtherFacetActive_ReturnsFalse | 4ms |
| โ | CrawlableFeedAnalysisTests | testIsOrderModifiedActive_returnsFalseForNilOrEmptyFacets | 7ms |
| โ | CrawlableFeedAnalysisTests | testOrderModifiedFacetURL_WhenNoSortFacetGroup_ReturnsNil | 5ms |
| โ | CrawlableFeedAnalysisTests | testOrderModifiedFacetURL_WhenNotActive_StillReturnsURL | 12ms |
| โ | CrawlableFeedAnalysisTests | testOrderModifiedFacetURL_WhenPresent_ReturnsURL | 13ms |
| โ | CrawlableFeedAnalysisTests | testOrderModifiedFacetURL_WhenSortGroupHasNoModifiedLink_ReturnsNil | 2ms |
| โ | CrawlableFeedAnalysisTests | testOrderModifiedFacetURL_returnsNilForNilOrEmptyFacets | 4ms |
| โ | CrawlableFeedAnalysisTests | testPublicationsNewerThan_FiltersCorrectly | 2ms |
| โ | CrawlableFeedAnalysisTests | testShouldStopIncremental_WhenAllPublicationsNewer_ReturnsFalse | 2ms |
| โ | CrawlableFeedAnalysisTests | testShouldStopIncremental_WhenEmptyPublications_ReturnsFalse | 2ms |
| โ | CrawlableFeedAnalysisTests | testShouldStopIncremental_WhenPublicationExactlyAtLastCrawl_ReturnsTrue | 2ms |
| โ | CrawlableFeedAnalysisTests | testShouldStopIncremental_WhenPublicationHasNoUpdatedDate_ReturnsFalse | 2ms |
| โ | CrawlableFeedAnalysisTests | testShouldStopIncremental_WhenPublicationOlderThanLastCrawl_ReturnsTrue | 5ms |
| โ | CrawlerFallbackTests | testCrawlFirstPage_NetworkDown_ReturnsFailure | 4ms |
| โ | CrawlerFallbackTests | testCrawlFirstPage_PreservesPaginationLinks_InParsedPage | 23ms |
| โ | CrawlerFallbackTests | testCrawlFirstPage_Success_ReturnsPartialData | 10ms |
| โ | CrawlerFallbackTests | testCrawlRemainingPages_OneParallelPageFails_ReturnsFailure | 8ms |
| โ | CrawlerFallbackTests | testCrawlRemainingPages_WhenSecondPageFails_ReturnsFailure | 8ms |
| โ | CrawlerFallbackTests | testCrawl_EmptyFeed_ReturnsSuccessWithNoLibraries | 4ms |
| โ | CrawlerFallbackTests | testCrawl_WhenCrawlStateCorrupted_TreatsAsFirstLaunch | 9ms |
| โ | CrawlerFallbackTests | testCrawl_WhenCrawlableReturnsError_ReturnsFailure | 5ms |
| โ | CrawlerFallbackTests | testCrawl_WhenCrawlableReturnsMalformedJSON_ReturnsFailure | 6ms |
| โ | CrawlerFallbackTests | testCrawl_WhenCrawlableSucceeds_ReturnsCrawledData | 16ms |
| โ | CrawlerFallbackTests | testCrawl_WhenResponseMissingCatalogs_ReturnsFailure | 5ms |
| โ | CrawlerFallbackTests | testIncrementalCrawlFails_NextAttemptDoesFullCrawl | 4ms |
| โ | CredentialEdgeCaseTests | testBarcodeAndPin_EmptyStrings_ProduceMalformedBasicAuthHeader | 2ms |
| โ | CredentialEdgeCaseTests | testCredentials_BarcodeAndPin_RoundTripsThroughCodable | 12ms |
| โ | CredentialEdgeCaseTests | testCredentials_TokenWithNilBarcodeAndPin_SurvivesCodableRoundTrip | 5ms |
| โ | CredentialEdgeCaseTests | testTokenCredential_EmptyBarcode_IsDistinctFromNil | 2ms |
| โ | CredentialEdgeCaseTests | testTokenCredential_EmptyPin_IsDistinctFromNil | 3ms |
| โ | CredentialEdgeCaseTests | testTokenCredential_NilBarcode_ReturnsNilUsername | 2ms |
| โ | CredentialPrivacyTests | testErrorLogger_metadataKeysNeverIncludeCredentialFields | 2ms |
| โ | CredentialPrivacyTests | testException_messageDoesNotEmbedCredentials | 2ms |
| โ | CredentialPrivacyTests | testLCPPassphraseError_doesNotEmbedPassphrase | 2ms |
| โ | CredentialPrivacyTests | testSignInFailureLog_doesNotContainBarcodeOrPIN | 32ms |
| โ | CredentialPromptCoordinatorTests | testRequestCredentials_adobeExpired_presentsAdobeAlertInsteadOfSignIn | 41ms |
| โ | CredentialPromptCoordinatorTests | testRequestCredentials_alreadyInFlight_skipsDuplicateModal | 78ms |
| โ | CredentialPromptCoordinatorTests | testRequestCredentials_signInCancelled_registersCompletionAndDoesNotRetry | 194ms |
| โ | CredentialPromptCoordinatorTests | testRequestCredentials_signInSuccess_retriesDownloadViaDelegate | 55ms |
| โ | CrossDeviceBookmarkSyncTests | testBookmarkSpec_DifferentDevices_ProduceDifferentPayloads | 3ms |
| โ | CrossDeviceBookmarkSyncTests | testBookmarkSpec_IncludesDeviceID | 2ms |
| โ | CrossDeviceBookmarkSyncTests | testBookmarkWithNilDevice_TreatedAsSameDevice | 3ms |
| โ | CrossDeviceBookmarkSyncTests | testBookmark_HasCorrectMotivation | 2ms |
| โ | CrossDeviceBookmarkSyncTests | testDifferentDevice_DifferentPosition_ShouldSync | 4ms |
| โ | CrossDeviceBookmarkSyncTests | testDifferentDevice_IdenticalPosition_ShouldNotSync | 2ms |
| โ | CrossDeviceBookmarkSyncTests | testNoLocalPosition_DifferentDevice_ShouldSync | 2ms |
| โ | CrossDeviceBookmarkSyncTests | testNoLocalPosition_SameDevice_ShouldNotSync | 2ms |
| โ | CrossDeviceBookmarkSyncTests | testNoServerPosition_ShouldNotSync | 2ms |
| โ | CrossDeviceBookmarkSyncTests | testParseServerBookmarks_MultipleDevices | 2ms |
| โ | CrossDeviceBookmarkSyncTests | testReadingProgress_HasCorrectMotivation | 2ms |
| โ | CrossDeviceBookmarkSyncTests | testSameDevice_DifferentPosition_ShouldNotSync | 3ms |
| โ | CrossDomain401Tests | test200FromDifferentDomain_shouldNotIndicateAuthRefreshNeeded | 2ms |
| โ | CrossDomain401Tests | test401FromDifferentDomain_shouldNotIndicateAuthRefreshNeeded | 5ms |
| โ | CrossDomain401Tests | test401FromDifferentSubdomain_shouldIndicateAuthRefreshNeeded | 2ms |
| โ | CrossDomain401Tests | test401FromSameDomain_shouldIndicateAuthRefreshNeeded | 120ms |
| โ | CrossDomain401Tests | test401FromSameSubdomain_shouldIndicateAuthRefreshNeeded | 3ms |
| โ | CrossDomain401Tests | test401WithNilOriginalURL_shouldIndicateAuthRefreshNeeded | 2ms |
| โ | CrossDomain401Tests | test403FromDifferentDomain_shouldNotIndicateAuthRefreshNeeded | 2ms |
| โ | CrossDomain401Tests | testProblemDocFromDifferentDomain_shouldNotIndicateAuthRefreshNeeded | 6ms |
| โ | CrossFormatMappingTests | testChapterBeyondMappingRange | 2ms |
| โ | CrossFormatMappingTests | testCodableRoundTrip | 13ms |
| โ | CrossFormatMappingTests | testCustomChapterMapping | 2ms |
| โ | CrossFormatMappingTests | testFirstChapterMapping | 2ms |
| โ | CrossFormatMappingTests | testLastChapterMapping | 2ms |
| โ | CrossFormatMappingTests | testMappingWithMissingChapterIndex | 1ms |
| โ | CrossFormatMappingTests | testMappingWithZeroChapters | 3ms |
| โ | CrossFormatMappingTests | testMappingWrongFormat | 2ms |
| โ | CrossFormatMappingTests | testOneToOneAudiobookToEpub | 4ms |
| โ | CrossFormatMappingTests | testOneToOneEpubToAudiobook | 16ms |
| โ | CrossFormatMappingTests | testOneToOneMappingCreation | 2ms |
| โ | CrossFormatMappingTests | testProportionalAudiobookToEpub | 2ms |
| โ | CrossFormatMappingTests | testProportionalEpubToAudiobook | 3ms |
| โ | CrossFormatMappingTests | testProportionalMappingCreation | 2ms |
| โ | DPLAErrorTests | testCertificateUrl_isValid | 2ms |
| โ | DPLAErrorTests | testDrmKeyError_readableError | 3ms |
| โ | DPLAErrorTests | testRequestError_readableError | 7ms |
| โ | DRMAdversarialTests | testAdobe_didIgnoreFulfillment_noLongerShowsSignInModal | 8ms |
| โ | DRMAdversarialTests | testAdobe_epubWithoutValidLicense_openFails | 9ms |
| โ | DRMAdversarialTests | testAdobe_fulfillmentPath_callsEnsureDeviceActivated | 25ms |
| โ | DRMAdversarialTests | testLCP_publicationWithoutPassphrase_returnsAuthRequired | 5ms |
| โ | DRMFulfilledPublicationTests | testDRMFulfilledPublication_localURLIsCorrect | 2ms |
| โ | DRMFulfilledPublicationTests | testDRMFulfilledPublication_storesLocalURL | 2ms |
| โ | DRMFulfilledPublicationTests | testDRMFulfilledPublication_storesSuggestedFilename | 2ms |
| โ | DRMFulfilledPublicationTests | testDRMFulfilledPublication_withEmptyFilename | 2ms |
| โ | DRMFulfilledPublicationTests | testDRMFulfilledPublication_withLongFilename | 2ms |
| โ | DRMFulfilledPublicationTests | testDRMFulfilledPublication_withSpecialCharacters | 2ms |
| โ | DataBase64Tests | testBase64UrlSafe_ReplacesPlus_WithDash | 2ms |
| โ | DataBase64Tests | testBase64UrlSafe_ReplacesSlash_WithUnderscore | 15ms |
| โ | DataBase64Tests | testBase64UrlSafe_emptyAndAscii_canonicalAndNoNewlines | 4ms |
| โ | DataReceptionComparisonTests | testGET_receivesBearerTokenJSON_andCanBeDetected | 90ms |
| โ | DataReceptionComparisonTests | testGET_receivesNonEmptyBody_forValidJSON | 123ms |
| โ | DateExtensionTests | testAddingDays_increasesDate | 2ms |
| โ | DateExtensionTests | testDateComparison_differentDay | 2ms |
| โ | DateExtensionTests | testDateComparison_sameDay | 2ms |
| โ | DateExtensionTests | testISO8601_roundTrip | 7ms |
| โ | DateExtensionTests | testRfc339String_includesTimezone | 2ms |
| โ | DateExtensionTests | testRfc339String_producesValidFormat | 3ms |
| โ | DateExtensionTests | testSubtractingDays_decreasesDate | 2ms |
| โ | DateExtensionTests | testTimeIntervalSinceNow_negative | 2ms |
| โ | DateExtensionTests | testTimeIntervalSinceNow_positive | 2ms |
| โ | DateFormattingTests | testCustomFormat | 6ms |
| โ | DateFormattingTests | testLongDateFormat | 5ms |
| โ | DateFormattingTests | testShortDateFormat | 7ms |
| โ | DateFormattingTests | testTimeFormat | 4ms |
| โ | Date_NYPLAdditionsTests | testISO8601FullDateParsing | 7ms |
| โ | Date_NYPLAdditionsTests | testInvalidRFC3339Date | 41ms |
| โ | Date_NYPLAdditionsTests | testParsesRFC3339DateCorrectly | 25ms |
| โ | Date_NYPLAdditionsTests | testParsesRFC3339DateWithFractionalSecondsCorrectly | 5ms |
| โ | Date_NYPLAdditionsTests | testRFC1123 | 5ms |
| โ | Date_NYPLAdditionsTests | testRFC1123Performance | 547ms |
| โ | Date_NYPLAdditionsTests | testRFC3339RoundTrip | 7ms |
| โ | DebugSettingsTests | testBadgeLogging_defaultFalse | 5ms |
| โ | DebugSettingsTests | testBadgeLogging_enabledStateIsResetByResetAll | 4ms |
| โ | DebugSettingsTests | testCreateSimulatedBorrowError_nilWhenDisabled | 3ms |
| โ | DebugSettingsTests | testCreateSimulatedBorrowError_returnsErrorWhenEnabled | 8ms |
| โ | DebugSettingsTests | testCreateTestHoldBooks_allReady | 4ms |
| โ | DebugSettingsTests | testCreateTestHoldBooks_mixedHolds | 6ms |
| โ | DebugSettingsTests | testCreateTestHoldBooks_nilWhenDisabled | 8ms |
| โ | DebugSettingsTests | testCreateTestHoldBooks_oneReady | 6ms |
| โ | DebugSettingsTests | testCreateTestHoldBooks_oneReserved | 6ms |
| โ | DebugSettingsTests | testDefaultSimulatedBorrowError | 3ms |
| โ | DebugSettingsTests | testIsBorrowErrorSimulationEnabled | 4ms |
| โ | DebugSettingsTests | testIsTestHoldsEnabled | 6ms |
| โ | DebugSettingsTests | testResetAll | 8ms |
| โ | DebugSettingsTests | testSimulatedBorrowError_allCasesHaveDisplayNames | 3ms |
| โ | DebugSettingsTests | testSimulatedBorrowError_canBeSet | 6ms |
| โ | DebugSettingsTests | testSimulatedBorrowError_credentialsSuspended | 2ms |
| โ | DebugSettingsTests | testSimulatedBorrowError_generic | 2ms |
| โ | DebugSettingsTests | testSimulatedBorrowError_holdLimit | 7ms |
| โ | DebugSettingsTests | testSimulatedBorrowError_loanLimit | 34ms |
| โ | DebugSettingsTests | testSimulatedBorrowError_none_nilProblemDoc | 2ms |
| โ | DebugSettingsTests | testTestHoldsConfig_allCasesHaveDisplayNames | 4ms |
| โ | DebugSettingsTests | testTestHoldsConfig_allReady_badgeCount | 3ms |
| โ | DebugSettingsTests | testTestHoldsConfig_default | 2ms |
| โ | DebugSettingsTests | testTestHoldsConfig_mixedHolds_badgeCount | 2ms |
| โ | DebugSettingsTests | testTestHoldsConfig_none_badgeCount | 2ms |
| โ | DebugSettingsTests | testTestHoldsConfig_oneReady_badgeCount | 2ms |
| โ | DebugSettingsTests | testTestHoldsConfig_oneReserved_badgeCount | 3ms |
| โ | DefaultCatalogAPITests | testCatalogAPI_IntegrationWithRepository_HandlesErrors | 9ms |
| โ | DefaultCatalogAPITests | testCatalogAPI_IntegrationWithRepository_WorksCorrectly | 10ms |
| โ | DefaultCatalogAPITests | testExtractSearchEntryPoints_ActiveEntry_GetsSearchDescriptorURL | 4ms |
| โ | DefaultCatalogAPITests | testExtractSearchEntryPoints_FacetWithEmptyTitle_IsExcluded | 6ms |
| โ | DefaultCatalogAPITests | testExtractSearchEntryPoints_FeedWithNoFacets_ReturnsEmpty | 3ms |
| โ | DefaultCatalogAPITests | testExtractSearchEntryPoints_FirstEntryActive_MarkedCorrectly | 4ms |
| โ | DefaultCatalogAPITests | testExtractSearchEntryPoints_GroupsFeedURLs_AreCorrect | 3ms |
| โ | DefaultCatalogAPITests | testExtractSearchEntryPoints_InactiveEntries_HaveNilSearchDescriptorURL | 7ms |
| โ | DefaultCatalogAPITests | testExtractSearchEntryPoints_NoSearchLink_AllDescriptorURLsNil | 4ms |
| โ | DefaultCatalogAPITests | testExtractSearchEntryPoints_NonEntryPointFacets_AreExcluded | 5ms |
| โ | DefaultCatalogAPITests | testExtractSearchEntryPoints_SecondEntryActive_MarkedCorrectly | 4ms |
| โ | DefaultCatalogAPITests | testExtractSearchEntryPoints_StableIDs_MatchGroupsFeedURL | 8ms |
| โ | DefaultCatalogAPITests | testExtractSearchEntryPoints_ThreeEntryPoints_ReturnsAllThree | 5ms |
| โ | DefaultCatalogAPITests | testFetchFeed_AfterReset_CallCountResetsToZero | 7ms |
| โ | DefaultCatalogAPITests | testFetchFeed_DefaultResponse_UsedWhenNoStubSet | 4ms |
| โ | DefaultCatalogAPITests | testFetchFeed_DifferentURLs_ReturnDifferentStubs | 7ms |
| โ | DefaultCatalogAPITests | testFetchFeed_EmptyFeed_ReturnsEmptyEntries | 18ms |
| โ | DefaultCatalogAPITests | testFetchFeed_EmptyResponseData_ThrowsParsingError | 5ms |
| โ | DefaultCatalogAPITests | testFetchFeed_FailAfterMultipleCalls_SimulatesIntermittentFailure | 23ms |
| โ | DefaultCatalogAPITests | testFetchFeed_GlobalError_AffectsAllRequests | 4ms |
| โ | DefaultCatalogAPITests | testFetchFeed_InvalidXML_ThrowsParsingError | 4ms |
| โ | DefaultCatalogAPITests | testFetchFeed_MultipleCalls_TracksAllRequests | 13ms |
| โ | DefaultCatalogAPITests | testFetchFeed_NetworkError_ThrowsError | 2ms |
| โ | DefaultCatalogAPITests | testFetchFeed_ServerError500_ThrowsError | 7ms |
| โ | DefaultCatalogAPITests | testFetchFeed_SpecialCharactersInFeedTitle_ParsesCorrectly | 4ms |
| โ | DefaultCatalogAPITests | testFetchFeed_Timeout_ThrowsError | 4ms |
| โ | DefaultCatalogAPITests | testFetchFeed_TracksRequestDetails | 15ms |
| โ | DefaultCatalogAPITests | testFetchFeed_URLWithQueryParameters_PreservesParameters | 5ms |
| โ | DefaultCatalogAPITests | testFetchFeed_UnauthorizedError_ThrowsError | 5ms |
| โ | DefaultCatalogAPITests | testFetchFeed_UsesGETMethod | 8ms |
| โ | DefaultCatalogAPITests | testFetchFeed_ValidOPDSResponse_ReturnsParsedFeed | 18ms |
| โ | DeriveInitialStateTests | testDeriveInitialState_ForBookWithoutAcquisition_ReturnsUnsupported | 3ms |
| โ | DeriveInitialStateTests | testDeriveInitialState_ForReadyBook_ReturnsHolding | 4ms |
| โ | DeriveInitialStateTests | testDeriveInitialState_ForReservedBook_ReturnsHolding | 10ms |
| โ | DeriveInitialStateTests | testDeriveInitialState_ForStandardBook_ReturnsDownloadNeeded | 10ms |
| โ | DeviceLogCollectorGapTests | testDeviceLogCollector_collectLogs_exercisesFormattingMethods | 6.65s |
| โ | DeviceLogCollectorGapTests | testDeviceLogCollector_collectLogs_outputContainsFormattedStructure | 7.97s |
| โ | DeviceLogCollectorTests | testCollectLogs_capturesRecentOSLogEntries | 6.78s |
| โ | DeviceLogCollectorTests | testCollectLogs_containsEndMarker | 5.90s |
| โ | DeviceLogCollectorTests | testCollectLogs_containsExpectedHeader | 4.59s |
| โ | DeviceLogCollectorTests | testCollectLogs_defaultParameterIs7Days | 5.56s |
| โ | DeviceLogCollectorTests | testCollectLogs_formattedEntriesContainExpectedFields | 5.92s |
| โ | DeviceLogCollectorTests | testCollectLogs_outputIsValidUTF8 | 4.90s |
| โ | DeviceLogCollectorTests | testCollectLogs_reportsEntryCount | 5.56s |
| โ | DeviceLogCollectorTests | testCollectLogs_returnsNonEmptyData | 4.81s |
| โ | DeviceLogCollectorTests | testCollectLogs_withCustomDayRange_reflectsInOutput | 5.06s |
| โ | DeviceOrientationTests | testDeviceOrientation_isObservableObject | 13ms |
| โ | DeviceOrientationTests | testInitialIsLandscape_basedOnScreenDimensions | 100ms |
| โ | DeviceOrientationTests | testIsLandscape_isPublished | 2ms |
| โ | DeviceOrientationTests | testStartAndStopTracking_multipleTimesDoesNotCrash | 2ms |
| โ | DeviceOrientationTests | testStartTracking_doesNotCrash | 3ms |
| โ | DeviceOrientationTests | testStopTracking_beforeStartTracking_doesNotCrash | 11ms |
| โ | DeviceOrientationTests | testStopTracking_doesNotCrash | 32ms |
| โ | DeviceSpecificErrorMonitorTests | testGetDeviceID_isConsistent | 3ms |
| โ | DeviceSpecificErrorMonitorTests | testGetDeviceID_looksLikeUUIDAndFormatIsStableAcrossCalls | 6ms |
| โ | DeviceSpecificErrorMonitorTests | testGetDeviceID_returnsNonEmptyString | 12ms |
| โ | DeviceSpecificErrorMonitorTests | testGetDeviceInfo_containsExpectedKeys | 2ms |
| โ | DeviceSpecificErrorMonitorTests | testGetDeviceInfo_valuesAreNonEmpty | 2ms |
| โ | DeviceSpecificErrorMonitorTests | testIsEnhancedLoggingEnabled_returnsBool | 3ms |
| โ | DeviceSpecificErrorMonitorTests | testLogError_doesNotCrashAndPreservesMonitorState | 2ms |
| โ | DeviceSpecificErrorMonitorTests | testLogError_withMetadata_doesNotCrash | 4ms |
| โ | DeviceSpecificErrorMonitorTests | testLogNetworkFailure_doesNotCrash | 8ms |
| โ | DeviceSpecificErrorMonitorTests | testShared_providesFunctionalInstanceWithDeviceIDAndInfo | 8ms |
| โ | DeviceSpecificErrorMonitorTests | testShared_returnsSameInstance | 2ms |
| โ | DictionaryExtensionsTests | testMapKeys_ChangesKeyType_StringToInt | 3ms |
| โ | DictionaryExtensionsTests | testMapKeys_CollidingKeys_OverwritesValue | 30ms |
| โ | DictionaryExtensionsTests | testMapKeys_EmptyDictionary_ReturnsEmpty | 2ms |
| โ | DictionaryExtensionsTests | testMapKeys_TransformsKeys_PreservesValues | 2ms |
| โ | DictionaryExtensionsTests | testMapKeys_UniqueTransform_PreservesCount | 2ms |
| โ | DiskBudgetManagerTests | testDefaultBudget_onLargeDevice_returnsRelaxedLargeDeviceQuota | 6ms |
| โ | DiskBudgetManagerTests | testDefaultBudget_onSmallDevice_returnsRelaxedSmallDeviceQuota | 9ms |
| โ | DiskBudgetManagerTests | testDirectoryUsageBytes_emptyDirectory_returnsZero | 6ms |
| โ | DiskBudgetManagerTests | testDirectoryUsageBytes_missingDirectory_returnsZero | 3ms |
| โ | DiskBudgetManagerTests | testDirectoryUsageBytes_sumsAllNonHiddenFiles | 8ms |
| โ | DiskBudgetManagerTests | testListContentFilesSortedByLRU_missingDirectory_returnsEmpty | 3ms |
| โ | DiskBudgetManagerTests | testListContentFilesSortedByLRU_returnsOldestFirst | 6ms |
| โ | DiskBudgetTests | testContentDirectory_createdOnAccess | 6ms |
| โ | DiskBudgetTests | testDiskSpace_available_returnsPositiveValue | 4ms |
| โ | DownloadAlertPresenterTests | testAlertForProblemDocument_errorOnly_includesErrorDescription | 32ms |
| โ | DownloadAlertPresenterTests | testAlertForProblemDocument_genericProblem_keepsBookInRegistryAndAllowsRetry | 32ms |
| โ | DownloadAlertPresenterTests | testAlertForProblemDocument_noActiveLoan_removesFromRegistryAndDisablesRetry | 528ms |
| โ | DownloadAlertPresenterTests | testFailDownloadWithAlert_retryAction_invokesStartDownloadOnce | 34ms |
| โ | DownloadAlertPresenterTests | testFailDownloadWithAlert_setsDownloadFailedAndAnnouncesAndPublishesError | 44ms |
| โ | DownloadAnnouncementServiceTests | testAnnounceBorrowFailed_forwardsTitle | 4ms |
| โ | DownloadAnnouncementServiceTests | testAnnounceBorrowStarted_forwardsTitle | 3ms |
| โ | DownloadAnnouncementServiceTests | testAnnounceBorrowSucceeded_forwardsTitle | 4ms |
| โ | DownloadAnnouncementServiceTests | testAnnounceDownloadCompleted_announcesAndResetsProgress | 6ms |
| โ | DownloadAnnouncementServiceTests | testAnnounceDownloadFailed_announcesAndResetsProgress | 6ms |
| โ | DownloadAnnouncementServiceTests | testAnnounceDownloadProgress_forwardsTitleIdentifierAndProgress | 9ms |
| โ | DownloadAnnouncementServiceTests | testAnnounceDownloadStarted_forwardsTitleAndIdentifier | 4ms |
| โ | DownloadAnnouncementServiceTests | testAnnounceReturnFailed_forwardsTitle | 4ms |
| โ | DownloadAnnouncementServiceTests | testAnnounceReturnStarted_forwardsTitle | 4ms |
| โ | DownloadAnnouncementServiceTests | testAnnounceReturnSucceeded_forwardsTitle | 88ms |
| โ | DownloadAnnouncementServiceTests | testCompletedAndFailed_orderingIsAnnounceThenReset | 4ms |
| โ | DownloadAnnouncementServiceTests | testIdentifierPropagation_distinctBooksAreNotAliased | 12ms |
| โ | DownloadAuthRetryHandlerTests | testHandle_401_withCredentials_browserOIDC_presentsReauthAndRetriesOnLoggedIn | 169ms |
| โ | DownloadAuthRetryHandlerTests | testHandle_401_withCredentials_browserSAML_setsStateToSAMLStartedAndRetries | 183ms |
| โ | DownloadAuthRetryHandlerTests | testHandle_401_withCredentials_tokenRefresh_returnsFalseSoCallerCanAlert | 11ms |
| โ | DownloadAuthRetryHandlerTests | testHandle_401_withoutCredentials_loginRequired_presentsSignInAndRetriesOnHasCredentials | 171ms |
| โ | DownloadAuthRetryHandlerTests | testHandle_noActiveLoan_basicAuth_triggersAutoBorrowAndAlertsOnBorrowFailure | 13ms |
| โ | DownloadAuthRetryHandlerTests | testHandle_noActiveLoan_browserSAML_treatsAsSessionExpiryAndRetries | 185ms |
| โ | DownloadAuthRetryHandlerTests | testHandle_nonAuthError_withoutCredentials_loginRequired_presentsSignInModal | 7ms |
| โ | DownloadAuthRetryHandlerTests | testHandle_unrelatedFailure_anonymousAccount_returnsFalse | 14ms |
| โ | DownloadCancellationHandlerTests | testCancel_adobeDRMRights_shortCircuitsToAdobeCancel | 110ms |
| โ | DownloadCancellationHandlerTests | testCancel_noTaskInDownloadingState_setsDownloadNeededAndCleansUp | 38ms |
| โ | DownloadCancellationHandlerTests | testCancel_noTaskInSAMLStartedState_treatedAsCancellable | 34ms |
| โ | DownloadCancellationHandlerTests | testCancel_unknownIdentifierWithNonCancellableState_isNoOp | 81ms |
| โ | DownloadCancellationHandlerTests | testCancel_withTask_setsDownloadNeededAndCancelsTask | 35ms |
| โ | DownloadCompletionParserTests | testParse_OPDS2Publication_followUpFailed_returnsFailure | 22ms |
| โ | DownloadCompletionParserTests | testParse_OPDS2Publication_followUpStarted_returnsFollowUpStarted | 6ms |
| โ | DownloadCompletionParserTests | testParse_OPDSEntry_followUpFailed_returnsFailure | 19ms |
| โ | DownloadCompletionParserTests | testParse_OPDSEntry_followUpStarted_returnsFollowUpStarted | 15ms |
| โ | DownloadCompletionParserTests | testParse_knownRightsInCache_skipsDetection | 10ms |
| โ | DownloadCompletionParserTests | testParse_problemDocument_returnsFailureWithParsedDoc | 8ms |
| โ | DownloadCompletionParserTests | testParse_supportedMime_returnsProceed | 9ms |
| โ | DownloadCompletionParserTests | testParse_unknownRights_detectsFromMimeAndUpdatesCache | 17ms |
| โ | DownloadCompletionParserTests | testParse_unsupportedMime_returnsFailure | 9ms |
| โ | DownloadCoordinatorIntegrationTests | testCoordinator_concurrentCompletions_maintainsConsistency | 5ms |
| โ | DownloadCoordinatorIntegrationTests | testCoordinator_concurrentRegistrations_maintainsConsistency | 9ms |
| โ | DownloadCoordinatorIntegrationTests | testCoordinator_downloadInfoCache_storesMultipleEntries | 51ms |
| โ | DownloadCoordinatorIntegrationTests | testCoordinator_downloadInfoCache_updatesExistingEntry | 5ms |
| โ | DownloadCoordinatorIntegrationTests | testCoordinator_mixedOperations_maintainsConsistency | 18ms |
| โ | DownloadCoordinatorIntegrationTests | testCoordinator_partialDequeue_leavesRemainder | 20ms |
| โ | DownloadCoordinatorIntegrationTests | testCoordinator_queueFIFO_maintainsOrder | 12ms |
| โ | DownloadCoordinatorIntegrationTests | testCoordinator_throttling_returnsDelayAfterRecentStart | 3ms |
| โ | DownloadCoordinatorIntegrationTests | testCoordinator_throttling_returnsZeroAfterDelay | 3ms |
| โ | DownloadCoordinatorIntegrationTests | testCoordinator_zeroCapacityDequeue_returnsEmpty | 24ms |
| โ | DownloadCoordinatorTests | testCoordinator_cacheDownloadInfo_storesAndRetrieves | 3ms |
| โ | DownloadCoordinatorTests | testCoordinator_canStartDownload_respectsMaxConcurrent | 7ms |
| โ | DownloadCoordinatorTests | testCoordinator_canStartDownload_withinLimit | 3ms |
| โ | DownloadCoordinatorTests | testCoordinator_dequeuePending_returnsBooks | 15ms |
| โ | DownloadCoordinatorTests | testCoordinator_enqueuePending_addsToQueue | 13ms |
| โ | DownloadCoordinatorTests | testCoordinator_enqueuePending_preventsDuplicates | 8ms |
| โ | DownloadCoordinatorTests | testCoordinator_redirectAttempts_tracksCorrectly | 3ms |
| โ | DownloadCoordinatorTests | testCoordinator_registerCompletion_decrementsActiveCount | 4ms |
| โ | DownloadCoordinatorTests | testCoordinator_registerStart_incrementsActiveCount | 3ms |
| โ | DownloadCoordinatorTests | testCoordinator_removeCachedDownloadInfo_removesEntry | 4ms |
| โ | DownloadCoordinatorTests | testCoordinator_reset_clearsAllState | 33ms |
| โ | DownloadDiskSpaceTests | testAvailableDiskSpace_isPositive | 3ms |
| โ | DownloadDiskSpaceTests | testDocumentsDirectory_exists | 2ms |
| โ | DownloadErrorInfoTests | testConvenienceInit_setsFieldsCorrectly | 2ms |
| โ | DownloadErrorInfoTests | testFullInit_withNilRetryAction | 2ms |
| โ | DownloadErrorInfoTests | testFullInit_withRetryAction | 2ms |
| โ | DownloadErrorRecoveryPolicyTests | testBorrowPolicy_doesNotRetryOnFatalErrors | 2ms |
| โ | DownloadErrorRecoveryPolicyTests | testBorrowPolicy_recoversAfterNoActiveLoan | 18ms |
| โ | DownloadErrorRecoveryPolicyTests | testBorrowPolicy_retriesOnAllTransientErrors | 4ms |
| โ | DownloadErrorRecoveryPolicyTests | testDefaultPolicy_hasReasonableDefaults | 4ms |
| โ | DownloadErrorRecoveryPolicyTests | testExecuteWithRetry_failsAfterMaxAttempts | 38ms |
| โ | DownloadErrorRecoveryPolicyTests | testExecuteWithRetry_immediateSuccess_noRetries | 6ms |
| โ | DownloadErrorRecoveryPolicyTests | testExecuteWithRetry_nonRetryableError_failsImmediately | 5ms |
| โ | DownloadErrorRecoveryPolicyTests | testExecuteWithRetry_retriesOnTransientError | 41ms |
| โ | DownloadErrorRecoveryPolicyTests | testExecuteWithRetry_successfulOperation_returnsResult | 6ms |
| โ | DownloadErrorRecoveryPolicyTests | testExecuteWithRetry_worksWithDifferentTypes | 4ms |
| โ | DownloadErrorRecoveryPolicyTests | testPolicyPresets_areOrderedByAggressiveness | 4ms |
| โ | DownloadErrorRecoveryTests | testErrorRecovery_cancelledDownload_resetsToDownloadNeeded | 9ms |
| โ | DownloadErrorRecoveryTests | testErrorRecovery_downloadFailed_allowsRetry | 7ms |
| โ | DownloadErrorRecoveryTests | testErrorRecovery_multipleFailures_trackedSeparately | 13ms |
| โ | DownloadInfoTests | testDownloadInfo_creation_setsInitialValues | 23ms |
| โ | DownloadInfoTests | testDownloadInfo_progressUpdates_handlesEdgeCases | 2ms |
| โ | DownloadInfoTests | testDownloadInfo_rightsManagementString_returnsCorrectString | 3ms |
| โ | DownloadInfoTests | testDownloadInfo_withDownloadProgress_createsNewInstance | 5ms |
| โ | DownloadInfoTests | testDownloadInfo_withRightsManagement_createsNewInstance | 3ms |
| โ | DownloadOnlyOnWiFiTests | testAccessibilityIdentifier_exists | 2ms |
| โ | DownloadOnlyOnWiFiTests | testDefaultValue_isFalse | 6ms |
| โ | DownloadOnlyOnWiFiTests | testLocalizedStrings_areNotEmpty | 2ms |
| โ | DownloadOnlyOnWiFiTests | testMock_canBeConfigured | 2ms |
| โ | DownloadOnlyOnWiFiTests | testMock_defaultIsFalse | 2ms |
| โ | DownloadOnlyOnWiFiTests | testMock_resetClearsSetting | 3ms |
| โ | DownloadOnlyOnWiFiTests | testReachability_isOnWiFi_consistentWithDetailedStatus | 2ms |
| โ | DownloadOnlyOnWiFiTests | testReachability_isOnWiFi_returnsBool | 2ms |
| โ | DownloadOnlyOnWiFiTests | testSetting_persistsAcrossReads | 7ms |
| โ | DownloadOnlyOnWiFiTests | testSetting_persistsToUserDefaultsAcrossToggleCycle | 12ms |
| โ | DownloadPersistenceStoreTests | testBookDownloadsOverallProgress | 6ms |
| โ | DownloadPersistenceStoreTests | testGetIncompleteDownloads | 8ms |
| โ | DownloadPersistenceStoreTests | testMarkCompleted | 386ms |
| โ | DownloadPersistenceStoreTests | testRegisterDownload | 44ms |
| โ | DownloadPersistenceStoreTests | testUpdateProgress | 5ms |
| โ | DownloadProgressPublisherCoreTests | testAnnounceBorrowFailed_doesNotCrash | 6ms |
| โ | DownloadProgressPublisherCoreTests | testAnnounceBorrowStarted_doesNotCrash | 7ms |
| โ | DownloadProgressPublisherCoreTests | testAnnounceBorrowSucceeded_doesNotCrash | 7ms |
| โ | DownloadProgressPublisherCoreTests | testAnnounceDownloadCompleted_doesNotCrash | 9ms |
| โ | DownloadProgressPublisherCoreTests | testAnnounceDownloadFailed_doesNotCrash | 11ms |
| โ | DownloadProgressPublisherCoreTests | testAnnounceDownloadProgress_doesNotCrash | 5ms |
| โ | DownloadProgressPublisherCoreTests | testAnnounceDownloadStarted_doesNotCrash | 5ms |
| โ | DownloadProgressPublisherCoreTests | testAnnounceReturnFailed_doesNotCrash | 5ms |
| โ | DownloadProgressPublisherCoreTests | testAnnounceReturnStarted_doesNotCrash | 8ms |
| โ | DownloadProgressPublisherCoreTests | testAnnounceReturnSucceeded_doesNotCrash | 13ms |
| โ | DownloadProgressPublisherCoreTests | testBroadcastUpdate_postsNotification | 6ms |
| โ | DownloadProgressPublisherCoreTests | testBroadcastUpdate_throttles_rapidCalls | 4.08s |
| โ | DownloadProgressPublisherCoreTests | testBroadcastUpdate_usesNotificationSender | 4.14s |
| โ | DownloadProgressPublisherCoreTests | testConformsToDownloadProgressPublishing | 5ms |
| โ | DownloadProgressPublisherCoreTests | testPublishAndAnnounceError_publishesOnErrorPublisher | 6ms |
| โ | DownloadProgressPublisherCoreTests | testPublishAndAnnounceError_withRetryAction | 5ms |
| โ | DownloadProgressPublisherCoreTests | testSendProgress_differentBooks_publishesSeparately | 38ms |
| โ | DownloadProgressPublisherCoreTests | testSendProgress_multipleUpdates_allReceived | 6ms |
| โ | DownloadProgressPublisherCoreTests | testSendProgress_publishesOnProgressPublisher | 4ms |
| โ | DownloadProgressPublisherTests | testProgressPublisher_emitsMultipleUpdates | 3ms |
| โ | DownloadProgressPublisherTests | testProgressPublisher_emitsProgressUpdates | 5ms |
| โ | DownloadQueueIntegrationTests | testMaxConcurrentDownloads_limitsActiveDownloads | 3ms |
| โ | DownloadQueueIntegrationTests | testQueuedBooks_preserveOrderAcrossMultipleDequeues | 58ms |
| โ | DownloadQueueIntegrationTests | testQueuedBooks_startedWhenCapacityAvailable | 12ms |
| โ | DownloadQueueOrchestratorTests | testEnqueuePending_appendsToCoordinatorPendingQueue | 29ms |
| โ | DownloadQueueOrchestratorTests | testEnqueuePending_doesNotPostOnDefaultCenter_whenInjectedCenterDiffers | 28ms |
| โ | DownloadQueueOrchestratorTests | testEnqueuePending_marksBookAsDownloadingInRegistry | 5ms |
| โ | DownloadQueueOrchestratorTests | testEnqueuePending_postsDidChangeNotificationOnInjectedCenter | 26ms |
| โ | DownloadQueueOrchestratorTests | testSchedulePendingStartsAsync_atCap_doesNotDequeueOrCallDelegate | 10ms |
| โ | DownloadQueueOrchestratorTests | testSchedulePendingStartsAsync_emptyQueue_doesNotCallDelegate | 4ms |
| โ | DownloadQueueOrchestratorTests | testSchedulePendingStartsAsync_passesNilRequestToDelegate | 6ms |
| โ | DownloadQueueOrchestratorTests | testSchedulePendingStartsAsync_underCap_dequeuesUpToRemainingCapacityInFIFOOrder | 56ms |
| โ | DownloadQueueOrchestratorTests | testSchedulePendingStartsIfPossible_drivesDelegateAsynchronously | 26ms |
| โ | DownloadRedirectTests | testBearerTokenJSON_shouldUseDistributorToken_notPalaceToken | 6ms |
| โ | DownloadRedirectTests | testRedirectRequest_crossDomain_shouldNotContainAuthHeader | 5ms |
| โ | DownloadRedirectTests | testRedirectRequest_sameDomain_shouldNotContainAuthHeader | 2ms |
| โ | DownloadRedirectTests | testRedirectRequest_shouldNotContainAuthHeader_whenFollowingRedirect | 5ms |
| โ | DownloadRedirectTests | testRedirect_httpsToHttp_shouldBeBlocked | 4ms |
| โ | DownloadRedirectTests | testRedirect_httpsToHttps_shouldBeAllowed | 3ms |
| โ | DownloadRedirectTests | testRedirect_maxRedirectAttempts_shouldBeEnforced | 5ms |
| โ | DownloadSlotManagementTests | testHoldingState_bookRegistryTracksCorrectly | 8ms |
| โ | DownloadSlotManagementTests | testStateTransition_completeDownloadFlow | 8ms |
| โ | DownloadSlotManagementTests | testStateTransition_downloadingToFailed | 6ms |
| โ | DownloadSlotManagementTests | testStateTransition_downloadingToHolding | 206ms |
| โ | DownloadSlotManagementTests | testStateTransitions_holdingStateIsTracked | 8ms |
| โ | DownloadStartCoordinatorTests | testStartBorrow_resultsInHolding_releasesSlotAndSchedules | 90ms |
| โ | DownloadStartCoordinatorTests | testStartBorrow_success_invokesCompletionAndDoesNotReleaseSlot | 45ms |
| โ | DownloadStartCoordinatorTests | testStartBorrow_throws_releasesSlotAndSchedulesAndCallsCompletion | 40ms |
| โ | DownloadStartCoordinatorTests | testStartDownloadAsync_alreadyDownloadingState_skips | 19ms |
| โ | DownloadStartCoordinatorTests | testStartDownloadAsync_capExceeded_enqueuesPending | 58ms |
| โ | DownloadStartCoordinatorTests | testStartDownloadAsync_credentialsAvailable_dispatches | 19ms |
| โ | DownloadStartCoordinatorTests | testStartDownloadAsync_existingDownloadInProgress_skipsDuplicate | 13ms |
| โ | DownloadStartCoordinatorTests | testStartDownloadAsync_terminalState_isNonsensicalNoOp | 20ms |
| โ | DownloadStartCoordinatorTests | testStartDownloadAsync_unregisteredState_callsProcessUnregisteredFirst | 24ms |
| โ | DownloadStartDispatcherTests | testProcessDownloadWithCredentials_holding_routesToStartBorrow | 4ms |
| โ | DownloadStartDispatcherTests | testProcessDownloadWithCredentials_unregistered_routesToStartBorrow | 16ms |
| โ | DownloadStartDispatcherTests | testProcessRegularDownload_downloadNeededWithBorrowLink_triggersAutoBorrow | 4ms |
| โ | DownloadStartDispatcherTests | testProcessRegularDownload_initedRequestPassedThrough_overridesAcquisitionURL | 4ms |
| โ | DownloadStartDispatcherTests | testProcessRegularDownload_normalOpenAccess_callsAddDownloadTaskWithBearerRequest | 58ms |
| โ | DownloadStartDispatcherTests | testProcessRegularDownload_samlState_routesThroughSAMLHandler | 18ms |
| โ | DownloadStartDispatcherTests | testProcessRegularDownload_wifiOnlyEnforced_failsAndDoesNotStartDownload | 7ms |
| โ | DownloadStartDispatcherTests | testProcessUnregisteredState_hasBorrowLink_doesNotRegister | 7ms |
| โ | DownloadStartDispatcherTests | testProcessUnregisteredState_loginNotRequired_noBorrowLink_registersAsDownloadNeeded | 6ms |
| โ | DownloadStartDispatcherTests | testProcessUnregisteredState_loginRequiredNoOpenAccess_returnsUnregistered | 5ms |
| โ | DownloadStartDispatcherTests | testProcessUnregisteredState_openAccessBook_registersAndReturnsDownloadNeeded | 6ms |
| โ | DownloadStateMachineIntegrationTests | testBorrowResponseState_borrowFromLimited_reservedResponse_returnsRaceLossError | 12ms |
| โ | DownloadStateMachineIntegrationTests | testBorrowResponseState_borrowFromReady_unavailableResponse_returnsRaceLossError | 16ms |
| โ | DownloadStateMachineIntegrationTests | testBorrowResponseState_borrowFromUnlimited_unavailableResponse_returnsRaceLossError | 4ms |
| โ | DownloadStateMachineIntegrationTests | testBorrowResponseState_placeHold_reservedResponse_noError | 40ms |
| โ | DownloadStateMachineIntegrationTests | testBorrowResponseState_placeHold_unavailableResponse_noError | 2ms |
| โ | DownloadStateMachineIntegrationTests | testBorrowResponseState_postLimited_returnsDownloadNeededWithNoError | 4ms |
| โ | DownloadStateMachineIntegrationTests | testBorrowResponseState_postReady_returnsDownloadNeededWithNoError | 3ms |
| โ | DownloadStateMachineIntegrationTests | testBorrowResponseState_postUnlimited_returnsDownloadNeededWithNoError | 2ms |
| โ | DownloadStateMachineIntegrationTests | testState_completeFailedDownloadWithRetryFlow | 6ms |
| โ | DownloadStateMachineIntegrationTests | testState_completeSuccessfulDownloadFlow | 11ms |
| โ | DownloadStateMachineIntegrationTests | testState_downloadFailedToDownloading_retryTransition | 5ms |
| โ | DownloadStateMachineIntegrationTests | testState_downloadNeededToDownloading_validTransition | 7ms |
| โ | DownloadStateMachineIntegrationTests | testState_downloadingToDownloadFailed_validTransition | 36ms |
| โ | DownloadStateMachineIntegrationTests | testState_downloadingToDownloadSuccessful_validTransition | 21ms |
| โ | DownloadStateMachineIntegrationTests | testState_unregisteredToDownloadNeeded_validTransition | 5ms |
| โ | DownloadStateMachineTests | testState_downloadFailed_canRetry | 11ms |
| โ | DownloadStateMachineTests | testState_downloadNeeded_canTransitionToDownloadSuccessful | 16ms |
| โ | DownloadStateMachineTests | testState_downloadNeeded_canTransitionToDownloading | 6ms |
| โ | DownloadStateMachineTests | testState_downloading_canTransitionToFailed | 7ms |
| โ | DownloadStateMachineTests | testState_downloading_canTransitionToSuccess | 6ms |
| โ | DownloadStateManagerTests | testBookIdentifierToDownloadTask_storesAndRetrieves | 82ms |
| โ | DownloadStateManagerTests | testCleanupDownload_removesAllTracking | 13ms |
| โ | DownloadStateManagerTests | testCleanupDownload_withoutTaskId_stillCleansInfo | 4ms |
| โ | DownloadStateManagerTests | testConcurrentAccess_doesNotCrash | 7ms |
| โ | DownloadStateManagerTests | testDownloadInfoAsync_cachesInCoordinator | 6ms |
| โ | DownloadStateManagerTests | testDownloadInfoAsync_existingEntry_returnsInfo | 29ms |
| โ | DownloadStateManagerTests | testDownloadInfoAsync_missingEntry_returnsNil | 4ms |
| โ | DownloadStateManagerTests | testDownloadInfo_sync_returnsNilForMissing | 2ms |
| โ | DownloadStateManagerTests | testDownloadProgress_noInfo_returnsZero | 3ms |
| โ | DownloadStateManagerTests | testInit_defaultMaxConcurrentDownloads | 2ms |
| โ | DownloadStateManagerTests | testInit_emptyCollections | 6ms |
| โ | DownloadStateManagerTests | testResetAll_clearsEverything | 9ms |
| โ | DownloadStateManagerTests | testTaskIdentifierToBook_storesAndRetrieves | 10ms |
| โ | DownloadTaskLifecycleServiceTests | testHandleTaskCompletionError_cancelledError_doesNotAlert | 6ms |
| โ | DownloadTaskLifecycleServiceTests | testHandleTaskCompletionError_realError_logsFailureAndAlerts | 11ms |
| โ | DownloadTaskLifecycleServiceTests | testHandleTaskCompletionError_successPath_registersCompletionAndSchedules | 20ms |
| โ | DownloadTaskLifecycleServiceTests | testHandleTaskCompletionError_unknownTask_isNoOp | 7ms |
| โ | DownloadTaskLifecycleServiceTests | testRegisterStartedTask_announcesDownloadStartedAndNotifiesCenter | 9ms |
| โ | DownloadTaskLifecycleServiceTests | testRegisterStartedTask_marksBookAsDownloadingInRegistry | 12ms |
| โ | DownloadTaskLifecycleServiceTests | testRegisterStartedTask_resumesTheTask | 15ms |
| โ | DownloadTaskLifecycleServiceTests | testRegisterStartedTask_storesDownloadInfoKeyedByBookIdentifier | 14ms |
| โ | DownloadTaskLifecycleServiceTests | testRegisterStartedTask_storesTaskIdentifierToBookMapping | 10ms |
| โ | DownloadThrottlingServiceTests | testLimitActiveDownloads_alwaysCallsScheduleAfterPolicyApplied | 50ms |
| โ | DownloadThrottlingServiceTests | testLimit_atCap_doesNothingButCallsSchedule | 50ms |
| โ | DownloadThrottlingServiceTests | testLimit_overCap_audiobookTaskNotSuspended | 58ms |
| โ | DownloadThrottlingServiceTests | testLimit_overCap_suspendsExcessNonAudiobookTasks | 36ms |
| โ | DownloadThrottlingServiceTests | testLimit_underCap_resumesSuspendedTasks | 38ms |
| โ | DownloadThrottlingServiceTests | testPauseAllDownloads_preservesAudiobookTasks | 39ms |
| โ | DownloadThrottlingServiceTests | testPauseAllDownloads_suspendsAllNonAudiobookTasks | 36ms |
| โ | DownloadThrottlingServiceTests | testResumeIntelligentDownloads_reAppliesCurrentCap | 36ms |
| โ | DownloadThrottlingServiceTests | testSetupNetworkMonitoring_calledTwice_replacesPriorObserver | 34ms |
| โ | DownloadThrottlingServiceTests | testSetupNetworkMonitoring_observesAppDidBecomeActiveAndReAppliesCap | 32ms |
| โ | DownloadWatchdogTests | testDefaultConfiguration | 23ms |
| โ | DownloadWatchdogTests | testStartAndStop | 11ms |
| โ | DownloadWatchdogTests | testWatchdogConfiguration | 301ms |
| โ | EPUBModuleTests | testEPUBModule_canBeInitialized | 2ms |
| โ | EPUBModuleTests | testEPUBModule_conformsToReaderFormatModule | 8ms |
| โ | EPUBModuleTests | testReaderError_epubNotValid_exists | 12ms |
| โ | EPUBModuleTests | testReaderError_epubNotValid_isError | 3ms |
| โ | EPUBPositionTests | testBookLocation_CreationFromDictionary | 2ms |
| โ | EPUBPositionTests | testBookLocation_CreationWithValidData | 24ms |
| โ | EPUBPositionTests | testBookLocation_DictionaryRoundTrip | 2ms |
| โ | EPUBPositionTests | testBookLocation_FailsWithMissingLocationString | 2ms |
| โ | EPUBPositionTests | testBookLocation_FailsWithMissingRenderer | 2ms |
| โ | EPUBPositionTests | testLocationSimilarity_DifferentProgressions | 2ms |
| โ | EPUBPositionTests | testLocationSimilarity_IdenticalLocations | 5ms |
| โ | EPUBPositionTests | testThrottlingInterval_Value | 3ms |
| โ | EPUBSearchViewModelTests | testClearSearch_ResetsState | 4ms |
| โ | EPUBSearchViewModelTests | testFetchNextBatch_WhenNotIdle_DoesNothing | 4ms |
| โ | EPUBSearchViewModelTests | testFetchNextBatch_WithMoreResults_AppendsResults | 6ms |
| โ | EPUBSearchViewModelTests | testInit_HasCorrectDefaults | 5ms |
| โ | EPUBSearchViewModelTests | testSearch_CancelsInFlight_OnNewQuery | 22ms |
| โ | EPUBSearchViewModelTests | testSearch_FiltersDuplicateResults | 6ms |
| โ | EPUBSearchViewModelTests | testSearch_GroupsResultsByTitle | 5ms |
| โ | EPUBSearchViewModelTests | testSearch_PublicationNotSearchable_SetsFailureState | 3ms |
| โ | EPUBSearchViewModelTests | testSearch_SetsIsSearching | 10ms |
| โ | EPUBSearchViewModelTests | testSearch_WithEmptyQuery_DoesNotSearch | 6ms |
| โ | EPUBSearchViewModelTests | testSearch_WithError_SetsErrorMessage | 14ms |
| โ | EPUBSearchViewModelTests | testSearch_WithIteratorError_SetsErrorState | 6ms |
| โ | EPUBSearchViewModelTests | testSearch_WithNoResults_SetsEmptyState | 5ms |
| โ | EPUBSearchViewModelTests | testSearch_WithResults_UpdatesResults | 6ms |
| โ | EPUBSearchViewModelTests | testSearch_WithValidQuery_PerformsSearch | 3ms |
| โ | EPUBSearchViewModelTests | testSelectResult_NavigatesToLocation | 2ms |
| โ | EPUBSearchViewModelTests | testSelectResult_WithNilDelegate_DoesNotCrash | 4ms |
| โ | EPUBSearchViewModelTests | testState_IsLoadingState_ReturnsCorrectValues | 10ms |
| โ | EPUBToolbarToggleTests | testDoubleToggle_restoresOriginalState | 2ms |
| โ | EPUBToolbarToggleTests | testDualPath_edgeTap_doesNotToggleToolbar | 2ms |
| โ | EPUBToolbarToggleTests | testFixedDualPath_centerTap_togglesToolbarExactlyOnce | 3ms |
| โ | EPUBToolbarToggleTests | testFixedDualPath_repeatedCenterTaps_alternateToolbarState | 28ms |
| โ | EPUBToolbarToggleTests | testKeyboardNavigable_doubleToggle_restoresState | 2ms |
| โ | EPUBToolbarToggleTests | testKeyboardNavigable_toggleToolbar_changesState | 2ms |
| โ | EPUBToolbarToggleTests | testSingleToggle_changesToolbarVisibility | 2ms |
| โ | EPUBToolbarToggleTests | testTapRegion_classifiesViewportInToThreeZones | 2ms |
| โ | EPUBToolbarToggleTests | testTapRegion_threshold_isInclusiveOnEdgeAndExclusiveAtCenter | 2ms |
| โ | EPUBToolbarToggleTests | testTapRegion_zeroWidthViewport_defaultsToCenter | 1ms |
| โ | EPUBToolbarToggleTests | testUnfixedDualPath_centerTap_doubleTogglesToolbar | 2ms |
| โ | EmailAddressTests | testEmail_withLeadingWhitespace_isTrimmed | 3ms |
| โ | EmailAddressTests | testEmail_withTrailingWhitespace_isTrimmed | 3ms |
| โ | EmailAddressTests | testEquality_differentRawValue_haveDifferentRawValue | 4ms |
| โ | EmailAddressTests | testEquality_sameRawValue_haveSameRawValue | 3ms |
| โ | EmailAddressTests | testInvalidEmail_emptyString | 9ms |
| โ | EmailAddressTests | testInvalidEmail_justText | 4ms |
| โ | EmailAddressTests | testInvalidEmail_multipleAtSigns | 4ms |
| โ | EmailAddressTests | testInvalidEmail_noAtSign | 5ms |
| โ | EmailAddressTests | testInvalidEmail_noDomain | 10ms |
| โ | EmailAddressTests | testInvalidEmail_noLocalPart | 3ms |
| โ | EmailAddressTests | testRawValue_matchesInput | 4ms |
| โ | EmailAddressTests | testValidEmail_simpleAddress | 40ms |
| โ | EmailAddressTests | testValidEmail_withDots | 4ms |
| โ | EmailAddressTests | testValidEmail_withNumbers | 4ms |
| โ | EmailAddressTests | testValidEmail_withPlus | 4ms |
| โ | EmailAddressTests | testValidEmail_withSubdomain | 7ms |
| โ | EpubSampleFactoryTests | testCreateSample_withBookWithoutSample_returnsError | 21ms |
| โ | EpubSampleFactoryTests | testSamplePlayerError_fileSaveFailed_withUnderlyingError | 5ms |
| โ | EpubSampleFactoryTests | testSamplePlayerError_sampleDownloadFailed_withUnderlyingError | 2ms |
| โ | EpubSampleFactoryTests | testSamplePlayerError_threeDistinctCasesWithOptionalPayloads | 7ms |
| โ | EpubSampleFactoryTests | testSampleURLWrappers_polymorphismAllowsCallSiteRouting | 133ms |
| โ | ErrorActivityTrackerTests | testCategoryRawValues | 3ms |
| โ | ErrorActivityTrackerTests | testClear_removesAllEntries | 2ms |
| โ | ErrorActivityTrackerTests | testDisplayString_containsTimestampCategoryAndMessage | 48ms |
| โ | ErrorActivityTrackerTests | testLog_allCategories_areStoredCorrectly | 13ms |
| โ | ErrorActivityTrackerTests | testLog_capturesFileAndLine | 3ms |
| โ | ErrorActivityTrackerTests | testLog_exceedingMaxEntries_trimmsOldest | 3ms |
| โ | ErrorActivityTrackerTests | testLog_multipleEntries_preservesOrder | 2ms |
| โ | ErrorActivityTrackerTests | testLog_singleEntry_appearsInSnapshot | 2ms |
| โ | ErrorActivityTrackerTests | testLog_timestampsAreMonotonicallyIncreasing | 2ms |
| โ | ErrorActivityTrackerTests | testRecentActivities_defaultParameter_returns5Minutes | 2ms |
| โ | ErrorActivityTrackerTests | testRecentActivities_filtersOldEntries | 2ms |
| โ | ErrorActivityTrackerTests | testShortSource_containsFileAndLine | 3ms |
| โ | ErrorDetailTests | testBookInfo_withNilIdentifier_isNil | 2ms |
| โ | ErrorDetailTests | testCapture_populatesBasicFields | 3ms |
| โ | ErrorDetailTests | testCapture_populatesDeviceContext | 4ms |
| โ | ErrorDetailTests | testCapture_withBookInfo_populatesBookContext | 7ms |
| โ | ErrorDetailTests | testCapture_withError_storesUnderlyingError | 3ms |
| โ | ErrorDetailTests | testCapture_withoutBookInfo_bookInfoIsNil | 6ms |
| โ | ErrorDetailTests | testFormattedReport_containsActivityTrailSection | 6ms |
| โ | ErrorDetailTests | testFormattedReport_containsDeviceSection | 3ms |
| โ | ErrorDetailTests | testFormattedReport_containsErrorSection | 3ms |
| โ | ErrorDetailTests | testFormattedReport_containsHeader | 3ms |
| โ | ErrorDetailTests | testFormattedReport_withBookInfo_containsBookSection | 4ms |
| โ | ErrorDetailTests | testFormattedReport_withError_containsErrorDetails | 10ms |
| โ | ErrorDetailViewControllerGapTests | testErrorDetailVC_rendersDeviceContextLines | 295ms |
| โ | ErrorDetailViewControllerGapTests | testErrorDetailVC_rendersFieldsCorrectly | 26ms |
| โ | ErrorDetailViewControllerGapTests | testErrorDetailVC_rendersSectionsCorrectly | 38ms |
| โ | ErrorDetailViewControllerTests | testErrorDetailViewController_Init_setsTitleAndPopulatesTextView | 17ms |
| โ | ErrorDetailViewControllerTests | testErrorDetailViewController_NavigationItems_AreConfigured | 23ms |
| โ | ErrorDetailViewControllerTests | testErrorDetailViewController_RenderContent_ContainsDeviceFields | 15ms |
| โ | ErrorDetailViewControllerTests | testErrorDetailViewController_RenderContent_ContainsErrorTitle | 56ms |
| โ | ErrorDetailViewControllerTests | testErrorDetailViewController_RenderContent_ContainsSection | 17ms |
| โ | ErrorDetailViewControllerTests | testErrorDetailViewController_RenderContent_EmptyTrailShowsMessage | 14ms |
| โ | ErrorDetailViewControllerTests | testErrorDetailViewController_ViewDidLoad_HasTextView | 20ms |
| โ | ErrorDetailViewControllerTests | testErrorDetail_FormattedReport_ContainsTimestamp | 3ms |
| โ | ErrorDetailViewControllerTests | testErrorDetail_FormattedReport_DeviceContextFields | 4ms |
| โ | ErrorDetailViewControllerTests | testErrorDetail_FormattedReport_EmptyActivityTrail | 3ms |
| โ | ErrorDetailViewControllerTests | testErrorDetail_FormattedReport_WithBookInfo_ContainsBookSection | 3ms |
| โ | ErrorDetailViewControllerTests | testErrorDetail_FormattedReport_WithUnderlyingError_ContainsDomain | 12ms |
| โ | ErrorDetailViewControllerTests | testErrorDetail_FormattedReport_includesAllSectionsAndPassesThroughTitleAndMessage | 5ms |
| โ | ErrorDetailViewControllerTests | testErrorDetail_FormattedReport_omitsBookSectionWhenNoBookInfoButRendersRestOfReport | 4ms |
| โ | ErrorLogExporterTests | testErrorLogData_deviceLogsField_acceptsEmptyData | 4ms |
| โ | ErrorLogExporterTests | testErrorLogData_deviceLogsField_acceptsLargeData | 2ms |
| โ | ErrorLogExporterTests | testErrorLogData_initializesWithAllFields | 2ms |
| โ | ErrorLogExporterTests | testErrorLogExporter_sharedInstance_isNotNil | 10ms |
| โ | ErrorLogExporterTests | testPP3651_collectLogsForPreview_containsPatronIDField | 38.11s |
| โ | ExpiredLoanStringsTests | testExpiredLoanMessageWithDate_containsFormatSpecifier | 2ms |
| โ | ExpiredLoanStringsTests | testExpiredLoanMessageWithDate_formatsDateCorrectly | 6ms |
| โ | ExpiredLoanStringsTests | testExpiredLoanMessage_isNonEmpty | 23ms |
| โ | ExpiredLoanStringsTests | testExpiredLoanMessage_mentionsRemoval | 2ms |
| โ | ExpiredLoanStringsTests | testExpiredLoanTitle_isNonEmpty | 6ms |
| โ | FacetEnumTests | testFacet_LocalizedStrings_AreDistinct | 3ms |
| โ | FacetEnumTests | testFacet_LocalizedStrings_AreNotEmpty | 3ms |
| โ | FacetEnumTests | testFacet_LocalizedStrings_MatchStringsFile | 3ms |
| โ | FacetToolbarAccessibilityTests | testFilterButtonLabel_differsBasedOnFilterState | 4ms |
| โ | FacetToolbarAccessibilityTests | testFilterButtonLabel_noFiltersApplied | 4ms |
| โ | FacetToolbarAccessibilityTests | testFilterButtonLabel_withFiltersApplied | 4ms |
| โ | FacetToolbarAccessibilityTests | testSortButtonLabel_hasConsistentFormat | 5ms |
| โ | FacetToolbarAccessibilityTests | testSortButtonLabel_includesSortOption | 4ms |
| โ | FacetViewModelLogoDelegateTests | testAccountScreenURL_WithValidHomePageURL | 4ms |
| โ | FacetViewModelLogoDelegateTests | testActiveSort_DefaultsToFirstFacet_AuthorFirst | 3ms |
| โ | FacetViewModelLogoDelegateTests | testActiveSort_DefaultsToFirstFacet_TitleFirst | 84ms |
| โ | FacetViewModelLogoDelegateTests | testLogoDidUpdate_SetsLogo | 28ms |
| โ | FacetViewModelTests | testActiveSortPublished | 6ms |
| โ | FacetViewModelTests | testChangingSortMultipleTimes | 4ms |
| โ | FacetViewModelTests | testCurrentAccountURLWithNilAccount | 3ms |
| โ | FacetViewModelTests | testEmptyGroupName | 2ms |
| โ | FacetViewModelTests | testFacetLocalizedStrings | 2ms |
| โ | FacetViewModelTests | testFacetRawValues | 3ms |
| โ | FacetViewModelTests | testFacetsArrayPublished | 3ms |
| โ | FacetViewModelTests | testGroupNamePublished | 3ms |
| โ | FacetViewModelTests | testGroupNameWithSpecialCharacters | 41ms |
| โ | FacetViewModelTests | testInitWithAuthorAndTitleFacets | 2ms |
| โ | FacetViewModelTests | testInitWithSingleFacet | 6ms |
| โ | FacetViewModelTests | testInitWithTitleFirst | 3ms |
| โ | FacetViewModelTests | testLogoInitiallyNilWithoutAccount | 3ms |
| โ | FacetViewModelTests | testMultipleSubscribersToActiveSort | 4ms |
| โ | FacetViewModelTests | testSettingSameSortValue | 4ms |
| โ | FacetViewModelTests | testShowAccountScreenInitiallyFalse | 3ms |
| โ | FacetViewModelTests | testShowAccountScreenToggle | 4ms |
| โ | FacetViewModelTests | testUpdatingFacetsDoesNotChangeActiveSort | 2ms |
| โ | FetchManifestWithBearerTokenLCPSafetyTests | testFetchManifestWithBearerToken_receivingLCPLicense_returnsJSON | 158ms |
| โ | FetchManifestWithBearerTokenTests | testEmptyResponseBody_returnsNil | 11ms |
| โ | FetchManifestWithBearerTokenTests | testHTMLResponse_returnsNil | 7ms |
| โ | FetchManifestWithBearerTokenTests | testHTTP401_returnsNil | 10ms |
| โ | FetchManifestWithBearerTokenTests | testHTTP500_returnsNil | 14ms |
| โ | FetchManifestWithBearerTokenTests | testInvalidJSON_returnsNil | 9ms |
| โ | FetchManifestWithBearerTokenTests | testJSONArray_returnsNil | 7ms |
| โ | FetchManifestWithBearerTokenTests | testSuccess_requestsFromCorrectURL | 192ms |
| โ | FetchManifestWithBearerTokenTests | testSuccess_returnsManifestJSON | 34ms |
| โ | FetchManifestWithBearerTokenTests | testSuccess_sendsCorrectBearerTokenHeader | 30ms |
| โ | FetchOpenAccessManifestLCPSafetyTests | testBearerTokenResponseVsLCPLicense_areDistinct | 3ms |
| โ | FetchOpenAccessManifestLCPSafetyTests | testLCPLicenseResponse_notDetectedAsBearerToken_inFetchFlow | 4ms |
| โ | FetchOpenAccessManifestLCPSafetyTests | testLCPLicenseResponse_wouldBeReturnedAsManifest_withoutRouting | 3ms |
| โ | FetchOpenAccessManifestLCPSafetyTests | testManifestVsLCPLicense_structuralDifferences | 6ms |
| โ | FileURLGenerationTests | testFileUrl_contentDirectoryExists | 6ms |
| โ | FileURLGenerationTests | testFileUrl_deterministicForSameIdentifier | 6ms |
| โ | FileURLGenerationTests | testFileUrl_epubBook_hasEpubExtension | 10ms |
| โ | FloatTPPAdditionsTests | testApproxEqual_isSymmetric | 6ms |
| โ | FloatTPPAdditionsTests | testApproxEqual_returnsFalseWhenRightHandSideIsNil | 24ms |
| โ | FloatTPPAdditionsTests | testApproxEqual_returnsTrueOnlyForValuesWithinEpsilon | 2ms |
| โ | FloatTPPAdditionsTests | testRoundTo_formatsAsPercentageWithSpecifiedDecimalPlaces | 4ms |
| โ | FloatTPPAdditionsTests | testRoundTo_preservesTrailingZerosFromFormatSpecifier | 2ms |
| โ | FocusIndicationTests | testAccessibilityElements_areOrderedLogically | 4ms |
| โ | FocusIndicationTests | testCatalogCell_accessibilityLabelBehavior | 4ms |
| โ | FocusIndicationTests | testFocusColor_hasSufficientContrastInDarkMode | 2ms |
| โ | FocusIndicationTests | testFocusColor_hasSufficientContrastInLightMode | 2ms |
| โ | FocusIndicationTests | testFocusableButton_hasFocusEffect | 19ms |
| โ | FocusIndicationTests | testReaderToolbar_buttonsInLogicalOrder | 27ms |
| โ | FocusIndicationTests | testTPPRoundedButton_isAccessible | 2ms |
| โ | FontManagerTests | testAllFontFamiliesHaveCSSValue | 4ms |
| โ | FontManagerTests | testAllFontFamiliesHaveCategory | 4ms |
| โ | FontManagerTests | testAllFontFamiliesHaveDisplayName | 4ms |
| โ | FontManagerTests | testAllFontFamiliesHavePreviewText | 3ms |
| โ | FontManagerTests | testAvailableFamiliesNotEmpty | 2ms |
| โ | FontManagerTests | testFamilyAvailabilityForSystemFonts | 2ms |
| โ | FontManagerTests | testFontFamilyCategorization | 6ms |
| โ | FontManagerTests | testFontFamilyIsCodable | 6ms |
| โ | FontManagerTests | testFontsInCategory | 4ms |
| โ | FontManagerTests | testNonExistentFontIsNotAvailable | 6ms |
| โ | FontManagerTests | testOpenDyslexicCSSContainsFontName | 3ms |
| โ | FontManagerTests | testRegisterCustomFontsDoesNotCrash | 14ms |
| โ | FontManagerTests | testRegisterNonexistentFontReturnsFalse | 3ms |
| โ | FontManagerTests | testSharedInstanceExists | 10ms |
| โ | FontManagerTests | testSwiftUIFontCreation | 5ms |
| โ | FontManagerTests | testSystemFontsAreAvailable | 3ms |
| โ | FontManagerTests | testUIFontCreation | 46ms |
| โ | ForceResetTests | testConsume_clearsTheUserDefaultsKey | 4ms |
| โ | ForceResetTests | testConsume_secondCallAfterSet_returnsFalse | 3ms |
| โ | ForceResetTests | testConsume_supportsMultipleSetThenConsumeCycles | 6ms |
| โ | ForceResetTests | testConsume_whenFlagNeverSet_returnsFalse | 2ms |
| โ | ForceResetTests | testConsume_whenFlagSet_returnsTrueOnce | 5ms |
| โ | ForceResetTests | testRegressionForBug_resetAccountForcesNextOIDCSessionEphemeral_perHelpSpot17716 | 5ms |
| โ | GeneralCacheTests | testCachePolicy_cacheFirst_callsFetcher_onCacheMiss | 5ms |
| โ | GeneralCacheTests | testCachePolicy_cacheFirst_returnsCachedValue_whenPresent | 5ms |
| โ | GeneralCacheTests | testCachePolicy_cacheFirst_usesCache_whenFetcherFails | 6ms |
| โ | GeneralCacheTests | testCachePolicy_noCache_alwaysFetches | 6ms |
| โ | GeneralCacheTests | testCache_withCodableValues | 10ms |
| โ | GeneralCacheTests | testCache_withIntKeys | 3ms |
| โ | GeneralCacheTests | testClearAllCaches_preservesBundleIDDirectory | 104ms |
| โ | GeneralCacheTests | testClearMemory_removesMemoryEntries | 3ms |
| โ | GeneralCacheTests | testClear_removesAllEntries | 8ms |
| โ | GeneralCacheTests | testDiskCache_persistsValue | 8ms |
| โ | GeneralCacheTests | testFileURL_returnsURL | 4ms |
| โ | GeneralCacheTests | testGet_unknownKey_returnsNil | 3ms |
| โ | GeneralCacheTests | testMemoryAndDisk_persistsValue | 8ms |
| โ | GeneralCacheTests | testNoneMode_doesNotStore | 3ms |
| โ | GeneralCacheTests | testRemove_deletesEntry | 2ms |
| โ | GeneralCacheTests | testRemove_nonexistentKey_doesNotCrash | 4ms |
| โ | GeneralCacheTests | testSet_afterExternalDirectoryDeletion_recreatesAndSucceeds | 512ms |
| โ | GeneralCacheTests | testSet_andGet_returnsValue | 3ms |
| โ | GeneralCacheTests | testSet_overwrite_updatesValue | 7ms |
| โ | GeneralCacheTests | testSet_withExpiration_isAvailableBeforeExpiry | 3ms |
| โ | GroupEnumTests | testGroup_UsedAsSection_FacetViewModelGroupNameMatches | 11ms |
| โ | HTMLTextViewTests | testAngleBracketsWithSpaces | 162ms |
| โ | HTMLTextViewTests | testBOMCausesIssuesWithoutSanitization | 60ms |
| โ | HTMLTextViewTests | testBOMCharacter | 30ms |
| โ | HTMLTextViewTests | testBOMCharacterIsRemoved | 33ms |
| โ | HTMLTextViewTests | testControlCharacters | 37ms |
| โ | HTMLTextViewTests | testControlCharactersAreRemoved | 28ms |
| โ | HTMLTextViewTests | testControlCharactersCauseIssuesWithoutSanitization | 58ms |
| โ | HTMLTextViewTests | testDataURL | 327ms |
| โ | HTMLTextViewTests | testDeeplyNestedTags | 78ms |
| โ | HTMLTextViewTests | testDefensiveMeasuresPreventCrashes | 661ms |
| โ | HTMLTextViewTests | testEmptyParagraph | 32ms |
| โ | HTMLTextViewTests | testEmptyString | 3ms |
| โ | HTMLTextViewTests | testExistingDoctypeNotDoubleWrapped | 33ms |
| โ | HTMLTextViewTests | testExistingHTMLTagNotDoubleWrapped | 29ms |
| โ | HTMLTextViewTests | testFallbackStripsHTMLTags | 32ms |
| โ | HTMLTextViewTests | testFastPathLongContent | 10ms |
| โ | HTMLTextViewTests | testFastPathLongContentWithHTML | 21ms |
| โ | HTMLTextViewTests | testFastPathNoHTMLTags | 2ms |
| โ | HTMLTextViewTests | testFormElements | 73ms |
| โ | HTMLTextViewTests | testHTML5Elements | 33ms |
| โ | HTMLTextViewTests | testHTMLDocumentWrapping | 26ms |
| โ | HTMLTextViewTests | testHTMLEntities | 33ms |
| โ | HTMLTextViewTests | testHTMLTagsAreNotDisplayedAsText | 237ms |
| โ | HTMLTextViewTests | testHTMLWithMultipleTags | 34ms |
| โ | HTMLTextViewTests | testInvalidUTF8Sequence | 37ms |
| โ | HTMLTextViewTests | testLeadingWhitespaceIsTrimmed | 35ms |
| โ | HTMLTextViewTests | testMalformedBrokenAttributes | 29ms |
| โ | HTMLTextViewTests | testMalformedEmptyTags | 33ms |
| โ | HTMLTextViewTests | testMalformedNestedTags | 32ms |
| โ | HTMLTextViewTests | testMalformedOnlyClosingTag | 913ms |
| โ | HTMLTextViewTests | testMalformedOnlyOpeningTag | 31ms |
| โ | HTMLTextViewTests | testMalformedRandomAngleBrackets | 52ms |
| โ | HTMLTextViewTests | testMalformedTable | 30ms |
| โ | HTMLTextViewTests | testMalformedUnclosedTags | 30ms |
| โ | HTMLTextViewTests | testMathMLContent | 71ms |
| โ | HTMLTextViewTests | testMixedContentRapidCalls | 2.56s |
| โ | HTMLTextViewTests | testMultipleDoctypes | 23ms |
| โ | HTMLTextViewTests | testMultipleEmptyParagraphs | 37ms |
| โ | HTMLTextViewTests | testNullCharacterInHTML | 145ms |
| โ | HTMLTextViewTests | testNumericEntities | 156ms |
| โ | HTMLTextViewTests | testOPDSSummaryPatterns | 253ms |
| โ | HTMLTextViewTests | testOnlyAngleBracket | 40ms |
| โ | HTMLTextViewTests | testOnlyClosingAngleBracket | 2ms |
| โ | HTMLTextViewTests | testOnlyWhitespaceBeforeTag | 29ms |
| โ | HTMLTextViewTests | testPlainTextWithoutHTML | 2ms |
| โ | HTMLTextViewTests | testProcessingInstruction | 35ms |
| โ | HTMLTextViewTests | testRapidBookDetailViewSimulation | 5.96s |
| โ | HTMLTextViewTests | testRapidSequentialCalls | 4.70s |
| โ | HTMLTextViewTests | testRefugeeGraphicNovelSummaryPattern | 382ms |
| โ | HTMLTextViewTests | testSVGContent | 50ms |
| โ | HTMLTextViewTests | testSafeVsUnsafeParsingComparison | 333ms |
| โ | HTMLTextViewTests | testScriptTag | 33ms |
| โ | HTMLTextViewTests | testSimpleHTMLParagraph | 28ms |
| โ | HTMLTextViewTests | testStartsWithCDATA | 34ms |
| โ | HTMLTextViewTests | testStartsWithClosingTag | 28ms |
| โ | HTMLTextViewTests | testStartsWithComment | 36ms |
| โ | HTMLTextViewTests | testStartsWithDoctype | 27ms |
| โ | HTMLTextViewTests | testStartsWithEndOfDocument | 34ms |
| โ | HTMLTextViewTests | testStartsWithXMLDeclaration | 33ms |
| โ | HTMLTextViewTests | testStyleTag | 35ms |
| โ | HTMLTextViewTests | testSummaryWithLineBreaks | 32ms |
| โ | HTMLTextViewTests | testSummaryWithLinks | 33ms |
| โ | HTMLTextViewTests | testTableHTML | 75ms |
| โ | HTMLTextViewTests | testTypicalBookDescriptionHTML | 42ms |
| โ | HTMLTextViewTests | testTypicalBookSummary | 40ms |
| โ | HTMLTextViewTests | testUnclosedScriptTag | 36ms |
| โ | HTMLTextViewTests | testUnexpectedSummaryStarts | 210ms |
| โ | HTMLTextViewTests | testUnicodeContent | 47ms |
| โ | HTMLTextViewTests | testVeryLongAttribute | 40ms |
| โ | HTMLTextViewTests | testWhitespaceOnly | 2ms |
| โ | HoldNotificationClassificationTests | testIsHoldRelated_returnsTrueForHoldOrReservationKeywords_falseOtherwise | 6ms |
| โ | HoldNotificationClassificationTests | testIsHoldRelated_withTypeHold_returnsTrue | 5ms |
| โ | HoldsBadgeCountTests | testBadgeCount_allReserved_returnsZero | 10ms |
| โ | HoldsBadgeCountTests | testBadgeCount_mixedHolds_countsOnlyReady | 17ms |
| โ | HoldsBadgeCountTests | testBadgeCount_multipleReady_countsAll | 13ms |
| โ | HoldsBadgeCountTests | testBadgeCount_noBooks_returnsZero | 8ms |
| โ | HoldsBadgeCountTests | testBadgeCount_oneReadyBook_returnsOne | 7ms |
| โ | HoldsBadgeCountTests | testBadgeCount_oneReservedBook_returnsZero | 6ms |
| โ | HoldsBadgeCountTests | testBadgeCount_regularBook_notCounted | 5ms |
| โ | HoldsBadgeCountTests | testReadyBookHasReadyAvailability | 7ms |
| โ | HoldsBadgeCountTests | testReservedBookHasReservedAvailability | 5ms |
| โ | HoldsBookViewModelTests | testBookPropertyReturnsCorrectBook | 6ms |
| โ | HoldsBookViewModelTests | testHoldReady_DistinguishesFromReserved | 7ms |
| โ | HoldsBookViewModelTests | testHoldReady_IdentifiesReadyHolds | 9ms |
| โ | HoldsBookViewModelTests | testIdMatchesBookIdentifier | 4ms |
| โ | HoldsBookViewModelTests | testIsReservedForHoldBook | 7ms |
| โ | HoldsBookViewModelTests | testIsReservedForNonReservedBook | 34ms |
| โ | HoldsBookViewModelTests | testIsReservedForReadyBook | 8ms |
| โ | HoldsBookViewModelTests | testIsReserved_WithLimitedAvailability_ReturnsFalse | 9ms |
| โ | HoldsReducerTests | testDismissSyncError_clearsTheErrorMessage | 25ms |
| โ | HoldsReducerTests | testRegistryChanged_partitionsBooksByReservedStatus | 10ms |
| โ | HoldsReducerTests | testRegistryChanged_withActiveSearch_leavesVisibleBooksAlone | 9ms |
| โ | HoldsReducerTests | testSearchQueryChanged_nonEmpty_returnsFilterEffectThatYieldsFilterCompleted | 18ms |
| โ | HoldsReducerTests | testSearchQueryChanged_toEmpty_restoresAllHeldBooks | 6ms |
| โ | HoldsReducerTests | testSyncBegan_setsLoadingTrueAndClearsPreviousError | 2ms |
| โ | HoldsReducerTests | testSyncEnded_setsLoadingFalse | 2ms |
| โ | HoldsReducerTests | testSyncFailed_whenAnonymous_suppressesErrorBanner | 2ms |
| โ | HoldsReducerTests | testSyncFailed_whenAuthenticatedWithNoCacheAndNoMessage_fallsBackToGenericText | 3ms |
| โ | HoldsReducerTests | testSyncFailed_whenAuthenticatedWithNoCache_surfacesServerDetailMessage | 24ms |
| โ | HoldsReducerTests | testSyncFailed_whenCachedDataVisible_suppressesErrorBanner | 5ms |
| โ | HoldsSyncFailureTests | testDismissSyncError_ClearsError | 9ms |
| โ | HoldsSyncFailureTests | testSyncBegan_ClearsPreviousSyncError | 10ms |
| โ | HoldsSyncFailureTests | testSyncFailure_AnonymousUser_SuppressesErrorBanner | 510ms |
| โ | HoldsSyncFailureTests | testSyncFailure_AuthenticatedUser_ShowsErrorBanner | 12ms |
| โ | HoldsSyncFailureTests | testSyncFailure_SetsSyncError | 12ms |
| โ | HoldsSyncFailureTests | testSyncFailure_StaleDataPersists_ErrorSuppressedWhenCachedDataExists | 539ms |
| โ | HoldsSyncFailureTests | testSyncFailure_StopsLoading | 17ms |
| โ | HoldsSyncFailureTests | testSyncFailure_WithProblemDocument_ShowsServerMessage | 13ms |
| โ | HoldsSyncFailureTests | testSyncFailure_WithTitleOnly_UsesTitle | 123ms |
| โ | HoldsSyncFailureTests | testSyncFailure_WithoutProblemDocument_ShowsGenericMessage | 9ms |
| โ | HoldsViewModelTests | testFilterBooksWithEmptyQueryReturnsAll | 12ms |
| โ | HoldsViewModelTests | testFilterBooksWithQuery | 90ms |
| โ | HoldsViewModelTests | testFilterBooks_CaseInsensitive | 10ms |
| โ | HoldsViewModelTests | testFilterBooks_WithAuthorMatch_ReturnsMatchingBooks | 17ms |
| โ | HoldsViewModelTests | testFilterBooks_WithTitleMatch_ReturnsMatchingBooks | 15ms |
| โ | HoldsViewModelTests | testInitialState_EmptyBookLists | 12ms |
| โ | HoldsViewModelTests | testInitialState_HasCorrectDefaults | 4ms |
| โ | HoldsViewModelTests | testIsLoading_PublishesChanges | 8ms |
| โ | HoldsViewModelTests | testLoadHolds_WithEmptyResult_SetsEmptyState | 3ms |
| โ | HoldsViewModelTests | testLoadHolds_WithSuccess_UpdatesHolds | 12ms |
| โ | HoldsViewModelTests | testOpenSearchDescriptionHumanReadableDescription | 35ms |
| โ | HoldsViewModelTests | testOpenSearchDescription_IncludesAllBooks | 10ms |
| โ | HoldsViewModelTests | testRegistryDidChange_ReloadsData | 369ms |
| โ | HoldsViewModelTests | testReloadData_CallsMethod | 7ms |
| โ | HoldsViewModelTests | testReloadData_HandlesMultipleBooks | 18ms |
| โ | HoldsViewModelTests | testReloadData_SeparatesReservedAndReadyBooks | 17ms |
| โ | HoldsViewModelTests | testSearchQueryUpdate | 4ms |
| โ | HoldsViewModelTests | testSelectNewLibraryToggle | 3ms |
| โ | HoldsViewModelTests | testShowLibraryAccountViewToggle | 3ms |
| โ | HoldsViewModelTests | testShowSearchSheetToggle | 3ms |
| โ | HoldsViewModelTests | testSyncBeganSetsLoadingTrue | 9ms |
| โ | HoldsViewModelTests | testSyncEndedSetsLoadingFalse | 742ms |
| โ | HoldsViewModelTests | testVisibleBooks_PublishesChanges | 314ms |
| โ | ImageCacheTypeTests | testImageCacheType_defaultSetUses7DayTTL | 73ms |
| โ | IntExtensionsTests | testOrdinal_FourAndAbove_ReturnsTh | 5ms |
| โ | IntExtensionsTests | testOrdinal_TwentyFirstPattern_ReturnsCorrectSuffix | 6ms |
| โ | IntExtensionsTests | testOrdinal_Zero_ReturnsZeroth | 4ms |
| โ | IntExtensionsTests | testOrdinal_followsEnglishOrdinalRules_includingTeenExceptions | 17ms |
| โ | KeyboardNavigationFKATests | testFKA_escapeKey_isStillConsumed | 22ms |
| โ | KeyboardNavigationFKATests | testFKA_leftArrow_isNotConsumed | 3ms |
| โ | KeyboardNavigationFKATests | testFKA_pageDown_isStillConsumed | 4ms |
| โ | KeyboardNavigationFKATests | testFKA_pageUp_isStillConsumed | 5ms |
| โ | KeyboardNavigationFKATests | testFKA_rightArrow_isNotConsumed | 3ms |
| โ | KeyboardNavigationFKATests | testFKA_spaceKey_isStillConsumed | 7ms |
| โ | KeyboardNavigationFKATests | testHandleCommand_goBackward_navigatesLeft | 3ms |
| โ | KeyboardNavigationFKATests | testHandleCommand_goForward_navigatesRight | 3ms |
| โ | KeyboardNavigationFKATests | testHandleCommand_toggleUI_togglesToolbar | 3ms |
| โ | KeyboardNavigationFKATests | testHandleKeyEvent_whenNavigableIsNil_returnsFalse | 3ms |
| โ | KeyboardNavigationFKATests | testNoFKA_rightArrow_isConsumed | 12ms |
| โ | KeyboardNavigationHandlerTests | testArrowKeyRelease_doesNotTurnPage | 19ms |
| โ | KeyboardNavigationHandlerTests | testArrowKey_withCommandModifier_doesNotTurnPage | 95ms |
| โ | KeyboardNavigationHandlerTests | testArrowKey_withShiftModifier_doesNotTurnPage | 6ms |
| โ | KeyboardNavigationHandlerTests | testEscapeKeyRelease_doesNotToggleToolbar | 24ms |
| โ | KeyboardNavigationHandlerTests | testEscapeKey_whenToolbarHidden_togglesToolbar | 2ms |
| โ | KeyboardNavigationHandlerTests | testEscapeKey_whenToolbarVisible_togglesToolbar | 3ms |
| โ | KeyboardNavigationHandlerTests | testEscapeKey_withModifier_doesNotToggleToolbar | 3ms |
| โ | KeyboardNavigationHandlerTests | testLeftArrow_whenToolbarHidden_goesToPreviousPage | 5ms |
| โ | KeyboardNavigationHandlerTests | testLeftArrow_whenToolbarVisible_doesNotChangePage | 2ms |
| โ | KeyboardNavigationHandlerTests | testPageDown_whenToolbarHidden_advancesPage | 5ms |
| โ | KeyboardNavigationHandlerTests | testPageUp_whenToolbarHidden_goesBackward | 2ms |
| โ | KeyboardNavigationHandlerTests | testRightArrow_whenToolbarHidden_advancesToNextPage | 2ms |
| โ | KeyboardNavigationHandlerTests | testRightArrow_whenToolbarVisible_doesNotChangePage | 19ms |
| โ | KeyboardNavigationHandlerTests | testSpaceKey_whenToolbarHidden_advancesPage | 2ms |
| โ | KeyboardNavigationHandlerTests | testSpaceKey_whenToolbarVisible_doesNotAdvancePage | 3ms |
| โ | KeyboardNavigationHandlerTests | testUnhandledKey_isNotConsumed | 16ms |
| โ | KeyboardVoiceOverTests | testEscapeKey_respectsVoiceOverToolbarBehavior | 11ms |
| โ | KeyboardVoiceOverTests | testKeyboardHandler_doesNotBlockAccessibilityNotifications | 9ms |
| โ | KeyboardVoiceOverTests | testKeyboardNavigation_worksRegardlessOfVoiceOverState | 6ms |
| โ | KeyboardVoiceOverTests | testReaderViewController_voiceOverObserverExists | 15ms |
| โ | KeyboardVoiceOverTests | testTouchNavigation_notAffectedByKeyboardSupport | 100ms |
| โ | LCPAudiobookURLSchemeTests | testHTTPURLConversion_toReadiumLCPScheme | 6ms |
| โ | LCPAudiobookURLSchemeTests | testReadiumLCPScheme_isCorrect | 3ms |
| โ | LCPAudiobookURLSchemeTests | testReadiumLCPURL_preservesPath | 2ms |
| โ | LCPAudiobookURLSchemeTests | testReadiumLCPURL_preservesQueryParameters | 186ms |
| โ | LCPAudiobooksTests | testCachedContentDictionary_initiallyReturnsNil | 5ms |
| โ | LCPAudiobooksTests | testCanOpenBook_withEpub_returnsFalse | 9ms |
| โ | LCPAudiobooksTests | testCanOpenBook_withLCPAudiobook_returnsTrue | 7ms |
| โ | LCPAudiobooksTests | testCanOpenBook_withNonLCPAudiobook_returnsFalse | 5ms |
| โ | LCPAudiobooksTests | testCanOpenBook_withPDF_returnsFalse | 4ms |
| โ | LCPAudiobooksTests | testCancelPrefetch_doesNotCrash | 4ms |
| โ | LCPAudiobooksTests | testCancelPrefetch_withoutStart_doesNotCrash | 5ms |
| โ | LCPAudiobooksTests | testContentDictionary_afterRelease_failsFast | 5ms |
| โ | LCPAudiobooksTests | testDecrypt_afterRelease_failsFast | 5ms |
| โ | LCPAudiobooksTests | testGetPublication_initiallyReturnsNil | 3ms |
| โ | LCPAudiobooksTests | testInit_withLcplLicenseURL_setsLicenseUrl | 4ms |
| โ | LCPAudiobooksTests | testInit_withNilURL_returnsNil | 5ms |
| โ | LCPAudiobooksTests | testInit_withSeparateLicenseURL_acceptsBothURLs | 3ms |
| โ | LCPAudiobooksTests | testInit_withValidFileURL_createsInstance | 3ms |
| โ | LCPAudiobooksTests | testInit_withValidHTTPURL_createsInstance | 5ms |
| โ | LCPAudiobooksTests | testReleaseResources_canBeCalledMultipleTimes | 3ms |
| โ | LCPAudiobooksTests | testReleaseResources_cancelsPrefetch | 2ms |
| โ | LCPAudiobooksTests | testReleaseResources_clearsPublication | 35ms |
| โ | LCPAudiobooksTests | testStartPrefetch_afterRelease_isNoOp | 4ms |
| โ | LCPAudiobooksTests | testStartPrefetch_doesNotCrash | 5ms |
| โ | LCPAudiobooksTests | testSupportsStreaming_returnsTrue | 3ms |
| โ | LCPFulfillmentHandlerTests | testFulfill_audiobook_marksDownloadSuccessfulEvenBeforeCompletion | 16ms |
| โ | LCPFulfillmentHandlerTests | testFulfill_completionWithError_publishesFulfilmentErrorAlert | 91ms |
| โ | LCPFulfillmentHandlerTests | testFulfill_completionWithoutLocalURL_publishesNoLocalURLAlert | 36ms |
| โ | LCPFulfillmentHandlerTests | testFulfill_invokesLCPServiceWithRenamedLicenseURL | 10ms |
| โ | LCPFulfillmentHandlerTests | testFulfill_storesReturnedDownloadTaskInStateManager | 200ms |
| โ | LCPLibraryServiceTests | testCanFulfill_withAudiobookExtension_returnsFalse | 2ms |
| โ | LCPLibraryServiceTests | testCanFulfill_withEpubExtension_returnsFalse | 5ms |
| โ | LCPLibraryServiceTests | testCanFulfill_withLcpaExtension_returnsFalse | 2ms |
| โ | LCPLibraryServiceTests | testCanFulfill_withLcplExtension_returnsTrue | 2ms |
| โ | LCPLibraryServiceTests | testCanFulfill_withMixedCaseLcplExtension_returnsTrue | 2ms |
| โ | LCPLibraryServiceTests | testCanFulfill_withNoExtension_returnsFalse | 2ms |
| โ | LCPLibraryServiceTests | testCanFulfill_withPdfExtension_returnsFalse | 2ms |
| โ | LCPLibraryServiceTests | testCanFulfill_withUppercaseLcplExtension_returnsTrue | 12ms |
| โ | LCPLibraryServiceTests | testContentProtection_isAvailable | 32ms |
| โ | LCPLibraryServiceTests | testContentProtection_multipleAccess_returnsValue | 6ms |
| โ | LCPLibraryServiceTests | testDecrypt_withEmptyData_returnsNil | 2ms |
| โ | LCPLibraryServiceTests | testDecrypt_withInvalidData_returnsNil | 6ms |
| โ | LCPLibraryServiceTests | testDecrypt_withSmallData_returnsNil | 2ms |
| โ | LCPLibraryServiceTests | testFulfillAsync_withEmptyPath_throwsError | 39ms |
| โ | LCPLibraryServiceTests | testFulfillAsync_withInvalidURL_throwsError | 10ms |
| โ | LCPLibraryServiceTests | testFulfill_reportsProgress | 6ms |
| โ | LCPLibraryServiceTests | testFulfill_withNonExistentFile_callsCompletionWithError | 14ms |
| โ | LCPLibraryServiceTests | testInit_createsInstance | 59ms |
| โ | LCPLibraryServiceTests | testInit_multipleInstances_areIndependent | 2ms |
| โ | LCPLibraryServiceTests | testLicenseExtension_isLcpl | 2ms |
| โ | LCPLicenseDocumentDetectionTests | testLCPLicenseDocument_doesNotContainManifestKeys | 5ms |
| โ | LCPLicenseDocumentDetectionTests | testLCPLicenseDocument_isNotDetectedAsBearerToken | 35ms |
| โ | LCPLicenseDocumentDetectionTests | testLCPLicenseDocument_isValidJSON | 6ms |
| โ | LCPLicenseDocumentDetectionTests | testLCPLicenseDocument_parsedAsManifest_lacksReadingOrder | 4ms |
| โ | LCPLicenseDocumentDetectionTests | testLCPLicenseDocument_withMinimalFields_isNotBearerToken | 28ms |
| โ | LCPLicenseFilePathTests | testLCPLicenseExtension_isLcpl | 4ms |
| โ | LCPLicenseFilePathTests | testLCPLicensePath_derivedFromContentPath | 20ms |
| โ | LCPLicenseFilePathTests | testLCPLicensePath_everyContentExtensionProducesLcplSibling | 3ms |
| โ | LCPOrphanedDownloadRegistryTests | testBookState_downloadSuccessful_withExistingFile_staysDownloadSuccessful | 8ms |
| โ | LCPOrphanedDownloadRegistryTests | testBookState_downloadSuccessful_withMissingFile_transitionsToDownloadNeeded | 9ms |
| โ | LCPOrphanedDownloadRegistryTests | testLCPAudiobook_withBothFiles_remainsDownloadSuccessful | 24ms |
| โ | LCPOrphanedDownloadRegistryTests | testLCPAudiobook_withOnlyLicense_shouldBeConsideredMissing | 6ms |
| โ | LCPPDFManifestTests | testPDFManifest_decodesValidJSON | 4ms |
| โ | LCPPDFManifestTests | testPDFManifest_withEmptyReadingOrder_decodesSuccessfully | 7ms |
| โ | LCPPDFManifestTests | testPDFManifest_withMissingReadingOrder_throwsError | 5ms |
| โ | LCPPDFsTests | testCanOpenBook_withEpub_returnsFalse | 4ms |
| โ | LCPPDFsTests | testCanOpenBook_withLCPAudiobook_returnsFalse | 8ms |
| โ | LCPPDFsTests | testCanOpenBook_withNonLCPPdf_returnsFalse | 5ms |
| โ | LCPPDFsTests | testDecryptData_usesCache | 209ms |
| โ | LCPPDFsTests | testDecryptData_withEmptyData_returnsNil | 52ms |
| โ | LCPPDFsTests | testDecryptData_withStartEqualToEnd_returnsEmptyData | 5ms |
| โ | LCPPDFsTests | testDeletePdfContent_withExistingFile_removesFile | 3ms |
| โ | LCPPDFsTests | testDeletePdfContent_withNonExistentFile_doesNotThrow | 28ms |
| โ | LCPPDFsTests | testInit_withValidURL_createsInstance | 5ms |
| โ | LCPPDFsTests | testTemporaryUrlForPDF_appendsPdfExtension | 2ms |
| โ | LCPPDFsTests | testTemporaryUrlForPDF_differentSourcesProduceDifferentURLs | 2ms |
| โ | LCPPDFsTests | testTemporaryUrlForPDF_sameSourceProducesSameURL | 171ms |
| โ | LCPPDFsTests | testTemporaryUrlForPDF_usesTemporaryDirectory | 2ms |
| โ | LCPSessionIdentifierTests | testSessionIdentifier_isDifferentForDifferentURLs | 11ms |
| โ | LCPSessionIdentifierTests | testSessionIdentifier_isSameAcrossMultipleComputations | 6ms |
| โ | LCPSessionIdentifierTests | testURLHashValue_isNotStableAcrossComputations | 4ms |
| โ | LatestAudiobookLocationTests | testLatestLocation_defaultNil | 10ms |
| โ | LatestAudiobookLocationTests | testLatestLocation_setAndRead | 4ms |
| โ | LatestAudiobookLocationTests | testLatestLocation_threadSafe | 58ms |
| โ | LibraryCatalogMergerTests | testMerge_EmptyExistingWithNewPublications_AddsAll | 3ms |
| โ | LibraryCatalogMergerTests | testMerge_FullCrawl_RemovesAbsentPublications | 2ms |
| โ | LibraryCatalogMergerTests | testMerge_FullCrawl_ReplacesAllWithUpdates | 3ms |
| โ | LibraryCatalogMergerTests | testMerge_NewPublication_AppendsToList | 2ms |
| โ | LibraryCatalogMergerTests | testMerge_PreservesUnmodifiedPublications_InIncrementalMode | 2ms |
| โ | LibraryCatalogMergerTests | testMerge_UpdatesExistingByID_ReplacesOldPublication | 2ms |
| โ | LibraryCatalogMergerTests | testMerge_uuidsWithChangedLogos_includesAllTransitionsAndExcludesUnchangedURL | 2ms |
| โ | LibraryCatalogMergerTests | testSerializeAsCatalogsFeed_PreservesPublicationIDs | 2ms |
| โ | LibraryCatalogMergerTests | testSerializeAsCatalogsFeed_ProducesValidJSON | 4ms |
| โ | LibraryRegistryCrawlerTests | testCrawl_HandlesNetworkFailure_ReturnsFailure | 5ms |
| โ | LibraryRegistryCrawlerTests | testCrawl_ReportsProgress | 14ms |
| โ | LibraryRegistryCrawlerTests | testCrawl_SavesCrawlState_OnSuccess | 6ms |
| โ | LibraryRegistryCrawlerTests | testCrawl_WhenFacetNotActive_StoresFacetURLForFutureUse | 4ms |
| โ | LibraryRegistryCrawlerTests | testFirstLaunch_PerformsFullCrawl_PaginatesAllPages | 10ms |
| โ | LibraryRegistryCrawlerTests | testFirstLaunch_PerformsFullCrawl_SinglePage | 11ms |
| โ | LibraryRegistryCrawlerTests | testFullCrawl_WhenNoOrderModifiedFacet_FetchesAllPages | 6ms |
| โ | LibraryRegistryCrawlerTests | testIncrementalCrawl_StopsAtLastCrawlTimestamp | 19ms |
| โ | LicensesServiceTests | testAcquirePublication_WithInvalidLCPLFile_CompletesWithError | 7ms |
| โ | LicensesServiceTests | testAcquirePublication_WithNonexistentFile_CompletesWithError | 11ms |
| โ | LicensesServiceTests | testLicensesServiceError_licenseError_exposesMessageViaDescriptionVerbatim | 4ms |
| โ | LicensesServiceTests | testPathInZip_mapsEveryContentTypeToTheCorrectPath | 3ms |
| โ | LiveCrawlableParsingTest | testCrawlableURL_FromBetaURL | 9ms |
| โ | LiveCrawlableParsingTest | testCrawlableURL_FromProdURL | 29ms |
| โ | LiveCrawlableParsingTest | testFullCrawl_LiveEndpoint | 9ms |
| โ | LiveCrawlableParsingTest | testParseLiveCrawlableFeed | 7ms |
| โ | LocalBookContentServiceTests | testDeleteForBook_accountOverride_passedThroughToBookFileManager | 20ms |
| โ | LocalBookContentServiceTests | testDeleteForBook_epub_missingFile_logsButDoesNotThrow | 6ms |
| โ | LocalBookContentServiceTests | testDeleteForBook_epub_removesFileWhenPresent | 13ms |
| โ | LocalBookContentServiceTests | testDeleteForBook_pdf_removesContentFile | 10ms |
| โ | LocalBookContentServiceTests | testDeleteForBook_unresolvableFileURL_doesNotCrashAndLogsWarning | 8ms |
| โ | LocalBookContentServiceTests | testDeleteForIdentifier_lookUpsBookInRegistryAndDelegates | 8ms |
| โ | LocalBookContentServiceTests | testDeleteForIdentifier_unknownIdentifier_logsAndDoesNothing | 4ms |
| โ | LogTests | testDateFormatter_isConfigured | 2ms |
| โ | LogTests | testDebug_doesNotCrash | 1ms |
| โ | LogTests | testDebug_doesNotPersistToLogger | 113ms |
| โ | LogTests | testError_doesNotCrash | 2ms |
| โ | LogTests | testError_persistsToLogger | 33ms |
| โ | LogTests | testFault_doesNotCrash | 6ms |
| โ | LogTests | testFault_persistsToLogger | 34ms |
| โ | LogTests | testInfo_doesNotCrash | 3ms |
| โ | LogTests | testInfo_doesNotPersistToLogger | 142ms |
| โ | LogTests | testLog_objcCompatibility_doesNotCrash | 4ms |
| โ | LogTests | testLog_withFilePathTag_trimsProperly | 32ms |
| โ | LogTests | testSubsystem_isCorrectValue | 2ms |
| โ | LogTests | testSubsystem_isNotEmpty | 2ms |
| โ | LogTests | testWarn_doesNotCrash | 3ms |
| โ | LoginKeyboardTests | testInit_WithCaseSensitiveString_ReturnsNil | 13ms |
| โ | LoginKeyboardTests | testInit_WithDefaultString_ReturnsStandard | 2ms |
| โ | LoginKeyboardTests | testInit_WithEmailString_ReturnsEmail | 3ms |
| โ | LoginKeyboardTests | testInit_WithEmptyString_ReturnsNil | 3ms |
| โ | LoginKeyboardTests | testInit_WithInvalidString_ReturnsNil | 13ms |
| โ | LoginKeyboardTests | testInit_WithNilString_ReturnsNil | 2ms |
| โ | LoginKeyboardTests | testInit_WithNoInputString_ReturnsNone | 4ms |
| โ | LoginKeyboardTests | testInit_WithNumberPadString_ReturnsNumeric | 3ms |
| โ | MainActorHelpersTests | testBarrierExecutor_Modify_TransformsValue | 3ms |
| โ | MainActorHelpersTests | testBarrierExecutor_ReadInitialValue | 2ms |
| โ | MainActorHelpersTests | testBarrierExecutor_Write_UpdatesValue | 2ms |
| โ | MainActorHelpersTests | testDebouncer_Cancel_PreventsExecution | 208ms |
| โ | MainActorHelpersTests | testDebouncer_OnlExecutesLastCall | 166ms |
| โ | MainActorHelpersTests | testOnceExecutor_ExecutesOnlyOnce | 6ms |
| โ | MainActorHelpersTests | testOnceExecutor_Reset_AllowsReExecution | 5ms |
| โ | MainActorHelpersTests | testRunParallelFireAndForget_EmptyArray_CompletesImmediately | 2ms |
| โ | MainActorHelpersTests | testRunParallelFireAndForget_ExecutesAllTasks | 6ms |
| โ | MainActorHelpersTests | testRunParallel_EmptyArray_ReturnsEmptyArray | 3ms |
| โ | MainActorHelpersTests | testRunParallel_MultipleItems_ReturnsInOriginalOrder | 64ms |
| โ | MainActorHelpersTests | testRunParallel_SingleItem_ReturnsSingleResult | 3ms |
| โ | MainActorHelpersTests | testRunParallel_ThrowingTask_PropagatesError | 5ms |
| โ | MainActorHelpersTests | testSerialExecutor_ExecutesInOrder | 3ms |
| โ | MainActorHelpersTests | testSerialExecutor_WaitForAll_WaitsForCompletion | 56ms |
| โ | MainActorHelpersTests | testTaskSleepSeconds_CompletesAfterDuration | 58ms |
| โ | MainActorHelpersTests | testThrottler_AfterInterval_ExecutesAgain | 209ms |
| โ | MainActorHelpersTests | testThrottler_FirstCall_ExecutesImmediately | 4ms |
| โ | MainActorHelpersTests | testThrottler_RapidCalls_SkipsSubsequent | 6ms |
| โ | MainActorHelpersTests | testWithAsyncCallback_ConvertsCallbackToAsync | 5ms |
| โ | MainActorHelpersTests | testWithAsyncThrowingCallback_Failure_ThrowsError | 8ms |
| โ | MainActorHelpersTests | testWithAsyncThrowingCallback_Success_ReturnsValue | 2ms |
| โ | MappedCatalogBridgeTests | testToCatalogContent_EmptyFeed | 7ms |
| โ | MappedCatalogBridgeTests | testToCatalogContent_GroupedFeed | 45ms |
| โ | MappedCatalogBridgeTests | testToCatalogContent_UngroupedFeed | 9ms |
| โ | MappedCatalogModelTests | testEdgeCase_EmptyTitle | 3ms |
| โ | MappedCatalogModelTests | testEdgeCase_LongTitle | 2ms |
| โ | MappedCatalogModelTests | testEdgeCase_ManyLanes | 2ms |
| โ | MappedCatalogModelTests | testEdgeCase_ManyUngroupedBooks | 349ms |
| โ | MappedCatalogModelTests | testInit_CompleteFeedWithAllComponents | 4ms |
| โ | MappedCatalogModelTests | testInit_EmptyFeed | 6ms |
| โ | MappedCatalogModelTests | testInit_GroupedFeedWithLanes | 6ms |
| โ | MappedCatalogModelTests | testInit_StoresAllProperties | 4ms |
| โ | MappedCatalogModelTests | testInit_UngroupedFeedWithBooks | 8ms |
| โ | MappedCatalogModelTests | testInit_WithEntryPoints | 45ms |
| โ | MappedCatalogModelTests | testInit_WithFacetGroups | 4ms |
| โ | MockBackendExpiredCredentialsTests | testBorrow_Returns403 | 10ms |
| โ | MockBackendExpiredCredentialsTests | testCatalog_StillReturns200 | 26ms |
| โ | MockBackendExpiredCredentialsTests | testLoans_Returns403WithProblemDocument | 11ms |
| โ | MockBackendIntegrationTests | testBorrow_Returns201 | 579ms |
| โ | MockBackendIntegrationTests | testFetchAnnotations_ReturnsAnnotations | 73ms |
| โ | MockBackendIntegrationTests | testFetchAuthDocument_ParsesCorrectly | 104ms |
| โ | MockBackendIntegrationTests | testFetchCatalog_ReturnsParsedFeed | 66ms |
| โ | MockBackendLoanLimitTests | testBorrow_Returns403WithLoanLimitProblem | 34ms |
| โ | MockBackendLoanLimitTests | testCatalogBrowsing_StillWorks | 23ms |
| โ | MockBackendRouteMatchingTests | testRouteMatching_CatchAll | 3ms |
| โ | MockBackendRouteMatchingTests | testRouteMatching_ExactPath | 2ms |
| โ | MockBackendRouteMatchingTests | testRouteMatching_MethodFilter | 4ms |
| โ | MockBackendRouteMatchingTests | testScenarioLoading | 13ms |
| โ | MockBackendServerDownTests | testAllEndpoints_Return502 | 35ms |
| โ | MyBooksDownloadCenterAdeptGapTests | testDownloadCenter_bookStateTransitions_downloadSuccess | 38ms |
| โ | MyBooksDownloadCenterAdeptGapTests | testDownloadCenter_bookStateTransitions_forAdobeAdeptBooks | 6ms |
| โ | MyBooksDownloadCenterAdeptGapTests | testDownloadCenter_downloadProgressPublisher_exists | 4ms |
| โ | MyBooksDownloadCenterEvictionTests | testEviction_multipleBooksOverBudget_evictsLRUFirstAndFlipsAllAffected | 62ms |
| โ | MyBooksDownloadCenterEvictionTests | testEviction_preservesLcpAudiobook_butEvictsEpubCompanion | 17ms |
| โ | MyBooksDownloadCenterEvictionTests | testEviction_preservesLcpLicense | 32ms |
| โ | MyBooksDownloadCenterEvictionTests | testEviction_whenAddingAnticipatedBytesPushesOverBudget_makesRoom | 10ms |
| โ | MyBooksDownloadCenterEvictionTests | testEviction_whenOverBudget_deletesFileAndFlipsRegistryToDownloadNeeded | 11ms |
| โ | MyBooksDownloadCenterEvictionTests | testEviction_whenUnderBudget_doesNothing | 8ms |
| โ | MyBooksDownloadCenterEvictionTests | testEviction_withOrphanFile_deletesButSkipsRegistryMutation | 11ms |
| โ | MyBooksDownloadCenterOfflineTests | testInit_WithReachabilityConnected_DoesNotFailExistingDownloads | 159ms |
| โ | MyBooksDownloadCenterOfflineTests | testReachabilityDrop_DuringActiveDownload_FailsBookWithinDeterministicWindow | 40ms |
| โ | MyBooksDownloadCenterOfflineTests | testReachabilityDrop_DuringMultipleActiveDownloads_FailsEach | 59ms |
| โ | MyBooksDownloadCenterOfflineTests | testReachabilityDrop_WithNoActiveDownloads_IsNoOp | 60ms |
| โ | MyBooksDownloadCenterOfflineTests | testStartDownload_WhenOffline_FailsImmediatelyWithoutSpawningTask | 17ms |
| โ | MyBooksDownloadSessionInvalidationTests | testDownloadTask_onInvalidatedSession_isSafelyCatchable | 19ms |
| โ | MyBooksDownloadSessionInvalidationTests | testDownloadTask_onLiveSession_returnsTaskWithoutException | 5ms |
| โ | MyBooksDownloadSessionInvalidationTests | testExceptionCatcher_returnsNSException_insteadOfPropagating | 5ms |
| โ | MyBooksSimplifiedBearerTokenTests | testFulfillURL_canBeSetAfterInit | 5ms |
| โ | MyBooksSimplifiedBearerTokenTests | testFulfillURL_canBeSetViaInit | 3ms |
| โ | MyBooksSimplifiedBearerTokenTests | testFulfillURL_defaultsToNil | 4ms |
| โ | MyBooksSimplifiedBearerTokenTests | testIsExpired_exactlyNow_returnsTrue | 23ms |
| โ | MyBooksSimplifiedBearerTokenTests | testIsExpired_futureExpiration_returnsFalse | 4ms |
| โ | MyBooksSimplifiedBearerTokenTests | testIsExpired_pastExpiration_returnsTrue | 4ms |
| โ | MyBooksSimplifiedBearerTokenTests | testParsing_acceptsExpirationKey | 3ms |
| โ | MyBooksSimplifiedBearerTokenTests | testParsing_invalidLocationURL_returnsNil | 4ms |
| โ | MyBooksSimplifiedBearerTokenTests | testParsing_missingAccessToken_returnsNil | 4ms |
| โ | MyBooksSimplifiedBearerTokenTests | testParsing_missingExpiration_returnsNil | 5ms |
| โ | MyBooksSimplifiedBearerTokenTests | testParsing_missingLocation_returnsNil | 5ms |
| โ | MyBooksSimplifiedBearerTokenTests | testParsing_negativeExpiration_usesDistantFuture | 5ms |
| โ | MyBooksSimplifiedBearerTokenTests | testParsing_validDictionary_createsToken | 9ms |
| โ | MyBooksSimplifiedBearerTokenTests | testParsing_zeroExpiration_usesDistantFuture | 4ms |
| โ | MyBooksSimplifiedBearerTokenTests | testRefreshToken_invalidJSON_returnsNil | 8ms |
| โ | MyBooksSimplifiedBearerTokenTests | testRefreshToken_serverError_returnsNil | 8ms |
| โ | MyBooksSimplifiedBearerTokenTests | testRefreshToken_success_returnsNewToken | 7ms |
| โ | MyBooksViewModelBooksPublisherTests | testBooksPublisher_EmitsInitialValue | 7ms |
| โ | MyBooksViewModelBooksPublisherTests | testBooksPublisher_EmitsOnFilter | 18ms |
| โ | MyBooksViewModelBooksPublisherTests | testBooksPublisher_EmitsRestoredCountAfterReset | 19ms |
| โ | MyBooksViewModelConcurrencyTests | testFilterBooks_MultipleCalls_EachProducesCorrectResult | 23ms |
| โ | MyBooksViewModelConcurrencyTests | testFilterBooks_RapidChanges_SettlesOnLastQuery | 17ms |
| โ | MyBooksViewModelConcurrencyTests | testLoadData_AfterInit_IsNotLoadingAndHasBooks | 9ms |
| โ | MyBooksViewModelConcurrencyTests | testReloadData_WhenRegistryIdle_BookListRemainsAccessible | 16ms |
| โ | MyBooksViewModelDownloadStateTests | testRegistryState_DownloadFailed_BookRemainsVisible | 11ms |
| โ | MyBooksViewModelDownloadStateTests | testRegistryState_DownloadSuccessful_BookRemainsInList | 23ms |
| โ | MyBooksViewModelDownloadStateTests | testRegistryState_HoldingBook_NotInMyBooksIfNotInMyBooks | 8ms |
| โ | MyBooksViewModelEmptyArrayTests | testFilterLogic_EmptyArray_ReturnsEmpty | 3ms |
| โ | MyBooksViewModelEmptyArrayTests | testSortLogic_EmptyArray_ReturnsEmpty | 4ms |
| โ | MyBooksViewModelEmptyArrayTests | testSortLogic_SingleBook_ReturnsSame | 6ms |
| โ | MyBooksViewModelEmptyStateTests | testBooksAndInstructionsLabel_CoordinateAfterFilterReset | 20ms |
| โ | MyBooksViewModelEmptyStateTests | testBooksPublisher_EmitsRegistryContents | 18ms |
| โ | MyBooksViewModelEmptyStateTests | testShowInstructionsLabel_FalseWhenRegistryHasBooks | 13ms |
| โ | MyBooksViewModelEmptyStateTests | testShowInstructionsLabel_TrueWhenRegistryEmpty | 10ms |
| โ | MyBooksViewModelExtendedTests | testAlert_ClearsOnNilAssignment | 4ms |
| โ | MyBooksViewModelExtendedTests | testFacetViewModel_InitializedWithCorrectConfig | 3ms |
| โ | MyBooksViewModelExtendedTests | testFilterBooks_WithEmptyQuery_RestoresAllBooks | 16ms |
| โ | MyBooksViewModelExtendedTests | testFilterBooks_WithQuery_NarrowsToMatchingBooks | 20ms |
| โ | MyBooksViewModelExtendedTests | testInitialFacetSort_DefaultsToTitle | 4ms |
| โ | MyBooksViewModelExtendedTests | testInitialState_HasCorrectDefaults | 10ms |
| โ | MyBooksViewModelExtendedTests | testIsPadProperty_MatchesUIDevice | 8ms |
| โ | MyBooksViewModelExtendedTests | testLoadAccount_WhenRegistryIsSyncing_ShowsSyncAlert | 6ms |
| โ | MyBooksViewModelExtendedTests | testResetFilter_RestoresBooksAfterQuery | 19ms |
| โ | MyBooksViewModelExtendedTests | testSelectNewLibrary_PublishesTransitionToSubscribers | 14ms |
| โ | MyBooksViewModelExtendedTests | testSelectedBook_PublishesThroughCombine | 11ms |
| โ | MyBooksViewModelExtendedTests | testShowLibraryAccountView_PublishesTransitionsToSubscribers | 8ms |
| โ | MyBooksViewModelExtendedTests | testShowSearchSheet_PublishesTransitionsToSubscribers | 33ms |
| โ | MyBooksViewModelExtendedTests | testSortByAuthor_ReordersBooks | 11ms |
| โ | MyBooksViewModelExtendedTests | testSortByTitle_ReordersBooks | 13ms |
| โ | MyBooksViewModelFacetIntegrationTests | testFacetSortChange_PropagatestoViewModel | 8ms |
| โ | MyBooksViewModelFacetIntegrationTests | testFacetViewModel_ConfiguredCorrectly | 10ms |
| โ | MyBooksViewModelFacetIntegrationTests | testFacet_LocalizedStrings_MatchExpected | 2ms |
| โ | MyBooksViewModelFacetIntegrationTests | testInitialActiveSort_IsFirstFacet | 9ms |
| โ | MyBooksViewModelFacetPublisherTests | testFacetSort_RoundTripPropagation | 7ms |
| โ | MyBooksViewModelFacetPublisherTests | testFacetViewModel_PublishesActiveSortChanges | 63ms |
| โ | MyBooksViewModelFacetPublisherTests | testMyBooksViewModel_SubscribesToFacetChanges | 6ms |
| โ | MyBooksViewModelFilterSortInteractionTests | testFilter_MaintainsSortOrder_Logic | 8ms |
| โ | MyBooksViewModelFilterSortInteractionTests | testSortAfterFilter_ProducesCorrectOrder | 12ms |
| โ | MyBooksViewModelFilterTests | testFilterBooks_EmptyQuery_ResetsToAllBooks | 22ms |
| โ | MyBooksViewModelFilterTests | testFilterBooks_WithQuery_MaintainsSearchQuerySeparately | 8ms |
| โ | MyBooksViewModelFilterTests | testFilterLogic_AuthorMatch_CaseInsensitive | 10ms |
| โ | MyBooksViewModelFilterTests | testFilterLogic_MatchesBothTitleAndAuthor_ReturnsAll | 10ms |
| โ | MyBooksViewModelFilterTests | testFilterLogic_NilAuthors_DoesNotCrash | 7ms |
| โ | MyBooksViewModelFilterTests | testFilterLogic_NoMatches_ReturnsEmpty | 9ms |
| โ | MyBooksViewModelFilterTests | testFilterLogic_SpecialCharacters_HandledCorrectly | 19ms |
| โ | MyBooksViewModelFilterTests | testFilterLogic_TitleMatch_CaseInsensitive | 14ms |
| โ | MyBooksViewModelFilterTests | testResetFilter_RestoresAllBooks | 16ms |
| โ | MyBooksViewModelGuardConditionsTests | testLoadData_CompletesWithIsLoadingFalse | 11ms |
| โ | MyBooksViewModelGuardConditionsTests | testLoadData_SequentialFilterCalls_EachProducesCorrectResult | 18ms |
| โ | MyBooksViewModelLargeDatasetTests | testFilterLogic_ManyBooks_FiltersCorrectly | 318ms |
| โ | MyBooksViewModelLargeDatasetTests | testSortLogic_ManyBooks_Completes | 239ms |
| โ | MyBooksViewModelLoadAccountTests | testLoadAccount_WhenNotSyncing_DoesNotShowSyncAlert | 194ms |
| โ | MyBooksViewModelLoadAccountTests | testLoadAccount_WhenSyncing_ShowsAlert | 197ms |
| โ | MyBooksViewModelLoginStateTests | testLoadData_EmptyRegistry_ShowsInstructionsLabel | 3ms |
| โ | MyBooksViewModelLoginStateTests | testLoadData_MultipleBooks_ExposesAllViaPublishedProperty | 17ms |
| โ | MyBooksViewModelLoginStateTests | testLoadData_PopulatedRegistry_HidesInstructionsLabel | 9ms |
| โ | MyBooksViewModelLoginStateTests | testRegistryChangeNotification_TriggersReload_UpdatesBooks | 1.59s |
| โ | MyBooksViewModelMultipleAuthorSortingTests | testSortByAuthor_SameFirstName_SortsByFullName | 11ms |
| โ | MyBooksViewModelMultipleAuthorSortingTests | testSortByTitle_ThePrefix_SortedAlphabetically | 23ms |
| โ | MyBooksViewModelMultipleAuthorSortingTests | testSort_AlreadySorted_MaintainsOrder | 10ms |
| โ | MyBooksViewModelNotificationTests | testRegistryChangeNotification_IsRegistered | 8ms |
| โ | MyBooksViewModelNotificationTests | testStateChangeNotification_IsRegistered | 8ms |
| โ | MyBooksViewModelNotificationTests | testSyncEndedNotification_CausesBookListToUpdate | 326ms |
| โ | MyBooksViewModelNotificationTests | testSyncEndedNotification_IsRegistered | 6ms |
| โ | MyBooksViewModelOfflineFilteringTests | testExpiredBookFiltering_Logic | 8ms |
| โ | MyBooksViewModelOfflineFilteringTests | testOfflineState_FiltersExpiredBooks_Logic | 6ms |
| โ | MyBooksViewModelOfflineFilteringTests | testOnlineState_ShowsAllBooks_Logic | 8ms |
| โ | MyBooksViewModelPublisherTests | testAlertPublisher_EmitsWhenSet | 8ms |
| โ | MyBooksViewModelPublisherTests | testAlertPublisher_InitiallyNil | 3ms |
| โ | MyBooksViewModelPublisherTests | testFacetViewModelPublisher_TriggersSortUpdate | 192ms |
| โ | MyBooksViewModelPublisherTests | testIsLoadingPublisher_EmitsChanges | 4ms |
| โ | MyBooksViewModelPublisherTests | testSearchQueryPublisher_EmitsChanges | 5ms |
| โ | MyBooksViewModelPublisherTests | testSelectedBookPublisher_EmitsChanges | 7ms |
| โ | MyBooksViewModelPublisherTests | testShowInstructionsLabelPublisher_InitialState | 4ms |
| โ | MyBooksViewModelSearchEdgeCaseTests | testFilterLogic_EmojiInContent_HandledCorrectly | 42ms |
| โ | MyBooksViewModelSearchEdgeCaseTests | testFilterLogic_NumbersInQuery_Matches | 17ms |
| โ | MyBooksViewModelSearchEdgeCaseTests | testFilterLogic_PartialWord_Matches | 8ms |
| โ | MyBooksViewModelSearchEdgeCaseTests | testFilterLogic_UnicodeCharacters_Matches | 17ms |
| โ | MyBooksViewModelSearchEdgeCaseTests | testFilterLogic_VeryLongQuery_NoMatch | 7ms |
| โ | MyBooksViewModelSearchEdgeCaseTests | testFilterLogic_WhitespaceQuery_HandledCorrectly | 7ms |
| โ | MyBooksViewModelSearchQueryTests | testSearchQuery_IndependentOfFilterBooks | 15ms |
| โ | MyBooksViewModelSearchQueryTests | testSearchQuery_PublisherEmitsAllChanges | 7ms |
| โ | MyBooksViewModelSearchQueryTests | testSearchQuery_SetAndRetrieve | 9ms |
| โ | MyBooksViewModelSortPersistenceTests | testActiveFacetSort_StaysInSync | 7ms |
| โ | MyBooksViewModelSortPersistenceTests | testSortOrder_MaintainedAfterFilter | 18ms |
| โ | MyBooksViewModelSortPersistenceTests | testSortOrder_MaintainedAfterReset | 9ms |
| โ | MyBooksViewModelSortingIntegrationTests | testAuthorSort_SortKeyFormat | 32ms |
| โ | MyBooksViewModelSortingIntegrationTests | testSortByAuthor_MultipleBooks_CorrectOrder | 18ms |
| โ | MyBooksViewModelSortingIntegrationTests | testSortByTitle_MultipleBooks_CorrectOrder | 12ms |
| โ | MyBooksViewModelSortingIntegrationTests | testSort_SecondaryField_BreaksTies | 7ms |
| โ | MyBooksViewModelSortingIntegrationTests | testTitleSort_SortKeyFormat | 5ms |
| โ | MyBooksViewModelSortingTests | testSortChange_FromTitleToAuthor_UpdatesActiveFacetSort | 25ms |
| โ | MyBooksViewModelSortingTests | testSortComparator_AuthorSort_ComparesCorrectly | 187ms |
| โ | MyBooksViewModelSortingTests | testSortComparator_EmptyAuthor_TreatedAsEmptyString | 8ms |
| โ | MyBooksViewModelSortingTests | testSortComparator_IdenticalKeys_MaintainsOrder | 10ms |
| โ | MyBooksViewModelSortingTests | testSortComparator_NilAuthors_HandledCorrectly | 11ms |
| โ | MyBooksViewModelSortingTests | testSortComparator_TitleSort_ComparesCorrectly | 93ms |
| โ | MyBooksViewModelStateTransitionTests | testAlert_StateTransitions | 8ms |
| โ | MyBooksViewModelStateTransitionTests | testIsLoading_TransitionsDuringLoad | 14ms |
| โ | MyBooksViewModelStateTransitionTests | testShowInstructionsLabel_TransitionsOnRegistryChange | 2.02s |
| โ | MyBooksViewModelUIBindingTests | testSelectNewLibrary_PublisherEmitsOnChange | 5ms |
| โ | MyBooksViewModelUIBindingTests | testShowLibraryAccountView_PublisherEmitsOnChange | 5ms |
| โ | MyBooksViewModelUIBindingTests | testShowSearchSheet_PublisherEmitsOnChange | 10ms |
| โ | NSErrorAdditionsTests | testLocalizedDescriptionWithRecovery_bothPresent_separatedByDoubleNewline | 4ms |
| โ | NSErrorAdditionsTests | testLocalizedDescriptionWithRecovery_emptyRecoverySuggestion_returnsDescriptionOnly | 2ms |
| โ | NSErrorAdditionsTests | testLocalizedDescriptionWithRecovery_multilineRecoverySuggestion | 2ms |
| โ | NSErrorAdditionsTests | testLocalizedDescriptionWithRecovery_nilDescription_usesDefaultDescription | 2ms |
| โ | NSErrorAdditionsTests | testLocalizedDescriptionWithRecovery_noRecoverySuggestion_returnsDescription | 2ms |
| โ | NSErrorAdditionsTests | testLocalizedDescriptionWithRecovery_whitespaceOnlyRecoverySuggestion_returnsDescriptionOnly | 2ms |
| โ | NSErrorAdditionsTests | testLocalizedDescriptionWithRecovery_withRecoverySuggestion_returnsBoth | 2ms |
| โ | NSNotificationTPPTests | testNSNotificationConstants_matchSwift | 3ms |
| โ | NSNotificationTPPTests | testNotificationKeys_exist | 2ms |
| โ | NSNotificationTPPTests | testNotificationNames_exist | 10ms |
| โ | NavigationCoordinatorTests | testNavigationCoordinator_Book_NotStored_ReturnsNil | 77ms |
| โ | NavigationCoordinatorTests | testNavigationCoordinator_ClearAudioRoutes_ClearsPath | 2ms |
| โ | NavigationCoordinatorTests | testNavigationCoordinator_ClearAudioRoutes_OnEmptyPath_DoesNotCrash | 2ms |
| โ | NavigationCoordinatorTests | testNavigationCoordinator_InitialState_NoEPUBSamplePresented | 2ms |
| โ | NavigationCoordinatorTests | testNavigationCoordinator_InitialState_PathIsEmpty | 4ms |
| โ | NavigationCoordinatorTests | testNavigationCoordinator_MultiplePushes_AccumulateInPath | 2ms |
| โ | NavigationCoordinatorTests | testNavigationCoordinator_PopToRoot_ClearsEntirePath | 21ms |
| โ | NavigationCoordinatorTests | testNavigationCoordinator_PopToRoot_OnEmptyPath_DoesNotCrash | 25ms |
| โ | NavigationCoordinatorTests | testNavigationCoordinator_Pop_DecreasesPathCount | 2ms |
| โ | NavigationCoordinatorTests | testNavigationCoordinator_Pop_OnEmptyPath_DoesNotCrash | 2ms |
| โ | NavigationCoordinatorTests | testNavigationCoordinator_PushAudioRoute_ClearsExistingRoutes | 3ms |
| โ | NavigationCoordinatorTests | testNavigationCoordinator_PushAudioRoute_FromBookDetail_PreservesStack | 7ms |
| โ | NavigationCoordinatorTests | testNavigationCoordinator_PushAudioRoute_OnEmptyPath_AddsRoute | 16ms |
| โ | NavigationCoordinatorTests | testNavigationCoordinator_PushAudioRoute_PreventsDuplicateAudioRoutes | 2ms |
| โ | NavigationCoordinatorTests | testNavigationCoordinator_Push_IncreasesPathCount | 2ms |
| โ | NavigationCoordinatorTests | testNavigationCoordinator_StoreAudioModel_CanBeRetrieved | 5ms |
| โ | NavigationCoordinatorTests | testNavigationCoordinator_StoreBook_CanBeRetrieved | 7ms |
| โ | NavigationFreezePreventionTests | testNavigation_failurePath_clearsOnPlaybackFailed | 2ms |
| โ | NavigationFreezePreventionTests | testNavigation_multipleBeginsThenFailure_stillClears | 2ms |
| โ | NavigationFreezePreventionTests | testNavigation_normalFlow_clearsOnPlaybackBegan | 5ms |
| โ | NavigationFreezePreventionTests | testNavigation_notNavigating_seekIsAllowed | 6ms |
| โ | NavigationFreezePreventionTests | testNavigation_unloadPath_clearsOnPlaybackUnloaded | 40ms |
| โ | NetworkExecutorCredentialGuardTests | testExecuteTokenRefresh_BothEmpty_FailsViaTokenRequestGuard | 6ms |
| โ | NetworkExecutorCredentialGuardTests | testExecuteTokenRefresh_EmptyUsername_FailsViaTokenRequestGuard | 6ms |
| โ | NetworkExecutorCredentialGuardTests | testExecuteTokenRefresh_ServerReturns401_ReturnsFailure | 25ms |
| โ | NetworkExecutorCredentialGuardTests | testExecuteTokenRefresh_ValidCredentials_ReturnsTokenResponse | 15ms |
| โ | NetworkExecutorCredentialGuardTests | testExecuteTokenRefresh_WithAccountId_Succeeds | 386ms |
| โ | NetworkExecutorCredentialGuardTests | testRefreshTokenAndResume_DefaultAccountId_BackwardCompatible | 18ms |
| โ | NetworkExecutorCredentialGuardTests | testRefreshTokenAndResume_NilTask_NilAccountId_DoesNotCrash | 16ms |
| โ | NetworkExecutorCredentialGuardTests | testRefreshTokenAndResume_NoCredentials_FailsGracefully | 14ms |
| โ | NetworkExecutorResponseRegressionTests | testGET_handlesEmptyResponseBody | 34ms |
| โ | NetworkExecutorResponseRegressionTests | testGET_handlesHTTPErrorGracefully | 27ms |
| โ | NetworkExecutorResponseRegressionTests | testGET_receivesLCPLicenseJSON | 29ms |
| โ | NetworkExecutorResponseRegressionTests | testGET_receivesLargeManifestJSON | 26ms |
| โ | NetworkExecutorTaskTypeTests | testDownload_createsDownloadTask | 11ms |
| โ | NetworkExecutorTaskTypeTests | testGET_createsDataTask_notDownloadTask | 33ms |
| โ | NetworkExecutorTaskTypeTests | testGET_receivesResponseData | 15ms |
| โ | NetworkOfflineDetectionTests | testNetworkReachability_hasSharedInstance | 3ms |
| โ | NetworkOfflineDetectionTests | testURLError_nonOfflineErrorCodes | 20ms |
| โ | NetworkOfflineDetectionTests | testURLError_offlineErrorCodes | 4ms |
| โ | NetworkQueueTests | testAddRequestDoesNotCrash | 13ms |
| โ | NetworkQueueTests | testAddRequestWithHeadersDoesNotCrash | 20ms |
| โ | NetworkQueueTests | testHTTPMethodTypeRawValues | 2ms |
| โ | NetworkQueueTests | testMaxRetriesInQueueIsFive | 3ms |
| โ | NetworkQueueTests | testMigrateCanBeCalledMultipleTimes | 5ms |
| โ | NetworkQueueTests | testMigrateDoesNotCrash | 8ms |
| โ | NetworkQueueTests | testObjCSharedReturnsInstance | 11ms |
| โ | NetworkQueueTests | testSharedInstanceIsSingleton | 4ms |
| โ | NetworkQueueTests | testStatusCodesContainsExpectedNetworkErrors | 2ms |
| โ | NetworkQueueTests | testStatusCodesContainsRoamingAndCallErrors | 3ms |
| โ | NetworkQueueTests | testStatusCodesContainsSecureConnectionFailed | 2ms |
| โ | NetworkRequestQueueTests | testConcurrentRequests_respectsLimit | 587ms |
| โ | NetworkRequestQueueTests | testRequestOrdering_maintainsOrder | 11ms |
| โ | NetworkRetryLogicTests | testNoRetry_on400BadRequest | 7ms |
| โ | NetworkRetryLogicTests | testNoRetry_on404NotFound | 6ms |
| โ | NetworkRetryLogicTests | testRateLimiting_429Response | 6ms |
| โ | NetworkRetryLogicTests | testRetry_on500Error_eventualSuccess | 4ms |
| โ | NetworkRetryLogicTests | testRetry_on502BadGateway | 10ms |
| โ | NetworkRetryLogicTests | testRetry_on503ServiceUnavailable | 4ms |
| โ | NetworkRetryLogicTests | testRetry_on504GatewayTimeout | 5ms |
| โ | NetworkTimeoutTests | testDefaultTimeout_isReasonable | 2ms |
| โ | NetworkTimeoutTests | testTimeout_configuration | 11ms |
| โ | NotificationEventTypeContractTests | testAllCMEventTypes_ParseToiOSEnum | 3ms |
| โ | NotificationEventTypeContractTests | testHoldAvailable_IsHoldRelated | 3ms |
| โ | NotificationEventTypeContractTests | testHoldRemoved_IsHoldRelated | 5ms |
| โ | NotificationEventTypeContractTests | testLoanExpiry_IsNotHoldRelated | 3ms |
| โ | NotificationEventTypeContractTests | testLoanRemoved_IsNotHoldRelated | 2ms |
| โ | NotificationEventTypeContractTests | testUnknownEventType_returnsNilForAllUnrecognizedRawValues | 2ms |
| โ | NotificationEventTypeContractTests | testiOSEnum_HasNoCasesUnknownToCM | 10ms |
| โ | NotificationPayloadContractTests | testAllFixturePayloads_ParseThroughiOSEventTypeEnum | 4ms |
| โ | NotificationPayloadContractTests | testAllPayloads_HaveAPSAlert | 2ms |
| โ | NotificationPayloadContractTests | testAllPayloads_HaveEventTypeField | 2ms |
| โ | NotificationPayloadContractTests | testAllPayloads_HaveIdentifierTypeField | 2ms |
| โ | NotificationPayloadContractTests | testAllPayloads_HaveLoansEndpointField | 2ms |
| โ | NotificationPayloadContractTests | testAllPayloads_haveIdentifierAndLibraryAsNonEmptyStrings | 6ms |
| โ | NotificationPayloadContractTests | testEventTypes_MatchPayloadKeys | 6ms |
| โ | NotificationPayloadContractTests | testHoldClassification_MatchesExpectedRouting | 3ms |
| โ | NotificationPayloadContractTests | testLoanExpiry_HasDaysToExpiryField | 3ms |
| โ | NotificationPayloadContractTests | testNonExpiryPayloads_DoNotHaveDaysToExpiry | 3ms |
| โ | NotificationServiceTests | testBackgroundFetchIsNeeded_isReferentiallyTransparent | 2ms |
| โ | NotificationServiceTests | testCompareAvailabilityDoesNotCrashWithNoAvailability | 6ms |
| โ | NotificationServiceTests | testCompareAvailabilityReservedToReady | 9ms |
| โ | NotificationServiceTests | testHoldClassificationFallback_WhenEventTypeNotInEnum | 3ms |
| โ | NotificationServiceTests | testHoldClassificationWithAPSAlertContainingAvailableKeyword | 8ms |
| โ | NotificationServiceTests | testHoldClassificationWithAPSAlertContainingReadyKeyword | 2ms |
| โ | NotificationServiceTests | testHoldClassificationWithNonHoldAPSAlert | 2ms |
| โ | NotificationServiceTests | testHoldClassificationWithReservationInBody | 2ms |
| โ | NotificationServiceTests | testHoldClassification_byEventType_routesAllKnownEnumCasesCorrectly | 2ms |
| โ | NotificationServiceTests | testHoldClassification_unparseableInputDefaultsToHoldRelated | 3ms |
| โ | NotificationServiceTests | testNotificationConstants_areStableAndDistinct | 1ms |
| โ | NotificationServiceTests | testTokenDataCodableRoundTrip | 2ms |
| โ | NotificationServiceTests | testTokenDataEncodesToValidJSON | 4ms |
| โ | NotificationServiceTests | testTokenDataEncoding | 6ms |
| โ | NotificationServiceTests | testTokenDataWithEmptyToken | 4ms |
| โ | NotificationServiceTests | testTokenDataWithSpecialCharacters_roundTripsThroughJSON | 2ms |
| โ | NotificationServiceTokenTests | testCheckOutActionIdentifier_isCorrect | 2ms |
| โ | NotificationServiceTokenTests | testDefaultActionIdentifier_isCorrect | 23ms |
| โ | NotificationServiceTokenTests | testHoldNotificationCategoryIdentifier_isCorrect | 3ms |
| โ | NotificationServiceTokenTests | testSharedService_returnsSameAsShared | 2ms |
| โ | NotificationServiceTokenTests | testTokenData_data_isNotNil | 2ms |
| โ | NotificationServiceTokenTests | testTokenData_emptyToken_stillEncodes | 6ms |
| โ | NotificationServiceTokenTests | testTokenData_encodesCorrectJSON | 2ms |
| โ | NotificationServiceTokenTests | testTokenData_longToken_encodesCorrectly | 5ms |
| โ | NotificationServiceTokenTests | testTokenData_tokenType_isAlwaysFCMiOS | 2ms |
| โ | NotificationSyncThrottleTests | testForceSync_bypassesThrottle_atExactThreshold | 36ms |
| โ | NotificationSyncThrottleTests | testForceSync_bypassesThrottle_evenIfRecentlySynced | 4ms |
| โ | NotificationSyncThrottleTests | testForceSync_proceedsRegardlessOfHistoryShape | 2ms |
| โ | NotificationSyncThrottleTests | testHoldNotification_alwaysSyncs | 4ms |
| โ | NotificationSyncThrottleTests | testThrottle_normalSync_blocksRecentAndAllowsAgedAndFirstSync | 3ms |
| โ | NotificationTokenDataTests | testTokenData_codableRoundTrip | 35ms |
| โ | NotificationTokenDataTests | testTokenData_dataNotNil | 2ms |
| โ | NotificationTokenDataTests | testTokenData_encodesToJSON | 2ms |
| โ | NotificationTokenDataTests | testTokenData_init | 2ms |
| โ | NotificationTokenRegistrationTests | testRegressionForBug_SAML401LeavesFlagUnlatched_perHelpSpot17680 | 1ms |
| โ | NotificationTokenRegistrationTests | testShouldMark_whenSaveSucceeds | 1ms |
| โ | NotificationTokenRegistrationTests | testShouldMark_whenTokenAlreadyRegistered | 4ms |
| โ | NotificationTokenRegistrationTests | testShouldNotMark_whenDeviceRegistrationLinkAbsent | 2ms |
| โ | NotificationTokenRegistrationTests | testShouldNotMark_whenExistsCheckInconclusive | 2ms |
| โ | NotificationTokenRegistrationTests | testShouldNotMark_whenFCMTokenUnavailable | 3ms |
| โ | NotificationTokenRegistrationTests | testShouldNotMark_whenProfileDocumentMissing | 21ms |
| โ | NotificationTokenRegistrationTests | testShouldNotMark_whenSaveFails | 2ms |
| โ | NotificationTokenRegistrationTests | testShouldNotMark_whenSaveNeededButNotAttempted | 2ms |
| โ | NotificationTokenRegistrationTests | testShouldNotMark_whenSaveSucceededButPrerequisiteMissing | 2ms |
| โ | NowPlayingCoordinatorTests | testClearNowPlaying_removesAllInfo | 2ms |
| โ | NowPlayingCoordinatorTests | testClearNowPlaying_setsStoppedState | 7ms |
| โ | NowPlayingCoordinatorTests | testSetPlaybackState_paused_setsCorrectPlaybackState | 3ms |
| โ | NowPlayingCoordinatorTests | testSetPlaybackState_paused_setsZeroRate | 26ms |
| โ | NowPlayingCoordinatorTests | testSetPlaybackState_playing_setsCorrectPlaybackState | 2ms |
| โ | NowPlayingCoordinatorTests | testSetPlaybackState_playing_setsNonZeroRate | 3ms |
| โ | NowPlayingCoordinatorTests | testUpdateArtwork_nil_clearsArtwork | 670ms |
| โ | NowPlayingCoordinatorTests | testUpdateArtwork_setsArtworkInInfo | 76ms |
| โ | NowPlayingCoordinatorTests | testUpdateNowPlaying_clampsElapsedToNotExceedDuration | 2ms |
| โ | NowPlayingCoordinatorTests | testUpdateNowPlaying_clampsNegativeElapsedToZero | 7ms |
| โ | NowPlayingCoordinatorTests | testUpdateNowPlaying_ensuresDurationIsAtLeastOne | 2ms |
| โ | NowPlayingCoordinatorTests | testUpdateNowPlaying_preservesArtwork_acrossUpdates | 6ms |
| โ | NowPlayingCoordinatorTests | testUpdateNowPlaying_rapidUpdates_lastOneWins | 1.57s |
| โ | NowPlayingCoordinatorTests | testUpdateNowPlaying_setsElapsedAndDuration | 2ms |
| โ | NowPlayingCoordinatorTests | testUpdateNowPlaying_setsInfoCenter | 47ms |
| โ | NowPlayingCoordinatorTests | testUpdateNowPlaying_setsMediaType_toAudioBook | 6ms |
| โ | NowPlayingCoordinatorTests | testUpdateNowPlaying_setsPlaybackRate_whenPlaying | 2ms |
| โ | NowPlayingCoordinatorTests | testUpdateNowPlaying_setsZeroPlaybackRate_whenPaused | 6ms |
| โ | NowPlayingCoordinatorTests | testUpdatePlaybackRate_updatesDefaultRate | 3ms |
| โ | OAuthSAMLRedirectRegressionTests | testRegression_handleRedirectURL_rejectsCustomSchemeURL | 190ms |
| โ | OAuthSAMLRedirectRegressionTests | testRegression_oauthRedirect_stillUsesUniversalLinksPrefix | 149ms |
| โ | OAuthSAMLRedirectRegressionTests | testRegression_oauthRedirect_withError_stillHandlesError | 169ms |
| โ | OAuthSAMLRedirectRegressionTests | testRegression_samlRedirect_stillUsesUniversalLinksPrefix | 162ms |
| โ | OIDCAuthDocumentParsingTests | testAuthDocument_containsOidcType | 111ms |
| โ | OIDCAuthDocumentParsingTests | testAuthDocument_oidcAuthenticateLink_IsParsed | 135ms |
| โ | OIDCAuthDocumentParsingTests | testAuthDocument_oidcDoesNotAffectOtherAuthTypes | 93ms |
| โ | OIDCAuthDocumentParsingTests | testAuthDocument_unknownTypeStillFallsToNone | 5ms |
| โ | OIDCAuthTypeTests | testAuthType_InitFromLegacyOidcString_ReturnsOidc | 3ms |
| โ | OIDCAuthTypeTests | testAuthType_InitFromOidcString_ReturnsOidc | 3ms |
| โ | OIDCAuthTypeTests | testAuthType_LegacyOidcURI_DecodesViaCodeable | 5ms |
| โ | OIDCAuthTypeTests | testAuthType_OidcIsDistinct_FromOtherTypes | 2ms |
| โ | OIDCAuthTypeTests | testAuthType_OidcRawValue_IsCorrect | 3ms |
| โ | OIDCAuthenticationPropertyTests | testOidcAuthentication_catalogRequiresAuthentication_ReturnsFalse | 141ms |
| โ | OIDCAuthenticationPropertyTests | testOidcAuthentication_hasAuthenticationUrl | 118ms |
| โ | OIDCAuthenticationPropertyTests | testOidcAuthentication_isNotOtherTypes | 115ms |
| โ | OIDCAuthenticationPropertyTests | testOidcAuthentication_isOidc_ReturnsTrue | 158ms |
| โ | OIDCAuthenticationPropertyTests | testOidcAuthentication_methodDescription_IsOpenIDConnect | 115ms |
| โ | OIDCAuthenticationPropertyTests | testOidcAuthentication_needsAgeCheck_ReturnsFalse | 124ms |
| โ | OIDCAuthenticationPropertyTests | testOidcAuthentication_needsAuth_ReturnsTrue | 143ms |
| โ | OIDCAuthenticationPropertyTests | testOidcAuthentication_otherUrlsAreNil | 93ms |
| โ | OIDCCallbackEdgeCaseTests | testHandleOIDCCallback_doesNotAffectPriorOAuthState | 160ms |
| โ | OIDCCallbackEdgeCaseTests | testHandleOIDCCallback_prefersQueryOverFragment | 137ms |
| โ | OIDCCallbackEdgeCaseTests | testHandleOIDCCallback_withEmptyQueryString_doesNotSetToken | 101ms |
| โ | OIDCCallbackEdgeCaseTests | testHandleOIDCCallback_withLongToken_setsFullToken | 136ms |
| โ | OIDCCallbackEdgeCaseTests | testHandleOIDCCallback_withMalformedPatronJSON_doesNotSetToken | 155ms |
| โ | OIDCCallbackEdgeCaseTests | testHandleOIDCCallback_withOnlyAccessToken_doesNotSetToken | 110ms |
| โ | OIDCCallbackEdgeCaseTests | testHandleOIDCCallback_withOnlyPatronInfo_doesNotSetToken | 128ms |
| โ | OIDCCallbackEdgeCaseTests | testHandleOIDCCallback_withPatronContainingMultipleFields_parsesAll | 107ms |
| โ | OIDCCallbackEdgeCaseTests | testHandleOIDCCallback_withPlusEncodedPatron_decodesSpaces | 155ms |
| โ | OIDCCallbackHandlingTests | testHandleOIDCCallback_withError_doesNotSetToken | 129ms |
| โ | OIDCCallbackHandlingTests | testHandleOIDCCallback_withFragment_extractsTokenAndValidates | 90ms |
| โ | OIDCCallbackHandlingTests | testHandleOIDCCallback_withNoPayload_doesNotSetToken | 169ms |
| โ | OIDCCallbackHandlingTests | testHandleOIDCCallback_withQueryParams_extractsTokenAndValidates | 99ms |
| โ | OIDCCallbackHandlingTests | testOIDCFlow_afterCallback_validatesAndCompletesSignIn | 163ms |
| โ | OIDCCallbackSchemeTests | testOidcCallbackHost_matchesAndroidConvention | 2ms |
| โ | OIDCCallbackSchemeTests | testOidcCallbackScheme_isNotHTTPS | 5ms |
| โ | OIDCCallbackSchemeTests | testOidcCallbackScheme_matchesAndroidConvention | 6ms |
| โ | OIDCIsolationRegressionTests | testRegression_basicAuthentication_noTokenURLs | 99ms |
| โ | OIDCIsolationRegressionTests | testRegression_makeRequest_oauthAndOIDC_bothUseBearerToken | 94ms |
| โ | OIDCIsolationRegressionTests | testRegression_oauthAuthentication_typeIsCorrect | 97ms |
| โ | OIDCIsolationRegressionTests | testRegression_oidcAuthentication_noOtherAuthURLs | 102ms |
| โ | OIDCIsolationRegressionTests | testRegression_samlAuthentication_typeIsCorrect | 81ms |
| โ | OIDCIsolationRegressionTests | testRegression_updateUserAccount_oauthStillStoresToken | 109ms |
| โ | OIDCLoginRoutingTests | testLogIn_withOIDC_callsWillSignIn | 116ms |
| โ | OIDCLoginRoutingTests | testLogIn_withOIDC_capturesCredentials | 204ms |
| โ | OIDCLoginRoutingTests | testLogIn_withOIDC_doesNotValidateCredentialsDirectly | 131ms |
| โ | OIDCMakeRequestTests | testMakeRequest_forOIDCSignOut_usesUserProfileURL | 94ms |
| โ | OIDCMakeRequestTests | testMakeRequest_forOIDC_addsBearerTokenHeader | 109ms |
| โ | OIDCMakeRequestTests | testMakeRequest_forOIDC_withoutToken_stillCreatesRequest | 152ms |
| โ | OIDCNSCodingTests | testOidcAuthentication_NSCodingRoundTrip_PreservesProperties | 159ms |
| โ | OIDCNetworkLayer401Tests | testOIDC_authDefinition_hasNoTokenURL | 152ms |
| โ | OIDCNetworkLayer401Tests | testOIDC_authDefinition_isNotOauth | 151ms |
| โ | OIDCNetworkLayer401Tests | testOIDC_authDefinition_isNotToken | 147ms |
| โ | OIDCNetworkLayer401Tests | testOIDC_cannotDoClientSideTokenRefresh | 229ms |
| โ | OIDCNetworkLayer401Tests | testOIDC_isTreatedLikeSAML_forReauth | 173ms |
| โ | OIDCReauthOnExpiredTokenTests | testOIDC_afterReauth_credentialsRestored | 127ms |
| โ | OIDCReauthOnExpiredTokenTests | testOIDC_refreshAuthIfNeeded_doesNotNilSelectedAuth | 219ms |
| โ | OIDCReauthOnExpiredTokenTests | testOIDC_refreshAuthIfNeeded_withoutExistingCredentials_requiresUI | 83ms |
| โ | OIDCReauthOnExpiredTokenTests | testOIDC_staleCredentials_authDefinitionPreserved | 156ms |
| โ | OIDCReauthOnExpiredTokenTests | testOIDC_staleCredentials_stillHasCredentials | 122ms |
| โ | OIDCRedirectURIConstructionTests | testOidcCallbackScheme_containsNoDots | 153ms |
| โ | OIDCRedirectURIConstructionTests | testOidcCallbackScheme_doesNotContainColonOrSlash | 151ms |
| โ | OIDCRedirectURIConstructionTests | testOidcCallbackScheme_isLowercase | 157ms |
| โ | OIDCRedirectURIConstructionTests | testOidcRedirectURI_doesNotUseHTTPS | 203ms |
| โ | OIDCRedirectURIConstructionTests | testOidcRedirectURI_doesNotUseUniversalLinksURL | 236ms |
| โ | OIDCRedirectURIConstructionTests | testOidcRedirectURI_isValidURL | 118ms |
| โ | OIDCRegressionTests | testRegression_allAuthTypes_areCodable | 139ms |
| โ | OIDCRegressionTests | testRegression_authTypeCodable_roundTripIncludesOidc | 115ms |
| โ | OIDCRegressionTests | testRegression_basicAuth_makeRequest_noBearerToken | 175ms |
| โ | OIDCRegressionTests | testRegression_basicAuth_needsAuth_StillTrue | 162ms |
| โ | OIDCRegressionTests | testRegression_defaultAuth_stillPrefersNonOAuth | 108ms |
| โ | OIDCRegressionTests | testRegression_existingAuthTypesUnchanged | 170ms |
| โ | OIDCRegressionTests | testRegression_oauthAuth_makeRequest_stillAddsBearerToken | 146ms |
| โ | OIDCRegressionTests | testRegression_samlAuth_makeRequest_stillAddsBearerToken | 152ms |
| โ | OIDCRegressionTests | testRegression_samlUpdateUserAccount_stillStoresCookies | 127ms |
| โ | OIDCSelectedAuthenticationTests | testRefreshAuthIfNeeded_withOIDC_resetsIgnoreSignedInState | 153ms |
| โ | OIDCSelectedAuthenticationTests | testSelectedAuthentication_canBeSetToOIDC | 131ms |
| โ | OIDCSignOutRegressionTests | testRegression_signOut_withOAuth_stillClearsToken | 154ms |
| โ | OIDCSignOutRegressionTests | testRegression_signOut_withSAML_stillClearsCookies | 122ms |
| โ | OIDCSignOutRegressionTests | testSignOut_resetsInFlightAuthState | 238ms |
| โ | OIDCSignOutRegressionTests | testSignOut_withOIDC_clearsAuthToken | 173ms |
| โ | OIDCSignOutRegressionTests | testSignOut_withOIDC_clearsPatronInfo | 158ms |
| โ | OIDCSignOutRegressionTests | testSignOut_withOIDC_triggersExplicitLogoutFlowAndCompletesDeauthorization | 185ms |
| โ | OIDCTokenRefreshRegressionTests | testRefreshAuth_withOIDC_doesNotNilOutSelectedAuth_unlikeSAML | 99ms |
| โ | OIDCTokenRefreshRegressionTests | testRefreshAuth_withOIDC_usingExistingCredentials_doesNotResetSelectedAuth | 91ms |
| โ | OIDCTokenRefreshRegressionTests | testRefreshAuth_withOIDC_withoutExistingCredentials_setsIgnoreSignedIn | 89ms |
| โ | OIDCTokenRefreshRegressionTests | testRegression_refreshAuth_withBasic_ignoreSignedInNotSet | 114ms |
| โ | OIDCTokenRefreshRegressionTests | testRegression_refreshAuth_withOAuth_stillSetsIgnoreSignedIn | 101ms |
| โ | OIDCTokenRefreshRegressionTests | testRegression_refreshAuth_withSAML_codepathIncludesSAML | 88ms |
| โ | OIDCUpdateUserAccountTests | testUpdateUserAccount_withOIDC_doesNotStoreCookies | 127ms |
| โ | OIDCUpdateUserAccountTests | testUpdateUserAccount_withOIDC_marksLoggedIn | 130ms |
| โ | OIDCUpdateUserAccountTests | testUpdateUserAccount_withOIDC_setsAuthDefinition | 120ms |
| โ | OIDCUpdateUserAccountTests | testUpdateUserAccount_withOIDC_storesAuthToken | 123ms |
| โ | OIDCUpdateUserAccountTests | testUpdateUserAccount_withOIDC_storesPatronInfo | 102ms |
| โ | OIDCViewModelRegressionTests | testOIDCSignIn_doesNotRequireUsernameOrPIN | 107ms |
| โ | OIDCViewModelSignInTests | testSignIn_withActiveCredentials_showsSignOutAlert | 48ms |
| โ | OIDCViewModelSignInTests | testSignIn_withStaleOIDCCredentials_proceedsToLogin | 27ms |
| โ | OPDS1BorrowEntryContractTests | testBorrowEntry_HasAvailabilityWithDates | 8ms |
| โ | OPDS1BorrowEntryContractTests | testBorrowEntry_HasLCPAcquisition | 5ms |
| โ | OPDS1BorrowEntryContractTests | testBorrowEntry_HasRevokeLink | 6ms |
| โ | OPDS1BorrowEntryContractTests | testParseBorrowEntry_AsSingleEntryFeed | 6ms |
| โ | OPDS1CatalogGroupedContractTests | testGroupedFeed_EntriesHaveGroupAttributes | 18ms |
| โ | OPDS1CatalogGroupedContractTests | testGroupedFeed_HasMultipleGroups | 10ms |
| โ | OPDS1CatalogGroupedContractTests | testGroupedFeed_ParsesAsGroupedType | 7ms |
| โ | OPDS1HoldEntriesContractTests | testHoldsFeed_ReadyEntry_HasReadyAvailability | 5ms |
| โ | OPDS1HoldEntriesContractTests | testHoldsFeed_ReservedEntry_HasHoldPosition | 5ms |
| โ | OPDS1HoldEntriesContractTests | testHoldsFeed_ReservedEntry_HasRevokeLink | 6ms |
| โ | OPDS1HoldEntriesContractTests | testParseHoldsFeed_ReturnsTwoEntries | 6ms |
| โ | OPDS1LoansFeedContractTests | testLoansFeed_AudiobookEntry_HasAudiobookType | 6ms |
| โ | OPDS1LoansFeedContractTests | testLoansFeed_EPUBEntry_HasAdobeDRMAcquisition | 6ms |
| โ | OPDS1LoansFeedContractTests | testLoansFeed_EntryHasAnnotationLink | 14ms |
| โ | OPDS1LoansFeedContractTests | testLoansFeed_EntryHasRevokeLink | 13ms |
| โ | OPDS1LoansFeedContractTests | testLoansFeed_OpenAccessPDF_HasDirectAcquisition | 7ms |
| โ | OPDS1LoansFeedContractTests | testParseLoansFeed_ReturnsThreeEntries | 7ms |
| โ | OPDS1RevokeResponseContractTests | testRevokeResponse_HasBorrowLink_NotFulfillmentLink | 7ms |
| โ | OPDS1RevokeResponseContractTests | testRevokeResponse_ParsesAsSingleEntry | 4ms |
| โ | OPDS2AuthenticationDocumentTests | testAnnouncements_parsesIfPresent | 6ms |
| โ | OPDS2AuthenticationDocumentTests | testAuthentication_noAuthRequired | 4ms |
| โ | OPDS2AuthenticationDocumentTests | testAuthentication_parsesBarcodeFormat | 10ms |
| โ | OPDS2AuthenticationDocumentTests | testAuthentication_parsesBasicAuth | 21ms |
| โ | OPDS2AuthenticationDocumentTests | testAuthentication_parsesInputConfiguration | 4ms |
| โ | OPDS2AuthenticationDocumentTests | testAuthentication_parsesLabels | 9ms |
| โ | OPDS2AuthenticationDocumentTests | testAuthentication_parsesMaximumLength | 3ms |
| โ | OPDS2AuthenticationDocumentTests | testAuthentication_parsesMultipleMethods | 9ms |
| โ | OPDS2AuthenticationDocumentTests | testColorScheme_parsesIfPresent | 4ms |
| โ | OPDS2AuthenticationDocumentTests | testFeatures_parsesDisabledFeatures | 3ms |
| โ | OPDS2AuthenticationDocumentTests | testFeatures_parsesEnabledFeatures | 5ms |
| โ | OPDS2AuthenticationDocumentTests | testFromData_withEmptyData_throwsError | 2ms |
| โ | OPDS2AuthenticationDocumentTests | testFromData_withInvalidJSON_throwsError | 7ms |
| โ | OPDS2AuthenticationDocumentTests | testFromData_withMissingRequiredFields_throwsError | 2ms |
| โ | OPDS2AuthenticationDocumentTests | testFromData_withValidJSON_parsesDocument | 4ms |
| โ | OPDS2AuthenticationDocumentTests | testLinks_firstRelMethod_findsPasswordReset | 7ms |
| โ | OPDS2AuthenticationDocumentTests | testLinks_parsesCorrectly | 7ms |
| โ | OPDS2AuthenticationDocumentTests | testServiceDescription_parsesIfPresent | 5ms |
| โ | OPDS2AvailabilityTests | testIsAvailable_AvailableState_ReturnsTrue | 1ms |
| โ | OPDS2AvailabilityTests | testIsReady_ReadyState_ReturnsTrue | 2ms |
| โ | OPDS2AvailabilityTests | testIsReserved_ReservedState_ReturnsTrue | 1ms |
| โ | OPDS2AvailabilityTests | testIsUnavailable_UnavailableState_ReturnsTrue | 1ms |
| โ | OPDS2BookBridgeTests | testConvertAvailability_availableWithoutCopiesIsUnlimited | 2ms |
| โ | OPDS2BookBridgeTests | testConvertAvailability_unknownStateDefaultsToUnlimited | 52ms |
| โ | OPDS2BookBridgeTests | testFullPublicationToBook_fromDecodedJSON | 5ms |
| โ | OPDS2BookBridgeTests | testFullPublicationToBook_mapsAuthors | 3ms |
| โ | OPDS2BookBridgeTests | testFullPublicationToBook_mapsDescription | 2ms |
| โ | OPDS2BookBridgeTests | testFullPublicationToBook_mapsMultipleAuthors | 6ms |
| โ | OPDS2BookBridgeTests | testFullPublicationToBook_mapsNarrators | 2ms |
| โ | OPDS2BookBridgeTests | testFullPublicationToBook_mapsPublishedDate | 7ms |
| โ | OPDS2BookBridgeTests | testFullPublicationToBook_mapsPublisher | 3ms |
| โ | OPDS2BookBridgeTests | testFullPublicationToBook_mapsSubjectsAsCategories | 8ms |
| โ | OPDS2BookBridgeTests | testFullPublicationToBook_mapsSubtitle | 2ms |
| โ | OPDS2BookBridgeTests | testMetadata_decodesAuthorFromSingleStringAndArray | 8ms |
| โ | OPDS2BookBridgeTests | testRelationMapping_allStandardRelations | 6ms |
| โ | OPDS2BookBridgeTests | testRelationMapping_nonAcquisitionRelReturnsNil | 2ms |
| โ | OPDS2BookBridgeTests | testToBook_dropsPublicationWhenOnlyAcquisitionIsStreamingHTMLIndirect | 30ms |
| โ | OPDS2BookBridgeTests | testToBook_fallsBackToFirstImageWhenNoRelSpecified | 3ms |
| โ | OPDS2BookBridgeTests | testToBook_filtersNonAcquisitionLinks | 2ms |
| โ | OPDS2BookBridgeTests | testToBook_fromDecodedJSON | 8ms |
| โ | OPDS2BookBridgeTests | testToBook_handlesInvalidHrefURL | 11ms |
| โ | OPDS2BookBridgeTests | testToBook_handlesLinkWithNoType | 4ms |
| โ | OPDS2BookBridgeTests | testToBook_keepsPublicationWhenAtLeastOneAcquisitionIsSupported | 3ms |
| โ | OPDS2BookBridgeTests | testToBook_mapsAlternateLink | 6ms |
| โ | OPDS2BookBridgeTests | testToBook_mapsAuthorsFromArrayMetadata | 6ms |
| โ | OPDS2BookBridgeTests | testToBook_mapsAvailableState | 4ms |
| โ | OPDS2BookBridgeTests | testToBook_mapsBorrowLink | 4ms |
| โ | OPDS2BookBridgeTests | testToBook_mapsBuyLink | 2ms |
| โ | OPDS2BookBridgeTests | testToBook_mapsGenericAcquisitionLink | 10ms |
| โ | OPDS2BookBridgeTests | testToBook_mapsImageURLFromImages | 2ms |
| โ | OPDS2BookBridgeTests | testToBook_mapsIndirectAcquisition | 2ms |
| โ | OPDS2BookBridgeTests | testToBook_mapsLCPIndirectAcquisition | 2ms |
| โ | OPDS2BookBridgeTests | testToBook_mapsOpenAccessLink | 4ms |
| โ | OPDS2BookBridgeTests | testToBook_mapsPreviewLink | 7ms |
| โ | OPDS2BookBridgeTests | testToBook_mapsReadyState | 6ms |
| โ | OPDS2BookBridgeTests | testToBook_mapsRelatedWorksLink | 2ms |
| โ | OPDS2BookBridgeTests | testToBook_mapsReservedState | 6ms |
| โ | OPDS2BookBridgeTests | testToBook_mapsRevokeLink | 4ms |
| โ | OPDS2BookBridgeTests | testToBook_mapsSampleLink | 85ms |
| โ | OPDS2BookBridgeTests | testToBook_mapsThumbnailURL | 6ms |
| โ | OPDS2BookBridgeTests | testToBook_mapsUnavailableState | 2ms |
| โ | OPDS2BookBridgeTests | testToBook_multipleAcquisitionLinks | 3ms |
| โ | OPDS2BookBridgeTests | testToBook_noAvailabilityDefaultsToUnlimited | 7ms |
| โ | OPDS2BookBridgeTests | testToBook_passesThroughIdentifierTitleUpdatedAndDescription | 71ms |
| โ | OPDS2BookBridgeTests | testToBook_returnsNilWhenNoAcquisitionLinks | 32ms |
| โ | OPDS2BookBridgeTests | testToBook_returnsNilWhenNoUsableAcquisitionPath | 3ms |
| โ | OPDS2BorrowResponseContractTests | testBorrowResponse_HasAvailabilityWithDates | 6ms |
| โ | OPDS2BorrowResponseContractTests | testBorrowResponse_HasFulfillmentAndRevokeLinks | 6ms |
| โ | OPDS2BorrowResponseContractTests | testBorrowResponse_ParsesPublicationMetadata | 2ms |
| โ | OPDS2CatalogWiringTests | testCatalogFeed_opds2Init_createsShellOpdsFeed | 5ms |
| โ | OPDS2CatalogWiringTests | testCatalogFeed_opds2Init_mapsEntries | 3ms |
| โ | OPDS2CatalogWiringTests | testCatalogFeed_opds2Init_setsTitle | 2ms |
| โ | OPDS2CatalogWiringTests | testEndToEnd_jsonToLanes | 17ms |
| โ | OPDS2CatalogWiringTests | testExtractOPDS2Facets_fallsBackToNumberOfItemsHintWhenNoURLMatch | 5ms |
| โ | OPDS2CatalogWiringTests | testExtractOPDS2Facets_marksFacetActiveWhenHrefMatchesCurrentURL | 4ms |
| โ | OPDS2CatalogWiringTests | testExtractOPDS2Facets_urlMatchIgnoresQueryOrder | 2ms |
| โ | OPDS2CatalogWiringTests | testMapFeed_opds2Facets_extracted | 3ms |
| โ | OPDS2CatalogWiringTests | testMapFeed_opds2Grouped_lanesHaveMoreURLs | 12ms |
| โ | OPDS2CatalogWiringTests | testMapFeed_opds2Grouped_lanesTitlesMatch | 4ms |
| โ | OPDS2CatalogWiringTests | testMapFeed_opds2Grouped_producesLanes | 3ms |
| โ | OPDS2CatalogWiringTests | testMapFeed_opds2Navigation_producesEmptyLanesAndBooks | 3ms |
| โ | OPDS2CatalogWiringTests | testMapFeed_opds2Publication_producesUngroupedBooks | 4ms |
| โ | OPDS2CatalogWiringTests | testMapFeed_opds2_bookMetadataPreserved | 37ms |
| โ | OPDS2CatalogWiringTests | testParser_detectsOPDS1XML | 3ms |
| โ | OPDS2CatalogWiringTests | testParser_detectsOPDS2JSON | 23ms |
| โ | OPDS2CatalogWiringTests | testParser_invalidJSONThrows | 14ms |
| โ | OPDS2CatalogsFeedTests | testAccountSetAuthenticationDocument | 153ms |
| โ | OPDS2CatalogsFeedTests | testInitAccountsWithPublication | 113ms |
| โ | OPDS2CatalogsFeedTests | testLoadCatalogsFeed | 113ms |
| โ | OPDS2ContributorTests | testDecode_ObjectValue_ParsesAllFields | 2ms |
| โ | OPDS2ContributorTests | testDecode_StringValue_ParsesAsName | 2ms |
| โ | OPDS2EmptyFeedContractTests | testEmptyFeed_ParsesWithZeroItems | 12ms |
| โ | OPDS2FeedContractTests | testParseAudiobook_IncludesCompleteMetadataAndLinks | 4ms |
| โ | OPDS2FeedContractTests | testParseFacets_ExtractsFormatEntryPoints | 15ms |
| โ | OPDS2FeedContractTests | testParseFeed_FromBackendFixture_SucceedsWithExpectedStructure | 3ms |
| โ | OPDS2FeedContractTests | testParsePublications_ExtractsBookMetadata | 12ms |
| โ | OPDS2FeedParsingTests | testDateParsing_withISO8601_parsesCorrectly | 109ms |
| โ | OPDS2FeedParsingTests | testDateParsing_withMilliseconds_parsesCorrectly | 4ms |
| โ | OPDS2FeedParsingTests | testDateParsing_withoutMilliseconds_parsesCorrectly | 5ms |
| โ | OPDS2FeedParsingTests | testFromData_withEmptyCatalogs_parsesSuccessfully | 4ms |
| โ | OPDS2FeedParsingTests | testFromData_withEmptyData_throwsError | 3ms |
| โ | OPDS2FeedParsingTests | testFromData_withInvalidJSON_throwsError | 2ms |
| โ | OPDS2FeedParsingTests | testFromData_withMissingCatalogs_throwsError | 5ms |
| โ | OPDS2FeedParsingTests | testFromData_withValidJSON_parsesFeed | 106ms |
| โ | OPDS2FeedParsingTests | testLinks_parsesCorrectly | 86ms |
| โ | OPDS2FeedParsingTests | testMetadata_parsesAdobeVendorId | 99ms |
| โ | OPDS2FeedParsingTests | testMetadata_parsesTitle | 110ms |
| โ | OPDS2FeedTests | testDetectOPDS2FromContentType | 2ms |
| โ | OPDS2FeedTests | testDetectOPDS2FromData | 47ms |
| โ | OPDS2FeedTests | testFeedEquatable | 6ms |
| โ | OPDS2FeedTests | testParseDateWithFractionalSeconds | 6ms |
| โ | OPDS2FeedTests | testParseDateWithoutFractionalSeconds | 19ms |
| โ | OPDS2FeedTests | testParseFeedWithFacets | 6ms |
| โ | OPDS2FeedTests | testParseFeedWithGroups | 6ms |
| โ | OPDS2FeedTests | testParseFeedWithNavigation | 7ms |
| โ | OPDS2FeedTests | testParseFeedWithPagination | 3ms |
| โ | OPDS2FeedTests | testParseFeedWithPublications | 5ms |
| โ | OPDS2FeedTests | testParseLinkWithIndirectAcquisition | 2ms |
| โ | OPDS2FeedTests | testParseLinkWithProperties | 2ms |
| โ | OPDS2FeedTests | testParseMinimalFeed | 3ms |
| โ | OPDS2FullMetadataTests | testDecode_AllOptionalFields_ParsesCorrectly | 17ms |
| โ | OPDS2FullMetadataTests | testDecode_AtIdKey_ParsesIdentifier | 2ms |
| โ | OPDS2FullMetadataTests | testDecode_MissingId_GeneratesUUID | 2ms |
| โ | OPDS2FullMetadataTests | testEncodeDecode_RoundTrip_PreservesData | 8ms |
| โ | OPDS2FullPublicationTests | testAcquisitionLinks_FiltersCorrectly | 2ms |
| โ | OPDS2FullPublicationTests | testBorrowLink_Found_ReturnsLink | 2ms |
| โ | OPDS2FullPublicationTests | testCoverURL_CoverRel_ReturnsCorrectURL | 2ms |
| โ | OPDS2FullPublicationTests | testCoverURL_LargeWidth_FallsBackToLargeImage | 2ms |
| โ | OPDS2FullPublicationTests | testImageURL_NoRelImage_ReturnsFirst | 2ms |
| โ | OPDS2FullPublicationTests | testIsAudiobook_AudiobookType_ReturnsTrue | 2ms |
| โ | OPDS2FullPublicationTests | testIsEPUB_EpubType_ReturnsTrue | 2ms |
| โ | OPDS2FullPublicationTests | testIsPDF_PdfType_ReturnsTrue | 2ms |
| โ | OPDS2FullPublicationTests | testOpenAccessLink_Found_ReturnsLink | 2ms |
| โ | OPDS2FullPublicationTests | testSampleLink_PreviewRel_ReturnsLink | 2ms |
| โ | OPDS2FullPublicationTests | testSampleLink_SampleRel_ReturnsLink | 16ms |
| โ | OPDS2FullPublicationTests | testThumbnailURL_SmallWidth_FallsBackToSmallImage | 2ms |
| โ | OPDS2FullPublicationTests | testThumbnailURL_ThumbnailRel_ReturnsCorrectURL | 16ms |
| โ | OPDS2IntegrationTests | testAllPublicationsConvertSuccessfully | 17ms |
| โ | OPDS2IntegrationTests | testBorrowableBookConversion | 8ms |
| โ | OPDS2IntegrationTests | testFeedFacets | 10ms |
| โ | OPDS2IntegrationTests | testFeedIsGrouped | 11ms |
| โ | OPDS2IntegrationTests | testFeedLinks | 9ms |
| โ | OPDS2IntegrationTests | testFeedMetadata | 21ms |
| โ | OPDS2IntegrationTests | testFormatDetection_JSON | 9ms |
| โ | OPDS2IntegrationTests | testFormatDetection_XML | 12ms |
| โ | OPDS2IntegrationTests | testFormatDetection_contentType | 16ms |
| โ | OPDS2IntegrationTests | testFullPublicationFromJSON | 21ms |
| โ | OPDS2IntegrationTests | testGroupCount | 7ms |
| โ | OPDS2IntegrationTests | testNewAndNotableGroup | 7ms |
| โ | OPDS2IntegrationTests | testOpenAccessBookConversion | 39ms |
| โ | OPDS2IntegrationTests | testPopularAudiobooksGroup | 7ms |
| โ | OPDS2IntegrationTests | testReadyBookConversion | 7ms |
| โ | OPDS2IntegrationTests | testReservedBookWithLCPConversion | 8ms |
| โ | OPDS2IntegrationTests | testStaffPicksGroup | 9ms |
| โ | OPDS2IntegrationTests | testUnavailableAudiobookConversion | 9ms |
| โ | OPDS2LinkArrayTests | testAllRel_MatchingLinks_ReturnsFiltered | 4ms |
| โ | OPDS2LinkArrayTests | testAllRel_NoMatchingLinks_ReturnsEmpty | 2ms |
| โ | OPDS2LinkArrayTests | testFirstRel_EmptyArray_ReturnsNil | 27ms |
| โ | OPDS2LinkArrayTests | testFirstRel_MatchingLink_ReturnsFirst | 2ms |
| โ | OPDS2LinkArrayTests | testFirstRel_NoMatch_ReturnsNil | 3ms |
| โ | OPDS2LinkComputedPropertyTests | testHrefURL_InvalidURL_ReturnsNil | 3ms |
| โ | OPDS2LinkComputedPropertyTests | testHrefURL_ValidURL_ReturnsURL | 3ms |
| โ | OPDS2LinkComputedPropertyTests | testId_ReturnsHref | 3ms |
| โ | OPDS2LinkComputedPropertyTests | testIsAcquisition_BorrowRel_ReturnsTrue | 5ms |
| โ | OPDS2LinkComputedPropertyTests | testIsAcquisition_NilRel_ReturnsFalse | 3ms |
| โ | OPDS2LinkComputedPropertyTests | testIsAcquisition_OpenAccessRel_ReturnsTrue | 7ms |
| โ | OPDS2LinkComputedPropertyTests | testIsAcquisition_SelfRel_ReturnsFalse | 3ms |
| โ | OPDS2LinkComputedPropertyTests | testIsBorrow_CorrectRel_ReturnsTrue | 3ms |
| โ | OPDS2LinkComputedPropertyTests | testIsBorrow_OpenAccessRel_ReturnsFalse | 3ms |
| โ | OPDS2LinkComputedPropertyTests | testIsImage_CoverRel_ReturnsTrue | 5ms |
| โ | OPDS2LinkComputedPropertyTests | testIsImage_ImageType_ReturnsTrue | 4ms |
| โ | OPDS2LinkComputedPropertyTests | testIsImage_NonImageType_ReturnsFalse | 2ms |
| โ | OPDS2LinkComputedPropertyTests | testIsImage_ThumbnailRel_ReturnsTrue | 5ms |
| โ | OPDS2LinkComputedPropertyTests | testIsOpenAccess_BorrowRel_ReturnsFalse | 2ms |
| โ | OPDS2LinkComputedPropertyTests | testIsOpenAccess_CorrectRel_ReturnsTrue | 2ms |
| โ | OPDS2LinkComputedPropertyTests | testIsSample_BorrowRel_ReturnsFalse | 3ms |
| โ | OPDS2LinkComputedPropertyTests | testIsSample_PreviewRel_ReturnsTrue | 5ms |
| โ | OPDS2LinkComputedPropertyTests | testIsSample_SampleRel_ReturnsTrue | 5ms |
| โ | OPDS2LinkComputedPropertyTests | testLink_CodableRoundTrip_MinimalFields | 6ms |
| โ | OPDS2LinkComputedPropertyTests | testLink_CodableRoundTrip_PreservesAllFields | 3ms |
| โ | OPDS2LinkRelTests | testPasswordReset_hasCorrectRawValue | 8ms |
| โ | OPDS2LinkTests | testLink_firstRelMethod_findsMatchingLink | 168ms |
| โ | OPDS2LinkTests | testLink_hasHref | 193ms |
| โ | OPDS2PublicationExtendedTests | testContributorDecodesFromObject | 75ms |
| โ | OPDS2PublicationExtendedTests | testContributorDecodesFromString | 3ms |
| โ | OPDS2PublicationExtendedTests | testConvertAcquisitionFromBorrowLink | 2ms |
| โ | OPDS2PublicationExtendedTests | testConvertAcquisitionFromNonAcquisitionLink | 2ms |
| โ | OPDS2PublicationExtendedTests | testConvertAcquisitionSynthesizesIndirectForBearerToken | 6ms |
| โ | OPDS2PublicationExtendedTests | testConvertAcquisitionSynthesizesIndirectForLCP | 5ms |
| โ | OPDS2PublicationExtendedTests | testConvertAcquisitionWithExplicitIndirectAcquisitions | 3ms |
| โ | OPDS2PublicationExtendedTests | testConvertAvailabilityAvailableWithCopies | 2ms |
| โ | OPDS2PublicationExtendedTests | testConvertAvailabilityAvailableWithoutCopies | 2ms |
| โ | OPDS2PublicationExtendedTests | testConvertAvailabilityNil | 2ms |
| โ | OPDS2PublicationExtendedTests | testConvertAvailabilityReady | 3ms |
| โ | OPDS2PublicationExtendedTests | testConvertAvailabilityReserved | 8ms |
| โ | OPDS2PublicationExtendedTests | testConvertAvailabilityReservedWithZeroPosition | 4ms |
| โ | OPDS2PublicationExtendedTests | testConvertAvailabilityUnavailable | 4ms |
| โ | OPDS2PublicationExtendedTests | testConvertAvailabilityUnknownState | 4ms |
| โ | OPDS2PublicationExtendedTests | testConvertIndirectAcquisitionsFlat | 2ms |
| โ | OPDS2PublicationExtendedTests | testConvertIndirectAcquisitionsNested | 4ms |
| โ | OPDS2PublicationExtendedTests | testConvertIndirectAcquisitions_nilOrEmptyInputYieldsEmptyResult | 2ms |
| โ | OPDS2PublicationExtendedTests | testExtractImageURLsFallsBackToFirstImage | 2ms |
| โ | OPDS2PublicationExtendedTests | testExtractImageURLsNil | 3ms |
| โ | OPDS2PublicationExtendedTests | testExtractImageURLsWithExplicitRels | 38ms |
| โ | OPDS2PublicationExtendedTests | testExtractSpecialLinks | 3ms |
| โ | OPDS2PublicationExtendedTests | testExtractSpecialLinksEmpty | 5ms |
| โ | OPDS2PublicationExtendedTests | testFullMetadataCodableRoundTrip | 41ms |
| โ | OPDS2PublicationExtendedTests | testFullMetadataDecodesWithAlternateIdKey | 2ms |
| โ | OPDS2PublicationExtendedTests | testFullMetadataDecodesWithMissingIdentifier | 4ms |
| โ | OPDS2PublicationExtendedTests | testFullPublicationAcquisitionLinks | 3ms |
| โ | OPDS2PublicationExtendedTests | testFullPublicationContentType | 24ms |
| โ | OPDS2PublicationExtendedTests | testFullPublicationDurationFormatting | 49ms |
| โ | OPDS2PublicationExtendedTests | testFullPublicationDurationFormattingSubHour | 18ms |
| โ | OPDS2PublicationExtendedTests | testFullPublicationId_delegatesToMetadataIdentifierAcrossInstances | 29ms |
| โ | OPDS2PublicationExtendedTests | testFullPublicationImageURLs | 2ms |
| โ | OPDS2PublicationExtendedTests | testFullPublicationToBookReturnsNilWithNoAcquisitions | 50ms |
| โ | OPDS2PublicationExtendedTests | testRelationFromBorrow | 3ms |
| โ | OPDS2PublicationExtendedTests | testRelationFromBuy | 2ms |
| โ | OPDS2PublicationExtendedTests | testRelationFromGenericAcquisition | 2ms |
| โ | OPDS2PublicationExtendedTests | testRelationFromIssuesRelIsNil | 2ms |
| โ | OPDS2PublicationExtendedTests | testRelationFromNonAcquisitionRel | 2ms |
| โ | OPDS2PublicationExtendedTests | testRelationFromOpenAccess | 5ms |
| โ | OPDS2PublicationExtendedTests | testRelationFromPreview | 2ms |
| โ | OPDS2PublicationExtendedTests | testRelationFromRevokeRelIsNil | 2ms |
| โ | OPDS2PublicationExtendedTests | testRelationFromSample | 2ms |
| โ | OPDS2PublicationExtendedTests | testRelationFromSubscribe | 2ms |
| โ | OPDS2PublicationExtendedTests | testRelationFromUnknownAcquisitionSubtype | 2ms |
| โ | OPDS2PublicationExtendedTests | testSubjectDecodesFromObject | 4ms |
| โ | OPDS2PublicationExtendedTests | testSubjectDecodesFromString | 3ms |
| โ | OPDS2PublicationImageTests | testCoverURL_CoverRel_ReturnsURL | 2ms |
| โ | OPDS2PublicationImageTests | testImageURL_NoImages_ReturnsNil | 2ms |
| โ | OPDS2PublicationImageTests | testImageURL_NonPNGImage_ReturnsNil | 2ms |
| โ | OPDS2PublicationImageTests | testImageURL_PNGImage_ReturnsURL | 2ms |
| โ | OPDS2PublicationImageTests | testThumbnailURL_NoThumbnailRel_ReturnsNil | 4ms |
| โ | OPDS2PublicationImageTests | testThumbnailURL_ThumbnailRel_ReturnsURL | 2ms |
| โ | OPDS2PublicationNarratorTests | testToBook_WithMultipleNarrators_JoinsWithSemicolons | 17ms |
| โ | OPDS2PublicationNarratorTests | testToBook_WithNarratorInJSON_ExposesNarratorOnBook | 9ms |
| โ | OPDS2PublicationNarratorTests | testToBook_WithoutNarrator_BookHasNilNarrators | 6ms |
| โ | OPDS2PublicationTests | testPublication_hasRequiredFields | 15.48s |
| โ | OPDS2PublicationTests | testPublication_metadataHasTitle | 124ms |
| โ | OPDS2SamlIDPTests | testDisplayName_WithEnglishName_ReturnsEnglishValue | 5ms |
| โ | OPDS2SamlIDPTests | testDisplayName_WithNoEnglishName_ReturnsNil | 2ms |
| โ | OPDS2SamlIDPTests | testIdpDescription_WithEnglishDescription_ReturnsValue | 6ms |
| โ | OPDS2SamlIDPTests | testIdpDescription_WithNoDescriptions_ReturnsNil | 3ms |
| โ | OPDS2SamlIDPTests | testInit_WithInvalidHref_ReturnsNil | 2ms |
| โ | OPDS2SamlIDPTests | testInit_WithValidLink_MapsURLCorrectly | 4ms |
| โ | OPDS2SearchResultsContractTests | testSearchResults_ContainsThreePublications | 5ms |
| โ | OPDS2SearchResultsContractTests | testSearchResults_HasNextPageLink | 17ms |
| โ | OPDS2SearchResultsContractTests | testSearchResults_ParsesWithPagination | 5ms |
| โ | OPDS2SubjectTests | testDecode_ObjectValue_ParsesAllFields | 116ms |
| โ | OPDS2SubjectTests | testDecode_StringValue_ParsesAsName | 3ms |
| โ | OPDS2SupportingTypesTests | testBelongsTo_SeriesWithPosition | 11ms |
| โ | OPDS2SupportingTypesTests | testFacetLink_IsActive_WithNumberOfItems_ReturnsTrue | 2ms |
| โ | OPDS2SupportingTypesTests | testFacetLink_IsActive_WithoutProperties_ReturnsFalse | 4ms |
| โ | OPDS2SupportingTypesTests | testIndirectAcquisition_NestedChild | 8ms |
| โ | OPDS2SupportingTypesTests | testPrice_CodableRoundTrip | 5ms |
| โ | OPDSAcquisitionPathExpandedTests | test_acquisitionFromSingleEntry_hasDictionaryRepresentation | 4ms |
| โ | OPDSAcquisitionPathExpandedTests | test_acquisitionRelationString_distinctStringsForOpenAccessAndBorrow | 4ms |
| โ | OPDSAcquisitionPathExpandedTests | test_entryFromSingleEntryXML_hasAuthors | 4ms |
| โ | OPDSAcquisitionPathExpandedTests | test_entryFromSingleEntryXML_hasCorrectTitle | 3ms |
| โ | OPDSAcquisitionPathExpandedTests | test_entryFromSingleEntryXML_hasIdentifier | 3ms |
| โ | OPDSAcquisitionPathExpandedTests | test_entryInitWithInvalidXML_returnsNil | 3ms |
| โ | OPDSAcquisitionPathExpandedTests | test_feedFromMainXML_hasEntries | 105ms |
| โ | OPDSAcquisitionPathExpandedTests | test_feedFromMainXML_hasIdentifier | 89ms |
| โ | OPDSAcquisitionPathExpandedTests | test_feedFromMainXML_hasLinks | 106ms |
| โ | OPDSAcquisitionPathExpandedTests | test_feedFromMainXML_hasTitle | 86ms |
| โ | OPDSAcquisitionPathExpandedTests | test_feedFromMainXML_hasUpdatedDate | 107ms |
| โ | OPDSAcquisitionPathExpandedTests | test_initWithNilXML_returnsNilOnFeedAndLink | 3ms |
| โ | OPDSAcquisitionPathExpandedTests | test_linkFromSingleEntryXML_hasHref | 3ms |
| โ | OPDSAcquisitionPathExpandedTests | test_linksFromSingleEntryXML_haveCorrectCount | 31ms |
| โ | OPDSAcquisitionPathExpandedTests | test_supportedTypes_andAudiobookTypes_areNonEmptyAndDistinguishable | 3ms |
| โ | OPDSFeedCacheTests | testCacheEntryIsExpired | 6ms |
| โ | OPDSFeedCacheTests | testCacheEntryIsStale | 4ms |
| โ | OPDSFeedCacheTests | testClear | 5ms |
| โ | OPDSFeedCacheTests | testConditionalHeaders | 2ms |
| โ | OPDSFeedCacheTests | testConditionalHeadersEmptyWhenNoCachedEntry | 3ms |
| โ | OPDSFeedCacheTests | testExpiredEntriesNotReturned | 16ms |
| โ | OPDSFeedCacheTests | testGetNonExistent | 2ms |
| โ | OPDSFeedCacheTests | testGetWithRevalidationFetchesWhenNoCache | 3ms |
| โ | OPDSFeedCacheTests | testGetWithRevalidationReturnsFreshData | 16ms |
| โ | OPDSFeedCacheTests | testLRUEviction | 4ms |
| โ | OPDSFeedCacheTests | testLRUUpdatesOnAccess | 6ms |
| โ | OPDSFeedCacheTests | testRemove | 5ms |
| โ | OPDSFeedCacheTests | testSetAndGet | 6ms |
| โ | OPDSFeedCacheTests | testStats | 2ms |
| โ | OPDSFeedMigrationTests | testErrorMessageFallback_noDetail_usesLocalizedDescription | 31ms |
| โ | OPDSFeedMigrationTests | testErrorMessageFallback_problemDocDetail | 2ms |
| โ | OPDSFeedMigrationTests | testHalfSheetProvider_showAlert_exists | 5ms |
| โ | OPDSFeedMigrationTests | testReturnBook_authErrors_notTolerated | 9ms |
| โ | OPDSFeedMigrationTests | testReturnBook_nonOPDSRevokeResponse_treatedAsSuccess | 2ms |
| โ | OPDSFeedMigrationTests | testReturnBook_otherParsingErrors_notTolerated | 8ms |
| โ | OPDSFeedMigrationTests | testSignInModalPresenter_needsAuthCheck_anonymousReturnsFalse | 4ms |
| โ | OPDSFeedMigrationTests | testSignInModalPresenter_needsAuthCheck_basicReturnsTrue | 8ms |
| โ | OPDSFeedMigrationTests | testSignInModalPresenter_needsAuthCheck_oidcReturnsTrue | 17ms |
| โ | OPDSFeedMigrationTests | testSyntheticErrorDict_containsHTTPStatus | 2ms |
| โ | OPDSFeedMigrationTests | testSyntheticErrorDict_parsesAsProblemDocument | 2ms |
| โ | OPDSFeedParsingTests | testParseInvalidOPDSFeed | 4ms |
| โ | OPDSFeedParsingTests | testParseValidOPDSFeed | 215ms |
| โ | OPDSFeedServiceTests | testCancelAllRequests_isNoOpAndIdempotent_whenNothingInFlight | 9ms |
| โ | OPDSFeedServiceTests | testCancelRequest_isNoOpAndIdempotent_whenNoInflightRequestForUrl | 3ms |
| โ | OPDSFormatTests | testDetectIsCaseInsensitive | 2ms |
| โ | OPDSFormatTests | testDetectOPDS1FromAtomXMLContentType | 3ms |
| โ | OPDSFormatTests | testDetectOPDS1FromGenericXMLContentType | 2ms |
| โ | OPDSFormatTests | testDetectOPDS1FromXMLData | 3ms |
| โ | OPDSFormatTests | testDetectOPDS2FromGenericJSONContentType | 4ms |
| โ | OPDSFormatTests | testDetectOPDS2FromJSONArrayData | 2ms |
| โ | OPDSFormatTests | testDetectOPDS2FromJSONContentType | 6ms |
| โ | OPDSFormatTests | testDetectOPDS2FromJSONData | 4ms |
| โ | OPDSFormatTests | testDetectUnknownFromEmptyData | 4ms |
| โ | OPDSFormatTests | testDetectUnknownFromNilContentType | 3ms |
| โ | OPDSFormatTests | testDetectUnknownFromUnrelatedContentType | 4ms |
| โ | OPDSFormatTests | testOPDS1RawValue | 2ms |
| โ | OPDSFormatTests | testOPDS2RawValue | 5ms |
| โ | OPDSParserCoreTests | testParseEmptyDataThrows | 5ms |
| โ | OPDSParserCoreTests | testParseInvalidXMLThrows | 4ms |
| โ | OPDSParserCoreTests | testParseValidOPDS1Feed | 5ms |
| โ | OPDSParserCoreTests | testParserErrorDescriptions | 3ms |
| โ | OPDSParserTests | testParseFeed_throwsForInvalidData | 4ms |
| โ | OPDSParserTests | testParseFeed_throwsForNonXML | 2ms |
| โ | OPDSParserTests | testParserError_invalidFeed | 2ms |
| โ | OPDSParserTests | testParserError_invalidXML | 2ms |
| โ | OPDSParsingTests | testAcquisitionLinks | 8ms |
| โ | OPDSParsingTests | testAnalyticsURLGeneration | 6ms |
| โ | OPDSParsingTests | testAuthorWithMissingName | 7ms |
| โ | OPDSParsingTests | testCategoryWithMissingTerm | 6ms |
| โ | OPDSParsingTests | testEmptyXMLData | 4ms |
| โ | OPDSParsingTests | testEntryExtractionFromFeed | 9ms |
| โ | OPDSParsingTests | testEntryWithCategories | 5ms |
| โ | OPDSParsingTests | testEntryWithContributors | 7ms |
| โ | OPDSParsingTests | testEntryWithDuration | 3ms |
| โ | OPDSParsingTests | testEntryWithMissingId | 5ms |
| โ | OPDSParsingTests | testEntryWithMissingTitle | 3ms |
| โ | OPDSParsingTests | testEntryWithMissingUpdated | 4ms |
| โ | OPDSParsingTests | testEntryWithMultipleAuthors | 5ms |
| โ | OPDSParsingTests | testEntryWithNamespacedContributorRoles_ParsesNarrator | 7ms |
| โ | OPDSParsingTests | testEntryWithPublisherAndDistribution | 10ms |
| โ | OPDSParsingTests | testEntryWithUnnamespacedContributorRole_StillParses | 804ms |
| โ | OPDSParsingTests | testEntry_AudienceAndLanguageNilWhenAbsent | 12ms |
| โ | OPDSParsingTests | testEntry_AudienceCategoryIsNotInRegularCategoryList | 6ms |
| โ | OPDSParsingTests | testEntry_ParsesAudienceFromSchemaOrgCategory | 5ms |
| โ | OPDSParsingTests | testEntry_ParsesLanguageWithDctermsNamespace | 4ms |
| โ | OPDSParsingTests | testEntry_ParsesLanguageWithoutNamespaceDeclaration | 6ms |
| โ | OPDSParsingTests | testFeedIgnoresMalformedEntries | 6ms |
| โ | OPDSParsingTests | testFeedIgnoresMalformedLinks | 50ms |
| โ | OPDSParsingTests | testFeedInitializationFromCompleteFeed | 18ms |
| โ | OPDSParsingTests | testFeedInitializationFromMinimalXML | 3ms |
| โ | OPDSParsingTests | testFeedInitializationFromSingleEntry | 11ms |
| โ | OPDSParsingTests | testFeedParsingPerformance | 4.88s |
| โ | OPDSParsingTests | testFeedTypeAcquisitionGrouped | 4ms |
| โ | OPDSParsingTests | testFeedTypeAcquisitionUngrouped | 8ms |
| โ | OPDSParsingTests | testFeedTypeAcquisitionUngroupedWithEmptyFeed | 5ms |
| โ | OPDSParsingTests | testFeedTypeNavigation | 10ms |
| โ | OPDSParsingTests | testFeedWithInvalidDate | 6ms |
| โ | OPDSParsingTests | testFeedWithLicensorAndPatron | 7ms |
| โ | OPDSParsingTests | testFeedWithMissingId | 4ms |
| โ | OPDSParsingTests | testFeedWithMissingTitle | 7ms |
| โ | OPDSParsingTests | testFeedWithMissingUpdated | 16ms |
| โ | OPDSParsingTests | testGroupAttributes | 9ms |
| โ | OPDSParsingTests | testHTMLEntityDecoding | 4ms |
| โ | OPDSParsingTests | testImageLinks | 5ms |
| โ | OPDSParsingTests | testLinkInitialization | 9ms |
| โ | OPDSParsingTests | testLinkRelationAlternate | 8ms |
| โ | OPDSParsingTests | testLinkRelationAnnotations | 7ms |
| โ | OPDSParsingTests | testLinkRelationRelatedWorks | 6ms |
| โ | OPDSParsingTests | testLinkRelationTimeTracking | 9ms |
| โ | OPDSParsingTests | testLinkWithMissingHref | 3ms |
| โ | OPDSParsingTests | testLinkWithOptionalAttributesNil | 4ms |
| โ | OPDSParsingTests | testMalformedXML | 3ms |
| โ | OPDSParsingTests | testNilXMLFeed | 4ms |
| โ | OPDSParsingTests | testNonMarketplaceHTMLPreviewIsAccepted | 5ms |
| โ | OPDSParsingTests | testPalaceMarketplaceHTMLPreviewIsAccepted | 6ms |
| โ | OPDSParsingTests | testPreviewLinkParsing | 7ms |
| โ | OPDSParsingTests | testPreviewLinkUsesFirstAvailable | 4ms |
| โ | OPDSParsingTests | testRFC3339DateParsing | 5ms |
| โ | OPDSParsingTests | testSeriesLink | 9ms |
| โ | OfflineActionTests | testActionState_CodableRoundTrip | 3ms |
| โ | OfflineActionTests | testActionType_CodableRoundTrip | 5ms |
| โ | OfflineActionTests | testBorrowAction_Creation | 9ms |
| โ | OfflineActionTests | testCanRetry_CompletedState_False | 2ms |
| โ | OfflineActionTests | testCanRetry_FailedExceedingMaxRetries_False | 3ms |
| โ | OfflineActionTests | testCanRetry_FailedWithRetriesExhausted_False | 3ms |
| โ | OfflineActionTests | testCanRetry_FailedWithRetriesRemaining_True | 6ms |
| โ | OfflineActionTests | testCanRetry_PendingState_False | 3ms |
| โ | OfflineActionTests | testCanRetry_ProcessingState_False | 3ms |
| โ | OfflineActionTests | testCanRetry_ZeroMaxRetries_AlwaysFalse | 4ms |
| โ | OfflineActionTests | testCancelHoldAction_Creation | 3ms |
| โ | OfflineActionTests | testCodableRoundTrip_AllActionTypes | 3ms |
| โ | OfflineActionTests | testCodableRoundTrip_FailedAction | 29ms |
| โ | OfflineActionTests | testCodableRoundTrip_PendingAction | 3ms |
| โ | OfflineActionTests | testCustomMaxRetries | 2ms |
| โ | OfflineActionTests | testDisplayDescription_Borrow | 2ms |
| โ | OfflineActionTests | testDisplayDescription_CancelHold | 2ms |
| โ | OfflineActionTests | testDisplayDescription_Hold | 3ms |
| โ | OfflineActionTests | testDisplayDescription_Return | 3ms |
| โ | OfflineActionTests | testEquality_DifferentID_NotEqual | 3ms |
| โ | OfflineActionTests | testEquality_SameID_Equal | 3ms |
| โ | OfflineActionTests | testHoldAction_Creation | 3ms |
| โ | OfflineActionTests | testNextRetryDelay_FirstRetry | 206ms |
| โ | OfflineActionTests | testNextRetryDelay_FourthRetry | 3ms |
| โ | OfflineActionTests | testNextRetryDelay_GrowsExponentially | 2ms |
| โ | OfflineActionTests | testNextRetryDelay_SecondRetry | 4ms |
| โ | OfflineActionTests | testNextRetryDelay_ThirdRetry | 359ms |
| โ | OfflineActionTests | testRetryCount_IncrementWorks | 3ms |
| โ | OfflineActionTests | testReturnAction_Creation | 2.14s |
| โ | OfflineQueueServiceExtendedTests | testCancel_NonexistentAction_NoOp | 12ms |
| โ | OfflineQueueServiceExtendedTests | testCancel_SpecificPendingAction | 6ms |
| โ | OfflineQueueServiceExtendedTests | testClearFailed_RemovesOnlyFailedActions | 519ms |
| โ | OfflineQueueServiceExtendedTests | testIsProcessing_InitiallyFalse | 3ms |
| โ | OfflineQueueServiceExtendedTests | testMaxRetriesReached_ActionMarkedAsFailed | 3.04s |
| โ | OfflineQueueServiceExtendedTests | testPersistence_ProcessingState_ResetToPending | 13ms |
| โ | OfflineQueueServiceExtendedTests | testPersistence_SaveAndReload | 8ms |
| โ | OfflineQueueServiceExtendedTests | testProcessQueue_FIFO_Order | 515ms |
| โ | OfflineQueueServiceExtendedTests | testQueueStatus_EmptyQueue | 5ms |
| โ | OfflineQueueServiceExtendedTests | testQueueStatus_Summary_AllStates | 3ms |
| โ | OfflineQueueServiceExtendedTests | testQueueStatus_TotalActive | 2ms |
| โ | OfflineQueueServiceExtendedTests | testQueueStatus_WithPendingActions | 9ms |
| โ | OfflineQueueServiceExtendedTests | testRetry_MovesFailedToPending | 1.05s |
| โ | OfflineQueueServiceTests | testActionPublisherEmits | 12ms |
| โ | OfflineQueueServiceTests | testCancelPendingAction | 9ms |
| โ | OfflineQueueServiceTests | testClearFailed | 210ms |
| โ | OfflineQueueServiceTests | testEnqueueAction | 108ms |
| โ | OfflineQueueServiceTests | testEnqueueMultipleActions | 7ms |
| โ | OfflineQueueServiceTests | testExponentialBackoff | 14ms |
| โ | OfflineQueueServiceTests | testMaxRetriesExceeded | 1.03s |
| โ | OfflineQueueServiceTests | testNetworkAvailableTriggersProcessing | 215ms |
| โ | OfflineQueueServiceTests | testOfflineActionCanRetry | 7ms |
| โ | OfflineQueueServiceTests | testOfflineActionDisplayDescription | 6ms |
| โ | OfflineQueueServiceTests | testOfflineQueueStatusSummary | 4ms |
| โ | OfflineQueueServiceTests | testProcessQueueFIFOOrder | 218ms |
| โ | OfflineQueueServiceTests | testProcessQueueSuccess | 116ms |
| โ | OfflineQueueServiceTests | testProcessingStateResetOnRestart | 8ms |
| โ | OfflineQueueServiceTests | testQueuePersistsAcrossInstances | 11ms |
| โ | OfflineQueueServiceTests | testRetryFailedAction | 5.08s |
| โ | OfflineQueueServiceTests | testStatusPublisherEmits | 43ms |
| โ | OverdriveDeferredFulfillmentTests | testDeferFires_whenDownloadFailedWithBorrowAcquisition | 64ms |
| โ | OverdriveDeferredFulfillmentTests | testDeferFires_whenDownloadNeededWithBorrowAcquisition | 2ms |
| โ | OverdriveDeferredFulfillmentTests | testDeferSkipped_whenDefaultAcquisitionIsGeneric | 2ms |
| โ | OverdriveDeferredFulfillmentTests | testDeferSkipped_whenDefaultAcquisitionIsOpenAccess | 5ms |
| โ | OverdriveDeferredFulfillmentTests | testDeferSkipped_whenStateIsHolding | 2ms |
| โ | OverdriveDeferredFulfillmentTests | testDeferSkipped_whenStateIsUnregistered | 2ms |
| โ | OverdriveDownloadHandlerTests | testDeferOverdriveFulfillment_publishesLoanAlreadyExistsBorrowError | 32ms |
| โ | OverdriveDownloadHandlerTests | testHandleOverdriveResponse_completionWithError_failsDownloadAndSkipsManifestBuild | 32ms |
| โ | OverdriveDownloadHandlerTests | testHandleOverdriveResponse_manifestFactoryReturnsNil_failsDownload | 40ms |
| โ | OverdriveDownloadHandlerTests | testHandleOverdriveResponse_missingLocationHeader_failsDownload | 72ms |
| โ | OverdriveDownloadHandlerTests | testHandleOverdriveResponse_uppercaseHeaderKeys_arelowercaseNormalized | 6ms |
| โ | OverdriveDownloadHandlerTests | testHandleOverdriveResponse_validHeaders_buildsManifestRequestAndAddsDownloadTask | 8ms |
| โ | OverdriveDownloadHandlerTests | testProcessOverdriveDownload_whenWifiEnforced_failsWithWifiAndDoesNotCallAPI | 5ms |
| โ | OverdriveDownloadHandlerTests | testProcessOverdriveDownload_withAuthToken_issuesTokenFulfillRequest | 6ms |
| โ | OverdriveDownloadHandlerTests | testProcessOverdriveDownload_withBarcodePin_issuesBasicFulfillRequest | 8ms |
| โ | PDFExtensionsTests | testBookmarkSelector_RoundTrips_AsTPPPDFPageBookmark | 7ms |
| โ | PDFExtensionsTests | testBookmarkSelector_ValidPage_ContainsLocatorPageType | 3ms |
| โ | PDFExtensionsTests | testLocationString_PageZero_ReturnsValidJSON | 5ms |
| โ | PDFExtensionsTests | testLocationString_RoundTrips_WithDecoder | 3ms |
| โ | PDFExtensionsTests | testLocationString_ValidPage_ReturnsJSONString | 4ms |
| โ | PDFExtensionsTests | testPageNumber_EmptyLocationString_ReturnsNil | 2ms |
| โ | PDFExtensionsTests | testPageNumber_InvalidLocationString_ReturnsNil | 2ms |
| โ | PDFExtensionsTests | testPageNumber_LargePageNumber_ReturnsCorrectly | 2ms |
| โ | PDFExtensionsTests | testPageNumber_NonPDFLocationString_ReturnsNil | 2ms |
| โ | PDFExtensionsTests | testPageNumber_PageZero_ReturnsZero | 2ms |
| โ | PDFExtensionsTests | testPageNumber_ValidLocationString_ReturnsPageNumber | 3ms |
| โ | PDFExtensionsTests | testPdfImageRenderingQueue_CreatesNewInstanceEachTime | 4ms |
| โ | PDFExtensionsTests | testPdfImageRenderingQueue_HasCorrectLabel | 84ms |
| โ | PDFExtensionsTests | testPdfPreviewSize_IsLargerThanThumbnail | 2ms |
| โ | PDFExtensionsTests | testPdfPreviewSize_IsSquare | 3ms |
| โ | PDFExtensionsTests | testPdfPreviewSize_ReturnsExpectedDimensions | 4ms |
| โ | PDFExtensionsTests | testPdfThumbnailRenderingQueue_CreatesNewInstanceEachTime | 5ms |
| โ | PDFExtensionsTests | testPdfThumbnailRenderingQueue_HasCorrectLabel | 2ms |
| โ | PDFExtensionsTests | testPdfThumbnailSize_IsSquare | 2ms |
| โ | PDFExtensionsTests | testPdfThumbnailSize_ReturnsExpectedDimensions | 2ms |
| โ | PDFReaderTests | testLCPPDFBook_ContentType | 6ms |
| โ | PDFReaderTests | testPDFBook_ContentType | 7ms |
| โ | PDFReaderTests | testPDFPageBookmark_ConformsToBookmark | 4ms |
| โ | PDFReaderTests | testPDFPageBookmark_Decoding | 2ms |
| โ | PDFReaderTests | testPDFPageBookmark_Encoding | 4ms |
| โ | PDFReaderTests | testPDFPageBookmark_Initialization | 2ms |
| โ | PDFReaderTests | testPDFPageBookmark_WithAnnotationID | 6ms |
| โ | PDFReaderTests | testPDFPage_Decoding | 7ms |
| โ | PDFReaderTests | testPDFPage_Encoding | 11ms |
| โ | PDFReaderTests | testPDFPage_Initialization | 2ms |
| โ | PDFReaderTests | testPDFPage_RoundTrip | 2ms |
| โ | PDFReaderTests | testReaderMode_Values | 2ms |
| โ | PP3596RegressionTests | testPP3596_multiplePlaybackStartedCalls_shouldNotOvercount | 23ms |
| โ | PP3596RegressionTests | testPP3596_onlyActualPlaybackIsTracked | 23ms |
| โ | PP3596RegressionTests | testPP3596_playbackStartedWithoutPlayback_shouldNotAccumulateTime | 14ms |
| โ | Palace | PalaceTests | <1ms |
| โ | Palace | TenPrintCoverTests | <1ms |
| โ | PalaceCheckPropertyTests | test_BackoffDelay_isNonNegativeAndMonotone | 4ms |
| โ | PalaceCheckPropertyTests | test_BookButtonMapper_map_isTotal_forAllStates | 3ms |
| โ | PalaceCheckPropertyTests | test_OPDS2Publication_jsonRoundTrip | 19ms |
| โ | PalaceCheckPropertyTests | test_TPPBookState_disallowedTransitionsAreRejected | 3ms |
| โ | PalaceCheckPropertyTests | test_TPPBookState_selfTransitionsAlwaysAllowed | 2ms |
| โ | PalaceCheckPropertyTests | test_TPPBookState_unregisteredToDownloadingAllowed | 2ms |
| โ | PalaceCheckPropertyTests | test_TPPBookState_validSequencesRespectTable | 12ms |
| โ | PalaceCheckPropertyTests | test_TPPBook_dictionaryRoundTrip | 170ms |
| โ | PalaceErrorCategoryTests | testAuthenticationError_allCases_haveDescriptions | 2ms |
| โ | PalaceErrorCategoryTests | testBookReaderError_allCases_haveDescriptions | 5ms |
| โ | PalaceErrorCategoryTests | testDownloadError_allCases_haveDescriptions | 36ms |
| โ | PalaceErrorCategoryTests | testErrorCode_authErrors_startAt6000 | 1ms |
| โ | PalaceErrorCategoryTests | testErrorCode_downloadErrors_startAt3000 | 58ms |
| โ | PalaceErrorCategoryTests | testErrorCode_drmErrors_startAt5000 | 1ms |
| โ | PalaceErrorCategoryTests | testErrorCode_networkErrors_startAt1000 | 2ms |
| โ | PalaceErrorCategoryTests | testErrorCode_uniquePerCase | 3ms |
| โ | PalaceErrorCategoryTests | testFromNSError_unknownDomain_mapsToNetworkUnknown | 6ms |
| โ | PalaceErrorCategoryTests | testFromNSError_urlErrorCancelled_mapsToCancelled | 4ms |
| โ | PalaceErrorCategoryTests | testFromNSError_urlErrorNotConnected_mapsToNoConnection | 12ms |
| โ | PalaceErrorCategoryTests | testFromNSError_urlErrorTimedOut_mapsToTimeout | 2ms |
| โ | PalaceErrorCategoryTests | testLocalizedError_conformance | 3ms |
| โ | PalaceErrorCategoryTests | testNetworkError_allCases_haveDescriptions | 5ms |
| โ | PalaceErrorCategoryTests | testRecoverySuggestion_downloadInsufficientSpace | 2ms |
| โ | PalaceErrorCategoryTests | testRecoverySuggestion_networkErrors_provideGuidance | 4ms |
| โ | PalaceErrorCategoryTests | testStorageError_allCases_haveDescriptions | 63ms |
| โ | PalaceErrorExtendedTests | testAudiobookError_allCases_haveDescriptions | 2ms |
| โ | PalaceErrorExtendedTests | testAudiobookError_allCases_haveRecoverySuggestions | 19ms |
| โ | PalaceErrorExtendedTests | testBookRegistryError_allCases_haveDescriptions | 3ms |
| โ | PalaceErrorExtendedTests | testBookRegistryError_allCases_haveRecoverySuggestions | 54ms |
| โ | PalaceErrorExtendedTests | testCancellation_yieldsNoRecoverySuggestionAcrossNetworkAndDownload | 2ms |
| โ | PalaceErrorExtendedTests | testDRMError_allCases_haveDescriptions | 2ms |
| โ | PalaceErrorExtendedTests | testDRMError_allCases_haveRecoverySuggestions | 2ms |
| โ | PalaceErrorExtendedTests | testErrorCode_categoryOffsetsAreUniqueAndStable | 2ms |
| โ | PalaceErrorExtendedTests | testErrorCode_offsetByRawValue | 1ms |
| โ | PalaceErrorExtendedTests | testFromError_palaceErrorPassedDirectly_returnsItself | 1ms |
| โ | PalaceErrorExtendedTests | testFromNSError_palaceDomain_code0_mapsToNetworkUnknown | 2ms |
| โ | PalaceErrorExtendedTests | testFromNSError_palaceDomain_code3_mapsToParsingOpdsFeedInvalid | 2ms |
| โ | PalaceErrorExtendedTests | testFromNSError_palaceDomain_code5_mapsToAuthInvalidCredentials | 2ms |
| โ | PalaceErrorExtendedTests | testFromNSError_palaceDomain_code8_mapsToAudiobookPlaybackError | 2ms |
| โ | PalaceErrorExtendedTests | testFromNSError_palaceDomain_unknownCode_mapsToNetworkUnknown | 1ms |
| โ | PalaceErrorExtendedTests | testFromNSError_urlErrorBadURL_mapsToInvalidURL | 1ms |
| โ | PalaceErrorExtendedTests | testFromNSError_urlErrorCannotConnectToHost_mapsToServerError | 2ms |
| โ | PalaceErrorExtendedTests | testFromNSError_urlErrorCannotFindHost_mapsToServerError | 2ms |
| โ | PalaceErrorExtendedTests | testFromNSError_urlErrorUnsupportedURL_mapsToInvalidURL | 2ms |
| โ | PalaceErrorExtendedTests | testPalaceError_localizedErrorSurface_delegatesToInnerError | 3ms |
| โ | PalaceErrorExtendedTests | testParsingError_allCases_haveDescriptions | 2ms |
| โ | PalaceErrorExtendedTests | testParsingError_contentNotSupported_hasSpecificRecovery | 27ms |
| โ | PalaceErrorExtendedTests | testParsingError_otherCases_haveGenericRecovery | 1ms |
| โ | PalaceErrorTests | testPalaceError_authentication_accountNotFound | 6ms |
| โ | PalaceErrorTests | testPalaceError_authentication_invalidCredentials | 3ms |
| โ | PalaceErrorTests | testPalaceError_authentication_tokenExpired | 2ms |
| โ | PalaceErrorTests | testPalaceError_bookRegistry_alreadyBorrowed | 2ms |
| โ | PalaceErrorTests | testPalaceError_bookRegistry_bookNotFound | 7ms |
| โ | PalaceErrorTests | testPalaceError_download_cannotFulfill | 12ms |
| โ | PalaceErrorTests | testPalaceError_network_forbidden | 2ms |
| โ | PalaceErrorTests | testPalaceError_network_notFound | 2ms |
| โ | PalaceErrorTests | testPalaceError_network_rateLimited | 3ms |
| โ | PalaceErrorTests | testPalaceError_network_serverError | 6ms |
| โ | PalaceErrorTests | testPalaceError_parsing_opdsFeedInvalid | 6ms |
| โ | ParserFuzzTests | testFuzz_AnnotationsResponse_NoCrashes | 4.83s |
| โ | ParserFuzzTests | testFuzz_LCPLicense_NoCrashes | 79ms |
| โ | ParserFuzzTests | testFuzz_OPDS1XML_NoCrashes | 498ms |
| โ | ParserFuzzTests | testFuzz_OPDS2JSON_NoCrashes | 48.04s |
| โ | PatronProfileContractTests | testParsePatronProfile_ExtractsDRMInfo | 3ms |
| โ | PatronProfileContractTests | testParsePatronProfile_ExtractsSettings | 3ms |
| โ | PatronProfileContractTests | testParsePatronProfile_HasAnnotationAndDeviceLinks | 35ms |
| โ | PatronProfileContractTests | testParsePatronProfile_HasExpirationDate | 3ms |
| โ | PerformanceMonitorTests | testClearAll | 4ms |
| โ | PerformanceMonitorTests | testEmptyReport | 3ms |
| โ | PerformanceMonitorTests | testEndTimingSameTokenTwice | 4ms |
| โ | PerformanceMonitorTests | testEndTimingWithInvalidToken | 5ms |
| โ | PerformanceMonitorTests | testGenerateReport | 4ms |
| โ | PerformanceMonitorTests | testMaxMetricsPerCategoryEnforced | 5ms |
| โ | PerformanceMonitorTests | testMetricPublisherEmits | 11ms |
| โ | PerformanceMonitorTests | testMetricsGroupedByCategory | 5ms |
| โ | PerformanceMonitorTests | testPercentileCalculations | 8ms |
| โ | PerformanceMonitorTests | testRecordDurationDirectly | 5ms |
| โ | PerformanceMonitorTests | testRecordMetricDirectly | 4ms |
| โ | PerformanceMonitorTests | testReportByName | 3ms |
| โ | PerformanceMonitorTests | testReportSummaryFormat | 4ms |
| โ | PerformanceMonitorTests | testStartAndEndTiming | 62ms |
| โ | PerformanceReportTests | testEmptyMetrics_ReturnsZeros | 25ms |
| โ | PerformanceReportTests | testLargeDataset_PercentileAccuracy | 18ms |
| โ | PerformanceReportTests | testMinMaxMean | 2ms |
| โ | PerformanceReportTests | testMinMaxMean_UnsortedInput | 2ms |
| โ | PerformanceReportTests | testPercentile_P50_EvenCount | 3ms |
| โ | PerformanceReportTests | testPercentile_P50_OddCount | 2ms |
| โ | PerformanceReportTests | testPercentile_P95 | 2ms |
| โ | PerformanceReportTests | testPercentile_P99 | 3ms |
| โ | PerformanceReportTests | testReport_EmptyMonitor_ZeroMeasurements | 4ms |
| โ | PerformanceReportTests | testReport_StatisticsByCategory | 6ms |
| โ | PerformanceReportTests | testReport_StatisticsByName | 12ms |
| โ | PerformanceReportTests | testReport_SummaryContainsMeasurementCount | 2ms |
| โ | PerformanceReportTests | testReport_TotalMeasurements | 4ms |
| โ | PerformanceReportTests | testSingleMetric_AllPercentilesEqual | 3ms |
| โ | PersistentLoggerTests | testLog_andRetrieve_containsLoggedMessage | 13ms |
| โ | PersistentLoggerTests | testLog_containsTimestamp | 4ms |
| โ | PersistentLoggerTests | testLog_errorLevel_isRecorded | 9ms |
| โ | PersistentLoggerTests | testLog_faultLevel_isRecorded | 5ms |
| โ | PersistentLoggerTests | testLog_multipleEntries_allAppear | 27ms |
| โ | PersistentLoggerTests | testRetrieveAllLogs_returnsString | 6ms |
| โ | PersistentLoggerTests | testShared_returnsSameInstance | 6ms |
| โ | PlaybackBootstrapperTests | testAudiobookSessionManager_InitialState_IsIdle | 3ms |
| โ | PlaybackBootstrapperTests | testAudiobookSessionState_ErrorIsNotActive | 2ms |
| โ | PlaybackBootstrapperTests | testAudiobookSessionState_IdleIsNotActive | 2ms |
| โ | PlaybackBootstrapperTests | testAudiobookSessionState_LoadingIsActive | 5ms |
| โ | PlaybackBootstrapperTests | testAudiobookSessionState_PausedIsActive | 2ms |
| โ | PlaybackBootstrapperTests | testAudiobookSessionState_PlayingIsActive | 8ms |
| โ | PlaybackBootstrapperTests | testPlaybackBootstrapper_ConfiguresRemoteCommandCenter | 4ms |
| โ | PlaybackBootstrapperTests | testPlaybackBootstrapper_SkipIntervals_AreConfigured | 7ms |
| โ | PlaybackRateTests | testConvert_IntermediateCases_ReturnCorrectMultipliers | 2ms |
| โ | PlaybackRateTests | testConvert_PresetCases_ReturnCorrectMultipliers | 3ms |
| โ | PlaybackRateTests | testFormatMultiplier_OneDecimalPlace_ShowsOneDecimalPlace | 4ms |
| โ | PlaybackRateTests | testFormatMultiplier_TwoDecimalPlaces_ShowsTwoDecimalPlaces | 7ms |
| โ | PlaybackRateTests | testFormatMultiplier_WholeNumber_ShowsOneDecimalPlace | 2ms |
| โ | PlaybackRateTests | testFormatMultiplier_allStepsProduceLabelEndingWithMultiplySign | 109ms |
| โ | PlaybackRateTests | testNearest_ExactIntermediateValues_ReturnExactCase | 6ms |
| โ | PlaybackRateTests | testNearest_ExactPresetValues_ReturnExactCase | 4ms |
| โ | PlaybackRateTests | testNearest_ValueBetweenSteps_SnapsToNearest | 4ms |
| โ | PlaybackRateTests | testNearest_clampsOutOfRangeValuesToBounds | 9ms |
| โ | PlaybackRateTests | testPresets_ContainsAllNamedRates | 3ms |
| โ | PlaybackRateTests | testPresets_DoesNotContainIntermediateCases | 2ms |
| โ | PlaybackRateTests | testPresets_isExactly_ThreeQuarters_Normal_OneAndAQuarter_OneAndAHalf_Double | 4ms |
| โ | PlaybackRateTests | testSteps_isMonotonicLadderFromThreeQuartersToDoubleIn0Point05Increments | 5ms |
| โ | PlaybackTrackingRegressionTests | testMultiplePlaybackStartedCalls_doesNotOvercount | 103ms |
| โ | PlaybackTrackingRegressionTests | testMultipleStopStartCycles_preservesAllTime | 74ms |
| โ | PlaybackTrackingRegressionTests | testPlaybackStopped_savesAccumulatedTime | 32ms |
| โ | PlaybackTrackingRegressionTests | testRapidStartStopCycles_countsCorrectly | 137ms |
| โ | PlaybackTrackingRegressionTests | testSleepTimerPause_savesAllAccumulatedTime | 26ms |
| โ | PositionPersistenceLogicTests | testCriticalSave_onTermination_mustBypassSuppression | 4ms |
| โ | PositionPersistenceLogicTests | testNewPersistLocation_bypassesSuppression | 2ms |
| โ | PositionPersistenceLogicTests | testNoSuppression_allowsSave | 2ms |
| โ | PositionPersistenceLogicTests | testOldBehavior_suppressionBlocksSave | 2ms |
| โ | PositionPersistenceLogicTests | testSuppressionExpired_allowsSave | 3ms |
| โ | PositionPersistenceLogicTests | testSuppressionWindow_threeSeconds_blocksAndThenAllows | 2ms |
| โ | PositionPersistenceTests | testBookRegistry_setLocation_updatesPosition | 22ms |
| โ | PositionPersistenceTests | testBookRegistry_storesLocation | 2ms |
| โ | PositionSyncServiceTests | testClearAll | 5ms |
| โ | PositionSyncServiceTests | testClearPositionsForBook | 4ms |
| โ | PositionSyncServiceTests | testLatestPositionAnyFormat | 17ms |
| โ | PositionSyncServiceTests | testNoSyncOfferForUnknownBook | 4ms |
| โ | PositionSyncServiceTests | testNoSyncOfferWhenCurrentFormatIsMoreRecent | 16ms |
| โ | PositionSyncServiceTests | testPersistenceAcrossInstances | 12ms |
| โ | PositionSyncServiceTests | testPositionRecordedEventPublished | 10ms |
| โ | PositionSyncServiceTests | testRecordAudiobookPosition | 24ms |
| โ | PositionSyncServiceTests | testRecordEpubPosition | 13ms |
| โ | PositionSyncServiceTests | testRecordPdfPosition | 10ms |
| โ | PositionSyncServiceTests | testSetAndRetrieveMapping | 14ms |
| โ | PositionSyncServiceTests | testSyncAvailableEventPublished | 6ms |
| โ | PositionSyncServiceTests | testSyncOfferWhenOtherFormatIsMoreRecent | 5ms |
| โ | PositionSyncTests | testSyncIsPossibleAndPermitted_checksSyncState | 5ms |
| โ | PositionSyncTests | testTPPBookLocation_creation | 3ms |
| โ | PositionSyncTests | testTPPBookLocation_equality | 4ms |
| โ | PositionSyncTests | testTPPBookLocation_withEmptyString_createsLocation | 5ms |
| โ | PositionSyncTests | testTPPBookmarkR3Location_storesResourceIndex | 5ms |
| โ | PositionThrottlingTests | testPoster_rapidPositionUpdates_throttlesUploads | 6ms |
| โ | PostUpdateMigrationTests | testMigrate_doesNotCrash | 18ms |
| โ | PostUpdateMigrationTests | testMigrate_updatesStoredVersion | 18ms |
| โ | PostUpdateMigrationTests | testPostUpdateDetection_differentBuild_isDetected | 5ms |
| โ | PostUpdateMigrationTests | testPostUpdateDetection_firstLaunch_isNotUpdate | 6ms |
| โ | PostUpdateMigrationTests | testPostUpdateDetection_sameBuild_isNotDetected | 10ms |
| โ | ProblemDocumentContractTests | testAllProblemDocuments_Parse | 5ms |
| โ | ProblemDocumentContractTests | testAllProblemTypes_HaveDistinctTypeURIs | 4ms |
| โ | ProblemDocumentContractTests | testInvalidCredentials_HasExpectedShape | 4ms |
| โ | ProblemDocumentContractTests | testLoanLimitReached_HasExpectedShape | 3ms |
| โ | ProblemDocumentLoanExpiryTests | testDetailLoanTermLimitReached_detectedInRealServerDetail | 2ms |
| โ | ProblemDocumentLoanExpiryTests | testDetailLoanTermLimitReached_hasExpectedValue | 2ms |
| โ | ProblemDocumentLoanExpiryTests | testDetailLoanTermLimitReached_notDetectedInUnrelatedDetail | 42ms |
| โ | ProblemDocumentLoanExpiryTests | testLoanTermLimitReached_detectedFromErrorDictionary | 6ms |
| โ | ProblemDocumentLoanExpiryTests | testNoActiveLoan_doesNotMatchTermLimitCheck | 2ms |
| โ | ProblemDocumentTests | testBorrowError_credentialsSuspended_extractsDetails | 2ms |
| โ | ProblemDocumentTests | testBorrowError_loanLimitReached_extractsDetails | 2ms |
| โ | ProblemDocumentTests | testNSError_problemDocument_extractsCorrectly | 3ms |
| โ | ProblemDocumentTests | testNSError_withoutProblemDocument_hasNilProperties | 2ms |
| โ | ProblemDocumentTests | testProblemDocumentTypes_areCorrect | 2ms |
| โ | ProblemDocumentTests | testProblemDocument_fromData_parsesCorrectly | 3ms |
| โ | ProblemDocumentTests | testProblemDocument_fromDictionary_parsesCorrectly | 2ms |
| โ | ProblemDocumentTests | testProblemDocument_fromResponseError_extractsFromNSError | 4ms |
| โ | ProblemDocumentTests | testProblemDocument_fromResponseError_fallsBackToData | 4ms |
| โ | ProblemDocumentTests | testProblemDocument_fromResponseError_returnsNilWhenNoDocument | 2ms |
| โ | ProblemDocumentTests | testProblemDocument_stringValue_combinesTitleAndDetail | 2ms |
| โ | ProblemDocumentTests | testProblemDocument_stringValue_handlesMissingTitle | 2ms |
| โ | ProblemReportEmailTests | testGenerateBody_containsDeviceIdiom | 7ms |
| โ | ProblemReportEmailTests | testGenerateBody_includesEnvironmentFieldsInExpectedStructure | 10ms |
| โ | ProblemReportEmailTests | testGenerateBody_withBook_containsBookInfo | 17ms |
| โ | ProblemReportEmailTests | testGenerateBody_withoutBook_doesNotContainBookInfo | 10ms |
| โ | ProblemReportEmailTests | testPP3651_generateBody_doesNotLeakOtherLibrarysPatronIDWhenNilPassed | 9ms |
| โ | ProblemReportEmailTests | testPP3651_generateBody_includesPatronIDOnlyWhenProvided | 16ms |
| โ | ProblemReportEmailTests | testPP3651_generateBody_patronID_appearsAfterSeparator | 8ms |
| โ | ProblemReportEmailTests | testPP3651_generateBody_withBookAndPatronID_containsBothBookAndPatronInfo | 27ms |
| โ | ReachabilityTests | testGetDetailedConnectivityStatus_returnsNonEmptyFields | 5ms |
| โ | ReachabilityTests | testIsConnected_methodAndPropertyAgreeAndAreStable | 6ms |
| โ | ReaderAccessibilityTests | testBookmarkToggleLabels_areDistinctAndDescriptive | 2ms |
| โ | ReaderAccessibilityTests | testBookmarksTabLabel_isDescriptive | 3ms |
| โ | ReaderAccessibilityTests | testChapterNavigationLabels_areDistinct | 4ms |
| โ | ReaderAccessibilityTests | testCloseSampleLabel_isDescriptive | 3ms |
| โ | ReaderAccessibilityTests | testPDFPickerSegmentLabels_areDistinct | 3ms |
| โ | ReaderAccessibilityTests | testPagePreviewsLabel_isDescriptive | 2ms |
| โ | ReaderAccessibilityTests | testTableOfContentsLabel_isDescriptive | 2ms |
| โ | ReaderErrorTests | testEpubNotValid_conformsToLocalizedError | 2ms |
| โ | ReaderErrorTests | testEpubNotValid_hasErrorDescription | 2ms |
| โ | ReaderErrorTests | testErrors_haveDifferentDescriptions | 2ms |
| โ | ReaderErrorTests | testFormatNotSupported_conformsToLocalizedError | 2ms |
| โ | ReaderErrorTests | testFormatNotSupported_hasErrorDescription | 2ms |
| โ | ReaderServiceSyncTests | testLastReadPositionSynchronizer_canBeCreated | 8ms |
| โ | ReaderServiceSyncTests | testLastReadPositionSynchronizer_syncDoesNotCrash_withDeviceID | 81ms |
| โ | ReaderServiceSyncTests | testLastReadPositionSynchronizer_syncReturns_whenNoServerPosition | 7ms |
| โ | ReaderThemeTests | testAllCases_containsExactly5Themes | 88ms |
| โ | ReaderThemeTests | testAllCases_containsExpectedThemes | 2ms |
| โ | ReaderThemeTests | testAllThemes_haveCSSHexBackgrounds | 2ms |
| โ | ReaderThemeTests | testAllThemes_haveCSSHexTextColors | 5ms |
| โ | ReaderThemeTests | testAllThemes_haveValidBackgroundColors | 5ms |
| โ | ReaderThemeTests | testAllThemes_haveValidTextColors | 71ms |
| โ | ReaderThemeTests | testCSSHex_matchesExpectedFormat | 7ms |
| โ | ReaderThemeTests | testCodable_preservesAllProperties | 3ms |
| โ | ReaderThemeTests | testCodable_roundTrip | 6ms |
| โ | ReaderThemeTests | testDarkTheme_darkBackground | 3ms |
| โ | ReaderThemeTests | testDarkTheme_hasDarkBackground | 3ms |
| โ | ReaderThemeTests | testDarkTheme_hasLightText | 3ms |
| โ | ReaderThemeTests | testEachThemeID_isUnique | 3ms |
| โ | ReaderThemeTests | testEquatable_differentThemesAreNotEqual | 6ms |
| โ | ReaderThemeTests | testEquatable_sameThemesAreEqual | 7ms |
| โ | ReaderThemeTests | testLightTheme_hasDarkText | 2ms |
| โ | ReaderThemeTests | testLightTheme_hasLightBackground | 2ms |
| โ | ReaderThemeTests | testLightTheme_whiteBackground | 3ms |
| โ | ReaderThemeTests | testNightTheme_hasDarkBackground | 2ms |
| โ | ReaderThemeTests | testNightTheme_hasLightText | 4ms |
| โ | ReaderThemeTests | testNightTheme_nearBlackBackground | 6ms |
| โ | ReaderThemeTests | testSepiaTheme_hasDarkText | 14ms |
| โ | ReaderThemeTests | testSepiaTheme_hasLightBackground | 2ms |
| โ | ReaderThemeTests | testSolarizedTheme_hasLightBackground | 2ms |
| โ | ReadingPositionTests | testAudiobookPosition_CodableRoundTrip | 3ms |
| โ | ReadingPositionTests | testAudiobookPosition_NegativeTimeOffset_ClampedToZero | 2ms |
| โ | ReadingPositionTests | testAudiobookPosition_SetsFormatAndFields | 2ms |
| โ | ReadingPositionTests | testAudiobookPosition_ZeroTimeOffset | 2ms |
| โ | ReadingPositionTests | testDeviceID_IsPopulated | 1ms |
| โ | ReadingPositionTests | testDisplayDescription_Audiobook | 2ms |
| โ | ReadingPositionTests | testDisplayDescription_Epub | 8ms |
| โ | ReadingPositionTests | testDisplayDescription_Pdf | 2ms |
| โ | ReadingPositionTests | testEpubPosition_CodableRoundTrip | 2ms |
| โ | ReadingPositionTests | testEpubPosition_ProgressBoundary0 | 2ms |
| โ | ReadingPositionTests | testEpubPosition_ProgressBoundary1 | 3ms |
| โ | ReadingPositionTests | testEpubPosition_ProgressClampedAbove1 | 2ms |
| โ | ReadingPositionTests | testEpubPosition_ProgressClampedBelow0 | 3ms |
| โ | ReadingPositionTests | testEpubPosition_SetsFormatAndFields | 2ms |
| โ | ReadingPositionTests | testEquality_DifferentChapter_NotEqual | 2ms |
| โ | ReadingPositionTests | testEquality_DifferentFormat_NotEqual | 2ms |
| โ | ReadingPositionTests | testEquality_SamePosition | 2ms |
| โ | ReadingPositionTests | testPdfPosition_CodableRoundTrip | 2ms |
| โ | ReadingPositionTests | testPdfPosition_NegativePageNumber_ClampedTo1 | 4ms |
| โ | ReadingPositionTests | testPdfPosition_PageNumberClampedToMinimum1 | 1ms |
| โ | ReadingPositionTests | testPdfPosition_SetsFormatAndFields | 3ms |
| โ | ReadingPositionTests | testReadingFormat_CodableRoundTrip | 2ms |
| โ | ReadingSessionTrackerTests | testActiveBookID_NilInitially | 5ms |
| โ | ReadingSessionTrackerTests | testEndSession_FiltersBriefSessions | 23ms |
| โ | ReadingSessionTrackerTests | testEndSession_StopsTracking | 5ms |
| โ | ReadingSessionTrackerTests | testEndSession_WithoutStartSession_DoesNotCrash | 3ms |
| โ | ReadingSessionTrackerTests | testEndSession_WithoutStartSession_DoesNotRecordSession | 6ms |
| โ | ReadingSessionTrackerTests | testIsTracking_FalseInitially | 4ms |
| โ | ReadingSessionTrackerTests | testMultipleCycles_WorkCorrectly | 104ms |
| โ | ReadingSessionTrackerTests | testPageCount_ResetsBetweenSessions | 3ms |
| โ | ReadingSessionTrackerTests | testRecordBookFinished_RecordsCompletion | 56ms |
| โ | ReadingSessionTrackerTests | testRecordBookFinished_TriggersBadgeRefresh | 58ms |
| โ | ReadingSessionTrackerTests | testRecordPageTurn_IncrementsPageCount | 3ms |
| โ | ReadingSessionTrackerTests | testStartSession_BeginsTracking | 6ms |
| โ | ReadingSessionTrackerTests | testStartSession_EndsExistingSession | 2ms |
| โ | ReadingStatsServiceTests | testAggregateStats | 6ms |
| โ | ReadingStatsServiceTests | testAggregateStatsTimePeriodFilter | 6ms |
| โ | ReadingStatsServiceTests | testChartDataEmpty | 4ms |
| โ | ReadingStatsServiceTests | testChartDataWeek | 111ms |
| โ | ReadingStatsServiceTests | testDuplicateCompletionIgnored | 6ms |
| โ | ReadingStatsServiceTests | testRecordBookCompletion | 3ms |
| โ | ReadingStatsServiceTests | testRecordMultipleSessions | 4ms |
| โ | ReadingStatsServiceTests | testRecordSession | 6ms |
| โ | ReadingStatsServiceTests | testRecordSessionIgnoresZeroDuration | 4ms |
| โ | ReadingStatsServiceTests | testStreakRecalculation | 7ms |
| โ | ReadingStatsServiceTests | testStreakResetsAfterGap | 162ms |
| โ | ReadingStatsServiceTests | testStreakUpdatesOnSession | 4ms |
| โ | ReadingStatsStoreTests | testClearAll | 12ms |
| โ | ReadingStatsStoreTests | testLoadSessionsEmpty | 8ms |
| โ | ReadingStatsStoreTests | testLoadStreakDefault | 6ms |
| โ | ReadingStatsStoreTests | testMigrationSetsVersion | 9ms |
| โ | ReadingStatsStoreTests | testMultipleSessions | 18ms |
| โ | ReadingStatsStoreTests | testSaveAndLoadCompletions | 10ms |
| โ | ReadingStatsStoreTests | testSaveAndLoadEarnedBadges | 20ms |
| โ | ReadingStatsStoreTests | testSaveAndLoadSessions | 5ms |
| โ | ReadingStatsStoreTests | testSaveAndLoadStreak | 12ms |
| โ | RedirectHandlingIntegrationTests | testRedirect_attemptsCleared_afterCompletion | 8ms |
| โ | RedirectHandlingIntegrationTests | testRedirect_httpsToHttp_blockedForSecurity | 4ms |
| โ | RedirectHandlingIntegrationTests | testRedirect_httpsToHttps_allowed | 3ms |
| โ | RedirectHandlingIntegrationTests | testRedirect_maxAttempts_enforced | 6ms |
| โ | RedirectPolicyTests | testDecide_AboveMax_StillReturnsNil | 10ms |
| โ | RedirectPolicyTests | testDecide_AtMaxAttempts_ReturnsNilAndDoesNotIncrement | 85ms |
| โ | RedirectPolicyTests | testDecide_CounterIsPerTask | 4ms |
| โ | RedirectPolicyTests | testDecide_CustomMaxAttempts_Honored | 8ms |
| โ | RedirectPolicyTests | testDecide_HTTPSToHTTPS_Allowed | 9ms |
| โ | RedirectPolicyTests | testDecide_HTTPSToHTTP_ReturnsNilButHasIncremented | 12ms |
| โ | RedirectPolicyTests | testDecide_HTTPToAnything_NotADowngrade | 7ms |
| โ | RedirectPolicyTests | testDecide_NilOriginalScheme_NotTreatedAsDowngrade | 10ms |
| โ | RedirectPolicyTests | testDecide_OneBelowMax_AllowsAndIncrements | 61ms |
| โ | RemoteFeatureFlagsGapTests | testRemoteFeatureFlags_convenienceProperties_dontCrash | 9ms |
| โ | RemoteFeatureFlagsGapTests | testRemoteFeatureFlags_fetchIfNeeded_completesWithoutCrashing | 11ms |
| โ | RemoteFeatureFlagsGapTests | testRemoteFeatureFlags_isFeatureEnabled_returnsBoolean | 3ms |
| โ | RemoteFeatureFlagsGapTests | testRemoteFeatureFlags_shared_isAccessible | 97ms |
| โ | RemoteFeatureFlagsTests | testFeatureFlag_allCases_haveNonEmptyRawValues | 3ms |
| โ | RemoteFeatureFlagsTests | testFeatureFlag_defaultValues_areDefined | 2ms |
| โ | RemoteFeatureFlagsTests | testFetchIfNeeded_doesNotCrash | 19ms |
| โ | RemoteFeatureFlagsTests | testGetDeviceInfo_containsVersionInfo | 11ms |
| โ | RemoteFeatureFlagsTests | testGetDeviceInfo_returnsNonEmptyDict | 4ms |
| โ | RemoteFeatureFlagsTests | testIsCarPlayEnabledCached_returnsBool | 3ms |
| โ | RemoteFeatureFlagsTests | testIsFeatureEnabled_withoutFirebase_returnsDefault | 6ms |
| โ | RemoteFeatureFlagsTests | testIsResetAccountEnabled_defaultsOff_withoutOverrideOrFirebase | 4ms |
| โ | RemoteFeatureFlagsTests | testIsResetAccountEnabled_localOverrideFalse_disablesFlag | 9ms |
| โ | RemoteFeatureFlagsTests | testIsResetAccountEnabled_localOverrideTrue_enablesFlag | 6ms |
| โ | RemoteFeatureFlagsTests | testResetAccountEnabled_supportsDeviceSpecificOverride | 3ms |
| โ | RemoteFeatureFlagsTests | testShared_isNotNil | 11ms |
| โ | RemoteFeatureFlagsTests | testShared_returnsSameInstance | 6ms |
| โ | RetryClassificationTests | testAudiobookErrors_notRetryable | 2ms |
| โ | RetryClassificationTests | testAudiobookErrors_retryable | 2ms |
| โ | RetryClassificationTests | testAuthErrors_notRetryable | 2ms |
| โ | RetryClassificationTests | testAuthErrors_retryable | 2ms |
| โ | RetryClassificationTests | testBookRegistryErrors_notRetryable | 2ms |
| โ | RetryClassificationTests | testBookRegistryErrors_retryable | 2ms |
| โ | RetryClassificationTests | testDRMErrors_notRetryable | 1ms |
| โ | RetryClassificationTests | testDownloadErrors_notRetryable | 2ms |
| โ | RetryClassificationTests | testDownloadErrors_retryable | 2ms |
| โ | RetryClassificationTests | testNSURLError_notRetryable | 2ms |
| โ | RetryClassificationTests | testNSURLError_retryable | 2ms |
| โ | RetryClassificationTests | testNetworkErrors_notRetryable | 2ms |
| โ | RetryClassificationTests | testNetworkErrors_retryable | 2ms |
| โ | RetryClassificationTests | testParsingErrors_notRetryable | 2ms |
| โ | RetryClassificationTests | testParsingErrors_retryable | 3ms |
| โ | RetryClassificationTests | testStorageErrors_notRetryable | 2ms |
| โ | RetryClassificationTests | testUnknownError_notRetryable | 3ms |
| โ | ReturnFlowTests | testRetryTracker_limitsRetries | 3ms |
| โ | RightsManagementDetectionTests | testMimeType_adobeAdept_detectsAdobeRights | 4ms |
| โ | RightsManagementDetectionTests | testMimeType_bearerToken_detectsBearerTokenRights | 2ms |
| โ | RightsManagementDetectionTests | testMimeType_epubZip_detectsNoRights | 4ms |
| โ | RightsManagementDetectionTests | testMimeType_lcpLicense_detectsLCPRights | 2ms |
| โ | RightsManagementDetectionTests | testMimeType_unknown_detectsUnknown | 2ms |
| โ | RightsManagementDispatcherTests | testDispatch_adobePDF_returnsFailureWithIgnoreError | 59ms |
| โ | RightsManagementDispatcherTests | testDispatch_bearerToken_invalidJSON_failsWithAlert | 13ms |
| โ | RightsManagementDispatcherTests | testDispatch_bearerToken_missingFile_failsWithAlert | 6ms |
| โ | RightsManagementDispatcherTests | testDispatch_bearerToken_validJSON_registersNewTaskInState | 19ms |
| โ | RightsManagementDispatcherTests | testDispatch_lcp_callsLcpFulfillmentAndDoesNotFlagFailure | 12ms |
| โ | RightsManagementDispatcherTests | testDispatch_none_moveFileFails_flagsFailure | 8ms |
| โ | RightsManagementDispatcherTests | testDispatch_none_moveFileSuccess_doesNotFlagFailure | 6ms |
| โ | RightsManagementDispatcherTests | testDispatch_overdrive_replaceBookFails_flagsFailure | 6ms |
| โ | RightsManagementDispatcherTests | testDispatch_overdrive_replaceBookSuccess_doesNotFlagFailure | 6ms |
| โ | RightsManagementDispatcherTests | testDispatch_unknown_logsAndFlagsFailure | 7ms |
| โ | SAMLCookieSyncTests | testCookieSyncToSharedStorage | 3ms |
| โ | SAMLCookieSyncTests | testCookieSync_emptyCookies_doesNotCrash | 2ms |
| โ | SAMLCookieSyncTests | testCookieSync_multipleCookies | 3ms |
| โ | SAMLCookieSyncTests | testCookieSync_replacesExistingCookie | 3ms |
| โ | SAMLCookieSyncTests | testRequestCreation_includesCookieHeader | 3ms |
| โ | SAMLHelperTests | testLogInWithNilBusinessLogicDoesNotCrash | 466ms |
| โ | SAMLHelperTests | testSAMLHelperCanBeInstantiated | 2ms |
| โ | SAMLHelperTests | testSAMLLoginURLConstruction | 5ms |
| โ | SAMLHelperTests | testSAMLLoginURLConstructionWithNoExistingParams | 2ms |
| โ | SAMLHelperTests | testSAMLLoginURLPreservesExistingQueryParams | 3ms |
| โ | SAMLLogoutCallbackDetectionTests | testCallbackSchemeError_DetectedAsSuccess | 2ms |
| โ | SAMLLogoutCallbackDetectionTests | testCallbackSchemeError_PartialStatus_AlsoDetected | 2ms |
| โ | SAMLLogoutCallbackDetectionTests | testOIDCCallbackScheme_NotSAMLDetected | 2ms |
| โ | SAMLLogoutCallbackDetectionTests | testUnrelatedError_NotDetected | 4ms |
| โ | SAMLLogoutLinkParsingTests | testRegression_OIDCLogoutHref_StillPopulated | 117ms |
| โ | SAMLLogoutLinkParsingTests | testSAMLAuth_ParsesLogoutHrefIsTemplated_True | 3ms |
| โ | SAMLLogoutLinkParsingTests | testSAMLAuth_ParsesLogoutHref_FromAuthDocument | 4ms |
| โ | SAMLLogoutLinkParsingTests | testSAMLAuth_WithoutLogoutLink_LeavesHrefNil | 4ms |
| โ | SAMLLogoutLinkParsingTests | testSAMLLogoutHref_IsNil_ForBasicAuth | 4ms |
| โ | SAMLLogoutURLTests | testSAMLLogoutURL_CallbackSchemeIsPalaceSAML | 2ms |
| โ | SAMLLogoutURLTests | testSAMLLogoutURL_ExpandsTemplateWithRedirectURI | 2ms |
| โ | SAMLLogoutURLTests | testSAMLLogoutURL_InvalidTemplate_ReturnsNil | 7ms |
| โ | SAMLLogoutURLTests | testSAMLLogoutURL_NonTemplated_UsedAsIs | 2ms |
| โ | SAMLPlusBiblioBoardExpirationTests | testShouldTriggerSAMLReauth_AuthRequiredError_SAML_Credentials_Book_ReturnsTrue | 99ms |
| โ | SAMLPlusBiblioBoardExpirationTests | testShouldTriggerSAMLReauth_BasicAuth_ReturnsFalse | 101ms |
| โ | SAMLPlusBiblioBoardExpirationTests | testShouldTriggerSAMLReauth_NilCurrentBook_ReturnsFalse | 93ms |
| โ | SAMLPlusBiblioBoardExpirationTests | testShouldTriggerSAMLReauth_NilError_ReturnsFalse | 86ms |
| โ | SAMLPlusBiblioBoardExpirationTests | testShouldTriggerSAMLReauth_NoCredentials_ReturnsFalse | 76ms |
| โ | SAMLPlusBiblioBoardExpirationTests | testShouldTriggerSAMLReauth_OAuthAccount_ReturnsFalse | 144ms |
| โ | SAMLPlusBiblioBoardExpirationTests | testShouldTriggerSAMLReauth_WrongErrorCode_ReturnsFalse | 95ms |
| โ | SAMLPlusBiblioBoardExpirationTests | testShouldTriggerSAMLReauth_WrongErrorDomain_ReturnsFalse | 98ms |
| โ | SEMigrationsTests | testMigrate2_oldCacheFiles_areRemoved | 44ms |
| โ | SEMigrationsTests | testMigrate3_1_0_backupExclusion_isDispatchedForOldVersion | 12ms |
| โ | SEMigrationsTests | testMigrate3_1_0_backupExclusion_isSkippedForCurrentVersion | 6ms |
| โ | SEMigrationsTests | testRunMigrations_doesNotCrashAndDoesNotMutateAppVersionWhenNoMigrationsApply | 7ms |
| โ | SEMigrationsTests | testRunMigrations_multipleCallsAreSafe | 46ms |
| โ | SEMigrationsTests | testRunMigrations_nilOrEmptyVersion_handlesGracefullyWithoutCrashing | 29ms |
| โ | SafeDictionaryTests | testAllPairs_returnsAllKeyValuePairs | 3ms |
| โ | SafeDictionaryTests | testCompactMapValues_removesNils | 5ms |
| โ | SafeDictionaryTests | testContains_existingKey_returnsTrue | 5ms |
| โ | SafeDictionaryTests | testCount_reflectsEntries | 3ms |
| โ | SafeDictionaryTests | testFilter_selectsMatchingEntries | 3ms |
| โ | SafeDictionaryTests | testGetMetrics_returnsMetricsDictionary | 4ms |
| โ | SafeDictionaryTests | testGet_missingKey_returnsNil | 4ms |
| โ | SafeDictionaryTests | testInit_withInitialValues | 3ms |
| โ | SafeDictionaryTests | testIsEmpty_noEntries_returnsTrue | 6ms |
| โ | SafeDictionaryTests | testKeys_returnsAllKeys | 3ms |
| โ | SafeDictionaryTests | testMapValues_transformsValues | 5ms |
| โ | SafeDictionaryTests | testModify_createsNewValue | 6ms |
| โ | SafeDictionaryTests | testModify_updatesExistingValue | 3ms |
| โ | SafeDictionaryTests | testRemoveAll_clearsEverything | 41ms |
| โ | SafeDictionaryTests | testRemoveMultiple_removesSpecifiedKeys | 5ms |
| โ | SafeDictionaryTests | testRemove_deletesEntry | 5ms |
| โ | SafeDictionaryTests | testRemove_missingKey_returnsNil | 4ms |
| โ | SafeDictionaryTests | testSet_andGet_returnsValue | 55ms |
| โ | SafeDictionaryTests | testSet_overwrite_updatesValue | 3ms |
| โ | SafeDictionaryTests | testUpdateMultiple_addsAllEntries | 3ms |
| โ | SafeDictionaryTests | testValues_returnsAllValues | 7ms |
| โ | SamplePlayerErrorTests | testFileSaveFailed_WithUnderlyingError | 2ms |
| โ | SamplePlayerErrorTests | testFileSaveFailed_WithoutUnderlyingError | 2ms |
| โ | SamplePlayerErrorTests | testNoSampleAvailable_IsError | 5ms |
| โ | SamplePlayerErrorTests | testSampleDownloadFailed_WithUnderlyingError | 2ms |
| โ | SamplePlayerErrorTests | testSampleDownloadFailed_WithoutUnderlyingError | 2ms |
| โ | SampleTypeTests | testNeedsDownload_EpubZip_ReturnsTrue | 3ms |
| โ | SampleTypeTests | testNeedsDownload_OpenAccessAudiobook_ReturnsFalse | 5ms |
| โ | SampleTypeTests | testNeedsDownload_OverdriveAudiobookMpeg_ReturnsTrue | 2ms |
| โ | SampleTypeTests | testNeedsDownload_OverdriveAudiobookWaveFile_ReturnsTrue | 3ms |
| โ | SampleTypeTests | testNeedsDownload_OverdriveWeb_ReturnsFalse | 4ms |
| โ | SampleTypeTests | testRawValue_ContentTypeEpubZip | 5ms |
| โ | SampleTypeTests | testRawValue_OpenAccessAudiobook | 2ms |
| โ | SampleTypeTests | testRawValue_OverdriveWeb | 3ms |
| โ | SceneDelegateTests | testSceneDelegate_HasMainSceneConnected_IsConsistent | 2ms |
| โ | SearchAccessibilityTests | testClearSearchLabel_isDescriptive | 2ms |
| โ | SearchAccessibilityTests | testClearSearchLabel_isLocalized | 3ms |
| โ | SearchAccessibilityTests | testGoBackLabel_isDescriptive | 3ms |
| โ | SearchAccessibilityTests | testSearchBooksLabel_exists | 9ms |
| โ | SearchAccessibilityTests | testSearchCatalogLabel_differsFromSearchInBook | 2ms |
| โ | SearchAccessibilityTests | testSearchInBookLabel_isDescriptive | 3ms |
| โ | SearchFlowIntegrationTests | testSearchCancellation_StopsPendingRequest | 56ms |
| โ | SearchFlowIntegrationTests | testSearchDebouncing_PreventsExcessiveRequests | 6ms |
| โ | SearchFlowIntegrationTests | testSearchQuery_DispatchesToCatalogRepository | 6ms |
| โ | SearchFlowIntegrationTests | testSearchResults_ContainExpectedBookData | 3ms |
| โ | SearchFlowIntegrationTests | testSearchWithEmptyQuery_ReturnsNilResult | 6ms |
| โ | SearchFlowIntegrationTests | testSearchWithNetworkError_PropagatesError | 7ms |
| โ | SearchFlowIntegrationTests | testSearchWithServerError_PropagatesServerError | 4ms |
| โ | SearchFlowIntegrationTests | testSequentialSearches_TrackAllQueries | 4ms |
| โ | SettingsViewModelComputedPropertyTests | testAccountCount_ReflectsSettingsAccountsList | 3ms |
| โ | SettingsViewModelComputedPropertyTests | testDuplicateWrite_DoesNotTriggerSettingsUpdate | 6ms |
| โ | SettingsViewModelComputedPropertyTests | testIsUsingCustomFeed_AfterClear_ReturnsFalse | 3ms |
| โ | SettingsViewModelComputedPropertyTests | testIsUsingCustomRegistry_AfterClear_ReturnsFalse | 2ms |
| โ | SettingsViewModelComputedPropertyTests | testShowDeveloperSettings_CanBeToggled | 4ms |
| โ | SettingsViewModelComputedPropertyTests | testShowDeveloperSettings_DefaultsFalse | 2ms |
| โ | SettingsViewModelEdgeCaseTests | testSettingsViewModel_InitWithPartialSettings_HandlesGracefully | 4ms |
| โ | SettingsViewModelEdgeCaseTests | testSettingsViewModel_MultipleRapidChanges_MaintainsConsistency | 8ms |
| โ | SettingsViewModelEdgeCaseTests | testSettingsViewModel_ResetThenModify_WorksCorrectly | 4ms |
| โ | SettingsViewModelEdgeCaseTests | testSettingsViewModel_SetCustomFeedURL_LocalhostHTTP_ReturnsTrue | 3ms |
| โ | SettingsViewModelEdgeCaseTests | testSettingsViewModel_SetCustomFeedURL_URLWithFragment_ReturnsTrue | 5ms |
| โ | SettingsViewModelEdgeCaseTests | testSettingsViewModel_SetCustomFeedURL_URLWithPort_ReturnsTrue | 3ms |
| โ | SettingsViewModelEdgeCaseTests | testSettingsViewModel_SetCustomFeedURL_URLWithQueryParams_ReturnsTrue | 3ms |
| โ | SettingsViewModelGapTests | testSettingsViewModel_refreshAccountsList_updatesProperty | 7ms |
| โ | SettingsViewModelSyncTests | testResetToDefaults_ClearsAllSettings | 6ms |
| โ | SettingsViewModelSyncTests | testResetToDefaults_UpdatesSettingsProvider | 5ms |
| โ | SettingsViewModelSyncTests | testSetCustomFeedURL_WithEmptyString_ClearsURL | 4ms |
| โ | SettingsViewModelSyncTests | testSetCustomFeedURL_WithInvalidURL_ReturnsFalse | 4ms |
| โ | SettingsViewModelSyncTests | testSetCustomFeedURL_WithNil_ClearsURL | 6ms |
| โ | SettingsViewModelSyncTests | testSetCustomFeedURL_WithNonHttpScheme_ReturnsFalse | 5ms |
| โ | SettingsViewModelSyncTests | testSetCustomFeedURL_WithValidHttpURL_ReturnsTrue | 3ms |
| โ | SettingsViewModelSyncTests | testSetCustomFeedURL_WithValidHttpsURL_ReturnsTrue | 3ms |
| โ | SettingsViewModelSyncTests | testSetCustomRegistryServer_WithEmptyString_ReturnsTrueAndClears | 3ms |
| โ | SettingsViewModelSyncTests | testSetCustomRegistryServer_WithNil_ClearsServer | 5ms |
| โ | SettingsViewModelSyncTests | testSetCustomRegistryServer_WithValidURL_ReturnsTrue | 4ms |
| โ | SettingsViewModelSyncTests | testSettingsViewModel_BidirectionalSync_SettingsToViewModelViaRefresh | 5ms |
| โ | SettingsViewModelSyncTests | testSettingsViewModel_BidirectionalSync_ViewModelToSettings | 4ms |
| โ | SettingsViewModelSyncTests | testSettingsViewModel_ExternalSettingsChange_RequiresRefresh | 4ms |
| โ | SettingsViewModelTests | testSettingsViewModel_AcceptEULA_SetsTrue | 6ms |
| โ | SettingsViewModelTests | testSettingsViewModel_ClearCustomFeedURL_ClearsURL | 17ms |
| โ | SettingsViewModelTests | testSettingsViewModel_ClearCustomRegistryServer_ClearsServer | 5ms |
| โ | SettingsViewModelTests | testSettingsViewModel_CustomMainFeedURL_PublishesChanges | 5ms |
| โ | SettingsViewModelTests | testSettingsViewModel_FormattedAppVersion_ReturnsFormattedString | 5ms |
| โ | SettingsViewModelTests | testSettingsViewModel_Init_DefaultsAreCorrect | 3ms |
| โ | SettingsViewModelTests | testSettingsViewModel_Init_ReadsSettingsFromProvider | 2ms |
| โ | SettingsViewModelTests | testSettingsViewModel_IsUsingCustomFeed_FalseWhenURLNil | 5ms |
| โ | SettingsViewModelTests | testSettingsViewModel_IsUsingCustomFeed_TrueWhenURLSet | 6ms |
| โ | SettingsViewModelTests | testSettingsViewModel_IsUsingCustomRegistry_FalseWhenServerEmpty | 3ms |
| โ | SettingsViewModelTests | testSettingsViewModel_IsUsingCustomRegistry_FalseWhenServerNil | 2ms |
| โ | SettingsViewModelTests | testSettingsViewModel_IsUsingCustomRegistry_TrueWhenServerSet | 2ms |
| โ | SettingsViewModelTests | testSettingsViewModel_MarkAgeCheckPresented_SetsTrue | 4ms |
| โ | SettingsViewModelTests | testSettingsViewModel_RefreshSettings_ReloadsFromProvider | 3ms |
| โ | SettingsViewModelTests | testSettingsViewModel_ResetToDefaults_ResetsAllSettings | 3ms |
| โ | SettingsViewModelTests | testSettingsViewModel_SetCustomFeedURL_EmptyString_ClearsURL | 3ms |
| โ | SettingsViewModelTests | testSettingsViewModel_SetCustomFeedURL_InvalidScheme_ReturnsFalse | 9ms |
| โ | SettingsViewModelTests | testSettingsViewModel_SetCustomFeedURL_InvalidURL_ReturnsFalse | 2ms |
| โ | SettingsViewModelTests | testSettingsViewModel_SetCustomFeedURL_Nil_ClearsURL | 7ms |
| โ | SettingsViewModelTests | testSettingsViewModel_SetCustomFeedURL_ValidHTTPS_ReturnsTrue | 6ms |
| โ | SettingsViewModelTests | testSettingsViewModel_SetCustomFeedURL_ValidHTTP_ReturnsTrue | 3ms |
| โ | SettingsViewModelTests | testSettingsViewModel_SetCustomRegistryServer_EmptyString_ClearsServer | 3ms |
| โ | SettingsViewModelTests | testSettingsViewModel_SetCustomRegistryServer_InvalidURL_ReturnsFalse | 4.69s |
| โ | SettingsViewModelTests | testSettingsViewModel_SetCustomRegistryServer_ValidURL_ReturnsTrue | 3ms |
| โ | SettingsViewModelTests | testSettingsViewModel_SetEnterLCPPassphraseManually_UpdatesSettings | 4ms |
| โ | SettingsViewModelTests | testSettingsViewModel_SetSameValue_DoesNotWriteToSettings | 3ms |
| โ | SettingsViewModelTests | testSettingsViewModel_SetUseBetaLibraries_UpdatesSettings | 3ms |
| โ | SettingsViewModelTests | testSettingsViewModel_SetUserHasAcceptedEULA_UpdatesSettings | 6ms |
| โ | SettingsViewModelTests | testSettingsViewModel_SetUserPresentedAgeCheck_UpdatesSettings | 2ms |
| โ | SettingsViewModelTests | testSettingsViewModel_ToggleBetaLibraries_TogglesValue | 4ms |
| โ | SettingsViewModelTests | testSettingsViewModel_ToggleLCPManualPassphrase_TogglesValue | 6ms |
| โ | SettingsViewModelTests | testSettingsViewModel_UpdateAppVersion_UpdatesSettings | 6ms |
| โ | SettingsViewModelTests | testSettingsViewModel_UseBetaLibraries_PublishesChanges | 9ms |
| โ | SignInModalSAMLOIDCTests | testBorrowReauthGuard_allBookStates | 2ms |
| โ | SignInModalSAMLOIDCTests | testBorrowReauthGuard_downloadNeededBook_blocksReauth | 6ms |
| โ | SignInModalSAMLOIDCTests | testBorrowReauthGuard_unregisteredBook_allowsReauth | 4ms |
| โ | SignInModalSAMLOIDCTests | testNeedsAuth_allAuthTypes | 2ms |
| โ | SignInModalSAMLOIDCTests | testNeedsAuth_consistencyBetweenTwoImplementations | 3ms |
| โ | SignInModalSAMLOIDCTests | testSignInModalGuard_needsAuth_classifiesAuthTypesCorrectly | 4ms |
| โ | SignInWebSheetIntegrationTests | test_initialLoad_injectsCookiesBeforeLoadingRequest | 127ms |
| โ | SignInWebSheetIntegrationTests | test_loadingOverlay_startsTrueAndBecomesFalseOnNavigationFinish | 1.89s |
| โ | SignInWebSheetIntegrationTests | test_navigatingToUniversalLinksURL_firesLoginCompletionWithCookies | 1.10s |
| โ | SignInWebSheetViewModelTests | test_autoPresentIfNeeded_canBeTrue | 2ms |
| โ | SignInWebSheetViewModelTests | test_autoPresentIfNeeded_defaultsToFalse | 2ms |
| โ | SignInWebSheetViewModelTests | test_bookFoundThenCancel_doesNotFireCancel | 2ms |
| โ | SignInWebSheetViewModelTests | test_cancelThenLoginCompletion_doesNotFireLogin | 5ms |
| โ | SignInWebSheetViewModelTests | test_cookieInjection_emptyCookies_loadsRequestImmediately | 7ms |
| โ | SignInWebSheetViewModelTests | test_cookieInjection_loadHandlerOnlyFiresAfterAllCookiesInjected | 3ms |
| โ | SignInWebSheetViewModelTests | test_cookieInjection_orderPreserved | 4ms |
| โ | SignInWebSheetViewModelTests | test_decideAction_loginCompletionURL_isStillRecordedAsPreviousRequest | 2ms |
| โ | SignInWebSheetViewModelTests | test_decideAction_navigationToOtherURL_returnsAllow | 2ms |
| โ | SignInWebSheetViewModelTests | test_decideAction_navigationToUniversalLinksHostButDifferentPath_doesNotMatch | 2ms |
| โ | SignInWebSheetViewModelTests | test_decideAction_navigationToUniversalLinksURL_returnsCompleteLogin | 28ms |
| โ | SignInWebSheetViewModelTests | test_decideAction_recordsPreviousRequestForLaterBookFound | 9ms |
| โ | SignInWebSheetViewModelTests | test_decideResponse_htmlMime_returnsAllow | 4ms |
| โ | SignInWebSheetViewModelTests | test_decideResponse_nilMime_returnsAllow | 2ms |
| โ | SignInWebSheetViewModelTests | test_decideResponse_problemJsonMime_returnsProblemFound | 2ms |
| โ | SignInWebSheetViewModelTests | test_decideResponse_supportedBookMime_returnsBookFound | 2ms |
| โ | SignInWebSheetViewModelTests | test_decideResponse_unsupportedTypeNotInBookList_returnsAllow | 3ms |
| โ | SignInWebSheetViewModelTests | test_didFinishNavigation_setsLoadingFalse | 5ms |
| โ | SignInWebSheetViewModelTests | test_didStartProvisionalNavigation_resetsLoadingTrue | 3ms |
| โ | SignInWebSheetViewModelTests | test_isLoading_trueByDefault | 24ms |
| โ | SignInWebSheetViewModelTests | test_loginCompletionThenCancel_doesNotFireCancel | 23ms |
| โ | SignInWebSheetViewModelTests | test_problemThenCancel_doesNotFireCancel | 2ms |
| โ | SignInWebSheetViewModelTests | test_recordBookFound_invokesHandlerOnceWithPreviousRequestAndCookies | 3ms |
| โ | SignInWebSheetViewModelTests | test_recordBookFound_secondCallIgnored | 2ms |
| โ | SignInWebSheetViewModelTests | test_recordCancel_invokesHandlerOnce | 34ms |
| โ | SignInWebSheetViewModelTests | test_recordLoginCompletion_invokesHandlerOnceWithURLAndCookies | 2ms |
| โ | SignInWebSheetViewModelTests | test_recordLoginCompletion_secondCallIgnored | 1ms |
| โ | SignInWebSheetViewModelTests | test_recordProblem_invokesHandlerOnce | 4ms |
| โ | SignInWebSheetViewModelTests | test_wasBookFound_falseAfterOnlyLoginCompletion | 3ms |
| โ | SignInWebSheetViewModelTests | test_wasBookFound_falseInitially | 2ms |
| โ | SignInWebSheetViewModelTests | test_wasBookFound_trueAfterRecordBookFound | 2ms |
| โ | SignOutCacheClearingTests | testClearCache_doesNotCrash_andExecutorStaysReusable | 10ms |
| โ | SignOutCacheClearingTests | testNetworkExecutorAndSharedCache_areSeparate | 4ms |
| โ | SignOutCacheClearingTests | testURLCacheShared_clearIsIdempotentAndPreservesCapacity | 8ms |
| โ | StatsViewModelTests | testInitialState | 2ms |
| โ | StatsViewModelTests | testLoadPopulatesChartData | 14ms |
| โ | StatsViewModelTests | testLoadPopulatesStats | 6ms |
| โ | StatsViewModelTests | testLoadPopulatesStreak | 5ms |
| โ | StatsViewModelTests | testLongestStreakText | 2ms |
| โ | StatsViewModelTests | testRecentBadgesAfterCompletion | 10ms |
| โ | StatsViewModelTests | testRecentBadgesLimitedToFive | 6ms |
| โ | StatsViewModelTests | testStreakDisplayTextActive | 5ms |
| โ | StatsViewModelTests | testStreakDisplayTextNoStreak | 2ms |
| โ | StatsViewModelTests | testTimePeriodChangeUpdatesData | 217ms |
| โ | StatusAnnouncementTests | testPP3673_allAnnouncementTypes_areProgrammaticallyDeterminable | 5ms |
| โ | StatusAnnouncementTests | testPP3673_borrowFailed_announces | 5ms |
| โ | StatusAnnouncementTests | testPP3673_borrowLifecycle_producesSequentialAnnouncements | 5ms |
| โ | StatusAnnouncementTests | testPP3673_borrowStarted_announces | 3ms |
| โ | StatusAnnouncementTests | testPP3673_borrowSucceeded_announcesWithoutFocusShift | 3ms |
| โ | StatusAnnouncementTests | testPP3673_differentMessages_allAnnounced | 3ms |
| โ | StatusAnnouncementTests | testPP3673_downloadCompleted_announces | 4ms |
| โ | StatusAnnouncementTests | testPP3673_downloadFailed_announces | 10ms |
| โ | StatusAnnouncementTests | testPP3673_downloadStarted_announces | 9ms |
| โ | StatusAnnouncementTests | testPP3673_errorAnnouncement_doesNotMoveFocus | 3ms |
| โ | StatusAnnouncementTests | testPP3673_errorMessage_announcedViaVoiceOver | 4ms |
| โ | StatusAnnouncementTests | testPP3673_quickSuccession_sameMessage_collapsed | 4ms |
| โ | StatusAnnouncementTests | testPP3673_searchAnnouncement_usesAnnouncementNotification | 4ms |
| โ | StatusAnnouncementTests | testPP3673_searchFailed_announces | 3ms |
| โ | StatusAnnouncementTests | testPP3673_searchNoResults_announcesNoResults | 3ms |
| โ | StatusAnnouncementTests | testPP3673_searchRerun_announcesNewStatus | 7ms |
| โ | StatusAnnouncementTests | testPP3673_searchStrings_areLocalized | 4ms |
| โ | StatusAnnouncementTests | testPP3673_searchWithResults_announcesResultsForQuery | 4ms |
| โ | StatusAnnouncementTests | testPP3673_statusStrings_areUnderstandable | 6ms |
| โ | StatusAnnouncementTests | testPP3673_statusWithTitleAndMessage_isClear | 3ms |
| โ | StatusAnnouncementTests | testPP3673_updatedStatus_replacesOld | 8ms |
| โ | StatusAnnouncementTests | testPP3673_voiceOverDisabled_noAnnouncements | 2ms |
| โ | StopPositionSaveTests | testStop_bypassesSaveSuppression | 4ms |
| โ | StopPositionSaveTests | testStop_savesEvenDuringActiveSuppression | 9ms |
| โ | StoreTests | testEnvironment_substitution_changesEffectOutput | 3ms |
| โ | StoreTests | testReducer_canBeExercisedWithoutAStore | 2ms |
| โ | StoreTests | testSendAwait_runsEffectChainToCompletionBeforeReturning | 3ms |
| โ | StoreTests | testSend_effect_feedsFollowupActionThroughReducer | 31ms |
| โ | StoreTests | testSend_synchronousReducer_updatesStateBeforeReturning | 2ms |
| โ | StringExtensionTests | testMd5hex_differsByInput | 67ms |
| โ | StringExtensionTests | testMd5hex_emptyString | 7ms |
| โ | StringExtensionTests | testMd5hex_length | 5ms |
| โ | StringExtensionTests | testMd5hex_returnsConsistentHash | 806ms |
| โ | StringExtensionTests | testParseJSONString_arrayJSON | 7ms |
| โ | StringExtensionTests | testParseJSONString_emptyString | 4ms |
| โ | StringExtensionTests | testParseJSONString_invalidJSON | 6ms |
| โ | StringExtensionTests | testParseJSONString_validJSON | 5ms |
| โ | StringExtensionsTests | testIsDate_delayBoundary_isStrictGreaterThan | 74ms |
| โ | StringExtensionsTests | testIsDate_invalidOrEmptyStrings_returnFalse | 8ms |
| โ | StringExtensionsTests | testIsDate_temporalDirection_acrossSecondsDaysAndYears | 7ms |
| โ | StringHTMLEntitiesTests | testDecode_CommonHTMLEntities_DecodesCorrectly | 2ms |
| โ | StringHTMLEntitiesTests | testDecode_NumericDecimal_DecodesCorrectly | 17ms |
| โ | StringHTMLEntitiesTests | testDecode_NumericHex_DecodesCorrectly | 2ms |
| โ | StringHTMLEntitiesTests | testDecode_XMLPredefinedEntities_DecodesCorrectly | 2ms |
| โ | StringHTMLEntitiesTests | testDecode_malformedInputPreservedVerbatim | 6ms |
| โ | StringHTMLEntitiesTests | testDecode_passThroughAndMixedContentEdgeCases | 5ms |
| โ | StringHTMLEntitiesTests | testNSStringBridge_decodesEntitiesAndMixedContent | 2ms |
| โ | StringNYPLAdditionsTests | testStringContains_caseInsensitive | 3ms |
| โ | StringNYPLAdditionsTests | testStringIsEmpty_withWhitespace | 4ms |
| โ | StringNYPLAdditionsTests | testStringPrefix_matching | 2ms |
| โ | StringNYPLAdditionsTests | testStringSuffix_matching | 3ms |
| โ | String_NYPLAdditionsTests | testFileSystemSafeBase64_encodeAndDecodeRoundTripWithoutUnsafeChars | 5ms |
| โ | String_NYPLAdditionsTests | testMD5 | 3ms |
| โ | String_NYPLAdditionsTests | testSHA256 | 4ms |
| โ | String_NYPLAdditionsTests | testURLEncodingQueryParam | 2ms |
| โ | SyncConflictResolutionTests | testConflictResolution_localNewer_usesLocal | 3ms |
| โ | SyncConflictResolutionTests | testConflictResolution_sameTimestamp_usesHigherProgress | 3ms |
| โ | SyncConflictResolutionTests | testConflictResolution_serverNewer_usesServer | 2ms |
| โ | SyncDeletionGuardTests | testVersionComparison_emptyIsLessThan | 3ms |
| โ | SyncDeletionGuardTests | testVersionComparison_equal_returnsFalse | 3ms |
| โ | SyncDeletionGuardTests | testVersionComparison_sameMajor | 3ms |
| โ | SyncDeletionGuardTests | testVersionComparison_shorterIsLess | 4ms |
| โ | SyncDeletionGuardTests | testVersionComparison_shorterIsNotLess_ifZero | 5ms |
| โ | SyncDeletionRatioTests | testCompleteFeed_noDeletions | 2ms |
| โ | SyncDeletionRatioTests | testEmptyFeedWithLocalBooks_shouldSkipDeletion | 2ms |
| โ | SyncDeletionRatioTests | testEmptyFeedWithNoLocalBooks_shouldNotSkip | 2ms |
| โ | SyncDeletionRatioTests | testNormalSync_singleBookRemoved_noWarning | 2ms |
| โ | SyncDeletionRatioTests | testPartialFeed_shouldWarnButNotSkip | 2ms |
| โ | SyncDeletionRatioTests | testSmallLibrary_noProtection | 2ms |
| โ | SyncPermissionTests | testAccountDetails_nilDetails_makesSyncPropertiesFalse | 131ms |
| โ | SyncPermissionTests | testAccountDetails_syncProperties_matchExpectations | 116ms |
| โ | SyncPermissionTests | testSyncIsPossibleAndPermitted_doesNotCrash | 16ms |
| โ | SyncPermissionTests | testSyncIsPossible_withCredentials_dependsOnCurrentAccountDetails | 8ms |
| โ | SyncPermissionTests | testSyncIsPossible_withoutCredentials_returnsFalse | 8ms |
| โ | TPPAccountAuthStateEnumTests | testCodable_encodesAndDecodesCorrectly | 4ms |
| โ | TPPAccountAuthStateEnumTests | testDescription_returnsCorrectStrings | 14ms |
| โ | TPPAccountAuthStateEnumTests | testHasAdobeActivation_trueForLoggedInAndStale | 1ms |
| โ | TPPAccountAuthStateEnumTests | testHasStoredCredentials_falseOnlyForLoggedOut | 2ms |
| โ | TPPAccountAuthStateEnumTests | testNeedsReauthentication_trueForLoggedOutAndStale | 1ms |
| โ | TPPAccountListDataSourceTests | testLoadData_MixedCaseLibraryNames_SortsCaseInsensitively | 2ms |
| โ | TPPAccountListDataSourceTests | testLoadData_WithFilter_FiltersCaseInsensitively | 2ms |
| โ | TPPAccountListDataSourceTests | testLoadData_WithNationalAccounts_SeparatesAndSortsCaseInsensitively | 5ms |
| โ | TPPAdobeActivationSkipTests | testShouldSkipAdobeActivation_falseWhenLoggedIn | 113ms |
| โ | TPPAdobeActivationSkipTests | testShouldSkipAdobeActivation_falseWhenLoggedOut | 185ms |
| โ | TPPAdobeActivationSkipTests | testShouldSkipAdobeActivation_falseWhenStaleButAdobeNotAuthorized | 153ms |
| โ | TPPAdobeActivationSkipTests | testShouldSkipAdobeActivation_falseWhenStaleButNoAdobeCredentials | 92ms |
| โ | TPPAdobeActivationSkipTests | testShouldSkipAdobeActivation_trueWhenStaleAndAdobeAuthorized | 91ms |
| โ | TPPAdobeActivationSkipTests | testUpdateUserAccount_marksLoggedIn | 92ms |
| โ | TPPAgeCheckTests | testAge0 | 158ms |
| โ | TPPAgeCheckTests | testAge100 | 188ms |
| โ | TPPAgeCheckTests | testAge12 | 189ms |
| โ | TPPAgeCheckTests | testAge13 | 209ms |
| โ | TPPAgeCheckTests | testAge14 | 127ms |
| โ | TPPAgeCheckTests | testAgeCheckFailed | 1.10s |
| โ | TPPAlertUtilsTests | testAlertTitleMessageError_withMessage_prefersMessageOverError | 5ms |
| โ | TPPAlertUtilsTests | testAlertTitleMessageError_withNilMessage_fallsBackToError | 7ms |
| โ | TPPAlertUtilsTests | testAlertWithDetails_hasOKAction | 7ms |
| โ | TPPAlertUtilsTests | testAlertWithDetails_hasTwoActions | 13ms |
| โ | TPPAlertUtilsTests | testAlertWithDetails_hasViewDetailsAction | 20ms |
| โ | TPPAlertUtilsTests | testAlertWithDetails_plainMessageWithProblemDoc_includesDetail | 14ms |
| โ | TPPAlertUtilsTests | testAlertWithDetails_retryAction_invokesClosure | 9ms |
| โ | TPPAlertUtilsTests | testAlertWithDetails_withError_buildsAlert | 7ms |
| โ | TPPAlertUtilsTests | testAlertWithDetails_withProblemDocument_doesNotDuplicateDetail | 7ms |
| โ | TPPAlertUtilsTests | testAlertWithDetails_withRetryAction_hasRetryAndCancelNoOK | 7ms |
| โ | TPPAlertUtilsTests | testAlertWithDetails_withoutRetry_okActionIsDefaultStyle | 13ms |
| โ | TPPAlertUtilsTests | testAlert_cancelStyle_okActionIsCancel | 14ms |
| โ | TPPAlertUtilsTests | testAlert_customStyle_usesProvidedStyle | 8ms |
| โ | TPPAlertUtilsTests | testAlert_defaultStyle_okActionIsDefaultStyle | 11ms |
| โ | TPPAlertUtilsTests | testAlert_destructiveStyle_okActionIsDestructive | 11ms |
| โ | TPPAlertUtilsTests | testAlert_emptyMessage_returnsEmptyMessage | 14ms |
| โ | TPPAlertUtilsTests | testAlert_emptyTitle_substitutesAlertDefault | 14ms |
| โ | TPPAlertUtilsTests | testAlert_hasOKAction | 10ms |
| โ | TPPAlertUtilsTests | testAlert_nilMessage_substitutesEmpty | 7ms |
| โ | TPPAlertUtilsTests | testAlert_nilTitle_substitutesDefault | 5ms |
| โ | TPPAlertUtilsTests | testAlert_titleAndMessage_createsAlert | 8ms |
| โ | TPPAlertUtilsTests | testAlert_veryLongMessage_preservesContent | 14ms |
| โ | TPPAlertUtilsTests | testAlert_withError_createsAlert | 46ms |
| โ | TPPAlertUtilsTests | testAlert_withNSURLErrorCancelled_setsMessage | 22ms |
| โ | TPPAlertUtilsTests | testAlert_withNSURLErrorNotConnected_setsMessage | 7ms |
| โ | TPPAlertUtilsTests | testAlert_withNSURLErrorTimedOut_setsMessage | 11ms |
| โ | TPPAlertUtilsTests | testAlert_withNSURLErrorUnknownCode_setsUnknownRequestMessage | 36ms |
| โ | TPPAlertUtilsTests | testAlert_withNSURLErrorUnsupportedURL_setsMessage | 7ms |
| โ | TPPAlertUtilsTests | testAlert_withNilError_createsAlert | 7ms |
| โ | TPPAlertUtilsTests | testAlert_withUnknownDomainAndLocalizedDescription_usesDescription | 20ms |
| โ | TPPAlertUtilsTests | testAlert_withUnknownDomainNoDescription_usesGenericFallback | 13ms |
| โ | TPPAlertUtilsTests | testBorrowErrorPipeline_doesNotDuplicateProblemDocDetail | 15ms |
| โ | TPPAlertUtilsTests | testCrashlyticsFE741015_PresentAlertWhileAlertShowing_DoesNotCrash | 102ms |
| โ | TPPAlertUtilsTests | testPresentAlert_WhenNoAlertShowing_PresentsSuccessfully | 74ms |
| โ | TPPAlertUtilsTests | testRetryPresentation_AfterFirstAlertDismisses_PresentsSecond | 128ms |
| โ | TPPAlertUtilsTests | testRetryPresentation_ExceedsMaxRetries_DropsAlertWithCompletion | 149ms |
| โ | TPPAlertUtilsTests | testSetProblemDocument_appendMode_appendsDetailAfterExisting | 5ms |
| โ | TPPAlertUtilsTests | testSetProblemDocument_appendMode_titleAndDetailBothAppended | 8ms |
| โ | TPPAlertUtilsTests | testSetProblemDocument_appendsToMessage | 8ms |
| โ | TPPAlertUtilsTests | testSetProblemDocument_emptyAlertTitle_fillsFromDoc | 4ms |
| โ | TPPAlertUtilsTests | testSetProblemDocument_nilController_doesNotCrash | 6ms |
| โ | TPPAlertUtilsTests | testSetProblemDocument_nilDocument_doesNotCrash | 6ms |
| โ | TPPAlertUtilsTests | testSetProblemDocument_replaceMode_setsTitleAndDetail | 8ms |
| โ | TPPAlertUtilsTests | testSetProblemDocument_replaceMode_titleOnly_fillsMessageFromDetail | 6ms |
| โ | TPPAlertUtilsTests | testSetProblemDocument_replacesMessage | 4ms |
| โ | TPPAnnotationsHermeticTests | testAnnotationsURL_WhenMainFeedURLPresent_EndsInAnnotationsPath | 2ms |
| โ | TPPAnnotationsHermeticTests | testDeleteBookmark_InvalidURLString_ReturnsFalseWithoutNetwork | 5ms |
| โ | TPPAnnotationsHermeticTests | testPostAnnotation_NetworkErrorWithQueueOfflineTrue_DoesNotCrashAndReportsFailure | 3ms |
| โ | TPPAnnotationsHermeticTests | testPostAnnotation_NetworkError_ReturnsFailure | 3ms |
| โ | TPPAnnotationsHermeticTests | testPostAnnotation_Non200StatusCode_ReturnsFailure | 3ms |
| โ | TPPAnnotationsHermeticTests | testPostAnnotation_NonHTTPURLResponse_ReturnsFailure | 3ms |
| โ | TPPAnnotationsHermeticTests | testPostAnnotation_NotFound404_ReturnsFailure | 3ms |
| โ | TPPAnnotationsHermeticTests | testPostAnnotation_RequestShape_PreservesMethodHeadersTimeoutAndBody | 4ms |
| โ | TPPAnnotationsHermeticTests | testPostAnnotation_Success200WithFullPayload_ReturnsIdAndTimestamp | 3ms |
| โ | TPPAnnotationsHermeticTests | testPostAnnotation_Success200WithMalformedJSON_ReturnsNilIdAndTimestamp | 4ms |
| โ | TPPAnnotationsHermeticTests | testPostAnnotation_Success200WithMissingBodyKey_ReturnsNilTimestamp | 6ms |
| โ | TPPAnnotationsHermeticTests | testPostAnnotation_Success200WithMissingIdKey_ReturnsNilId | 4ms |
| โ | TPPAnnotationsHermeticTests | testPostAnnotation_Success200WithNilData_ReturnsNilIdAndTimestamp | 3ms |
| โ | TPPAnnotationsHermeticTests | testPostAnnotation_Unauthorized401_ReturnsFailure | 3ms |
| โ | TPPAnnotationsHermeticTests | testPostAnnotation_UsesExecutorOverride_NotShared | 5ms |
| โ | TPPAnnotationsOverrideTests | testAnnotationDevice_FirebaseOverride_IsClearedAfterReset | 5ms |
| โ | TPPAnnotationsOverrideTests | testAnnotationDevice_FirebaseOverride_IsUsedWhenAdobeIDIsAbsent | 8ms |
| โ | TPPAnnotationsOverrideTests | testSyncIsPossible_ExplicitProviderArgumentBeatsOverride | 178ms |
| โ | TPPAnnotationsOverrideTests | testSyncIsPossible_RoutesThroughAccountsManagerOverride | 109ms |
| โ | TPPAnnotationsTests | testAnnotationResponse_HandlesNilValues | 139ms |
| โ | TPPAnnotationsTests | testAnnotationResponse_StoresValues | 129ms |
| โ | TPPAnnotationsTests | testTPPAnnotationsWrapper_isUsablePolymorphicallyThroughProtocolWithStableValue | 153ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_DeleteAllBookmarks_CompletesImmediately | 148ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_DeleteBookmark_Handles404AsSuccess | 115ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_DeleteBookmark_HandlesServerError | 156ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_DeleteBookmark_HandlesSuccessfulDeletion | 149ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_DeleteBookmark_ReturnsFalseForInvalidURL | 143ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_DeleteBookmarks_HandlesArray | 160ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_GetServerBookmarks_ParsesValidResponse | 107ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_GetServerBookmarks_ReturnsNilForNilBook | 153ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_GetServerBookmarks_ReturnsNilForNilURL | 113ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_GetServerBookmarks_ReturnsNilWhenSyncNotPermitted | 123ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_HandlesConcurrentRequests | 142ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_PostAnnotation_CreatesCorrectRequestFormat | 366ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_PostAnnotation_HandlesInvalidJSONGracefully | 180ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_PostAnnotation_HandlesNetworkError | 136ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_PostAnnotation_HandlesNon200StatusCode | 222ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_PostAnnotation_HandlesSuccessResponse | 176ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_PostAudiobookBookmark_ThrowsOnFailure | 205ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_PostListeningPosition_CallsPostReadingPosition | 90ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_SyncIsPossible_ReturnsFalseWithoutCredentials | 100ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_SyncIsPossible_ReturnsTrueWithCredentialsAndSyncSupport | 98ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_SyncReadingPosition_ReturnsNilWhenNotPermitted | 264ms |
| โ | TPPAnnotationsTests | testTPPAnnotations_UploadLocalBookmarks_SkipsAlreadySyncedBookmarks | 145ms |
| โ | TPPAnnotationsTests | testTPPBookmarkFactory_FiltersBookmarksByMotivation | 131ms |
| โ | TPPAnnotationsTests | testTPPBookmarkFactory_RejectsBookmarksForWrongBook | 96ms |
| โ | TPPAnnotationsTests | testTPPBookmarkSpec_ReadingProgressMotivation | 112ms |
| โ | TPPAnnotationsTests | testTPPBookmarkSpec_SerializesToValidJSON | 107ms |
| โ | TPPAnnouncementManagerTests | testAddPresentedAnnouncement | 6ms |
| โ | TPPAnnouncementManagerTests | testDeletePresentedAnnouncement | 5ms |
| โ | TPPAnnouncementManagerTests | testShouldPresentAnnouncement | 4ms |
| โ | TPPAuthDocumentContractTests | testCoverageTable_CoversEveryKnownAuthType | 9ms |
| โ | TPPAuthDocumentContractTests | testEveryAdvertisedRel_HasAClientSideHandler | 11ms |
| โ | TPPAuthDocumentContractTests | testLogoutRel_OnAuthWithLogoutLink_IsCapturedAsHref | 13ms |
| โ | TPPBackgroundExecutorTests | testExecutorCallsSetUpWorkItem | 1.02s |
| โ | TPPBackgroundExecutorTests | testExecutorDoesNotRetainOwner | 535ms |
| โ | TPPBackgroundExecutorTests | testExecutorHandlesNilWorkItem | 1.04s |
| โ | TPPBadgeImageGapTests | testTPPBadgeImageView_audiobook_initSucceeds | 10ms |
| โ | TPPBadgeImageGapTests | testTPPBadgeImage_audiobook_assetNameReturnsAudiobookBadge | 4ms |
| โ | TPPBasicAuthTests | testHandleChallenge_basicAuth_withEmptyCredentials_usesCredential | 5ms |
| โ | TPPBasicAuthTests | testHandleChallenge_basicAuth_withMultipleFailures_cancelsChallenge | 18ms |
| โ | TPPBasicAuthTests | testHandleChallenge_basicAuth_withNilPassword_cancelsChallenge | 2ms |
| โ | TPPBasicAuthTests | testHandleChallenge_basicAuth_withNilUsername_cancelsChallenge | 2ms |
| โ | TPPBasicAuthTests | testHandleChallenge_basicAuth_withPreviousFailure_cancelsChallenge | 5ms |
| โ | TPPBasicAuthTests | testHandleChallenge_basicAuth_withValidCredentials_usesCredential | 4ms |
| โ | TPPBasicAuthTests | testHandleChallenge_clientCertificate_rejectsProtectionSpace | 3ms |
| โ | TPPBasicAuthTests | testHandleChallenge_credentials_noPersistence | 6ms |
| โ | TPPBasicAuthTests | testHandleChallenge_serverTrust_performsDefaultHandling | 5ms |
| โ | TPPBasicAuthTests | testHandleChallenge_unknownMethod_rejectsProtectionSpace | 3ms |
| โ | TPPBasicAuthTests | testInit_createsInstance | 4ms |
| โ | TPPBookAccessibilityLabelTests | testVoiceOverLabel_audiobook_authorOnly_includesFormatAndAuthor | 21ms |
| โ | TPPBookAccessibilityLabelTests | testVoiceOverLabel_audiobook_narratorOnly_omitsAuthorPhrase | 4ms |
| โ | TPPBookAccessibilityLabelTests | testVoiceOverLabel_audiobook_neitherAuthorNorNarrator_titlePlusFormat | 3ms |
| โ | TPPBookAccessibilityLabelTests | testVoiceOverLabel_audiobook_withNarrator_includesNarrator | 5ms |
| โ | TPPBookAccessibilityLabelTests | testVoiceOverLabel_ebook_blankAuthor_titleOnly | 5ms |
| โ | TPPBookAccessibilityLabelTests | testVoiceOverLabel_ebook_noAuthor_titleOnly | 6ms |
| โ | TPPBookAccessibilityLabelTests | testVoiceOverLabel_ebook_titleByAuthor | 8ms |
| โ | TPPBookAccessibilityLabelTests | testVoiceOverLabel_neverIncludesSummary | 9ms |
| โ | TPPBookAuthorCoverageTests | testBookAuthor_NilURL_IsDistinctFromEmptyURL | 4ms |
| โ | TPPBookAuthorCoverageTests | testBookAuthor_initWithNameAndURL | 4ms |
| โ | TPPBookAuthorCoverageTests | testBookAuthor_initWithNilURL | 4ms |
| โ | TPPBookAuthorTests | testInit_EmptyName_AllowsEmptyString | 2ms |
| โ | TPPBookAuthorTests | testInit_WithNameAndURL_SetsProperties | 2ms |
| โ | TPPBookAuthorTests | testInit_WithNilURL_SetsURLToNil | 4ms |
| โ | TPPBookAuthorTests | testIsKindOfClass_NSObject | 3ms |
| โ | TPPBookAuthorTests | test_differentName_haveDifferentProperties | 30ms |
| โ | TPPBookAuthorTests | test_sameNameAndURL_haveMatchingProperties | 2ms |
| โ | TPPBookBearerTokenTests | testBearerToken_clearWithNil | 7ms |
| โ | TPPBookBearerTokenTests | testBearerToken_defaultsToNil | 10ms |
| โ | TPPBookBearerTokenTests | testBearerToken_writeAndRead | 9ms |
| โ | TPPBookBearerTokenTests | testFulfillURL_clearWithNil | 9ms |
| โ | TPPBookBearerTokenTests | testFulfillURL_defaultsToNil | 6ms |
| โ | TPPBookBearerTokenTests | testFulfillURL_independentPerBook | 10ms |
| โ | TPPBookBearerTokenTests | testFulfillURL_overwrite | 8ms |
| โ | TPPBookBearerTokenTests | testFulfillURL_persistsAcrossNewBookInstances | 12ms |
| โ | TPPBookBearerTokenTests | testFulfillURL_writeAndRead | 11ms |
| โ | TPPBookContentMetadataFilesHelperTests | testCurrentAccountDirectory_returnsURLOrNil | 4ms |
| โ | TPPBookContentMetadataFilesHelperTests | testDirectory_containsBundleIdentifier | 3ms |
| โ | TPPBookContentMetadataFilesHelperTests | testDirectory_differentAccounts_returnDifferentPaths | 37ms |
| โ | TPPBookContentMetadataFilesHelperTests | testDirectory_emptyString_handlesGracefully | 8ms |
| โ | TPPBookContentMetadataFilesHelperTests | testDirectory_longAccountId_handlesGracefully | 2ms |
| โ | TPPBookContentMetadataFilesHelperTests | testDirectory_pathContainsApplicationSupport | 2ms |
| โ | TPPBookContentMetadataFilesHelperTests | testDirectory_sameAccount_returnsSamePath | 2ms |
| โ | TPPBookContentMetadataFilesHelperTests | testDirectory_specialCharacters_handlesGracefully | 5ms |
| โ | TPPBookContentMetadataFilesHelperTests | testDirectory_validAccountId_returnsURL | 4ms |
| โ | TPPBookContentTypeConverterTests | testStringValue_audiobook | 2ms |
| โ | TPPBookContentTypeConverterTests | testStringValue_epub | 2ms |
| โ | TPPBookContentTypeConverterTests | testStringValue_pdf | 2ms |
| โ | TPPBookContentTypeConverterTests | testStringValue_unsupported | 2ms |
| โ | TPPBookContentTypeExtendedTests | testFromMimeType_empty | 2ms |
| โ | TPPBookContentTypeExtendedTests | testFromMimeType_epubAndPdfMappedCorrectly | 2ms |
| โ | TPPBookContentTypeExtendedTests | testFromMimeType_nil | 1ms |
| โ | TPPBookContentTypeExtendedTests | testFromMimeType_unknown | 2ms |
| โ | TPPBookContentTypeTests | test_converter_audiobook_returnsAudioBook | 2ms |
| โ | TPPBookContentTypeTests | test_converter_epub_returnsEpub | 2ms |
| โ | TPPBookContentTypeTests | test_converter_pdf_returnsPDF | 2ms |
| โ | TPPBookContentTypeTests | test_converter_unsupported_returnsUnsupported | 3ms |
| โ | TPPBookContentTypeTests | test_from_audiobookJsonMimeType_returnsAudiobook | 2ms |
| โ | TPPBookContentTypeTests | test_from_emptyMimeType_returnsUnsupported | 4ms |
| โ | TPPBookContentTypeTests | test_from_epubZipMimeType_returnsEpub | 2ms |
| โ | TPPBookContentTypeTests | test_from_nilMimeType_returnsUnsupported | 2ms |
| โ | TPPBookContentTypeTests | test_from_octetStreamMimeType_returnsEpub | 2ms |
| โ | TPPBookContentTypeTests | test_from_pdfMimeType_returnsPdf | 2ms |
| โ | TPPBookContentTypeTests | test_from_unknownMimeType_returnsUnsupported | 2ms |
| โ | TPPBookContentTypeTests | test_opdsPublicationType_isInSupportedTypes | 2ms |
| โ | TPPBookContentTypeTests | test_opdsPublicationType_withDirectEpubIndirect_producesEpubPath | 4ms |
| โ | TPPBookContentTypeTests | test_opdsPublicationType_withLCPEpubIndirect_producesEpubPath | 52ms |
| โ | TPPBookCoverRegistryTests | testDownsampleImage_DecodesJPEGAtTargetSize | 54ms |
| โ | TPPBookCoverRegistryTests | testDownsampleImage_DecodesPNGData | 59ms |
| โ | TPPBookCoverRegistryTests | testDownsampleImage_EmptyDataReturnsNil | 9ms |
| โ | TPPBookCoverRegistryTests | testDownsampleImage_InvalidDataReturnsNil | 4ms |
| โ | TPPBookCoverRegistryTests | testDownsampleImage_MemoryEfficiency_LargeImage | 173ms |
| โ | TPPBookCoverRegistryTests | testDownsampleImage_PreservesAspectRatio | 49ms |
| โ | TPPBookCoverRegistryTests | testDownsampleImage_SmallImageNotUpscaled | 7ms |
| โ | TPPBookCoverRegistryTests | testHostFailureTracker_NilHostHandledGracefully | 15ms |
| โ | TPPBookCoverRegistryTests | testHostFailureTracker_RecordsFailureAndSkips | 4ms |
| โ | TPPBookCoverRegistryTests | testHostFailureTracker_ResetClearsAll | 3ms |
| โ | TPPBookCoverRegistryTests | testHostFailureTracker_ResetsAfterCooldown | 205ms |
| โ | TPPBookCoverRegistryTests | testHostFailureTracker_SuccessClearsFailure | 4ms |
| โ | TPPBookCoverRegistryTests | testHostFailureTracker_TracksHostsIndependently | 3ms |
| โ | TPPBookCoverRegistryTests | testRegistry_UsesCustomImageSession | 3ms |
| โ | TPPBookCreationTests | testBookCreationViaDictionary | 29ms |
| โ | TPPBookCreationTests | testBookCreationViaFactoryMethod | 8ms |
| โ | TPPBookCreationTests | testBookCreationViaMemberWiseInitializer | 6ms |
| โ | TPPBookCreationTests | testBookCreation_FromEntry_AudienceAbsent | 6ms |
| โ | TPPBookCreationTests | testBookCreation_FromEntry_PopulatesAudienceAndLanguage | 11ms |
| โ | TPPBookCreationTests | testBookCreation_RoundTripsAudienceAndLanguageThroughDictionary | 11ms |
| โ | TPPBookCreationTests | testMergingPreservingMetadata_PrefersFreshThenSelf | 6ms |
| โ | TPPBookExtensionsTests | test_format_forAudiobook_matchesLocalizedString | 2ms |
| โ | TPPBookExtensionsTests | test_format_forEpub_matchesLocalizedString | 3ms |
| โ | TPPBookExtensionsTests | test_format_forPDF_matchesLocalizedString | 5ms |
| โ | TPPBookExtensionsTests | test_format_forUnsupported_matchesLocalizedString | 1ms |
| โ | TPPBookExtensionsTests | test_format_isNonEmptyAndDistinguishableAcrossContentTypes | 7ms |
| โ | TPPBookExtensionsTests | test_hasAudiobookSample_audiobookWithSample_returnsTrue | 5ms |
| โ | TPPBookExtensionsTests | test_hasAudiobookSample_audiobookWithoutSample_returnsFalse | 4ms |
| โ | TPPBookExtensionsTests | test_hasAudiobookSample_epubWithSample_returnsFalse | 4ms |
| โ | TPPBookExtensionsTests | test_hasAudiobookSample_pdfWithSample_returnsFalse | 4ms |
| โ | TPPBookExtensionsTests | test_hasSample_returnsTrueOnlyWhenSampleIsPresent_andDistinguishesAudiobook | 3ms |
| โ | TPPBookExtensionsTests | test_hasSample_withMockerHasSampleFalse_returnsFalse | 5ms |
| โ | TPPBookExtensionsTests | test_hasSample_withMockerHasSampleTrue_returnsTrue | 4ms |
| โ | TPPBookExtensionsTests | test_loggableDictionary_containsExpectedKeys | 3ms |
| โ | TPPBookExtensionsTests | test_loggableShortString_containsTitleAndId | 3ms |
| โ | TPPBookExtensionsTests | test_sample_nilForUnsupportedContentType | 2ms |
| โ | TPPBookExtensionsTests | test_sample_preservesURL | 2ms |
| โ | TPPBookExtensionsTests | test_sample_returnsNilWhenNoSampleIsAvailable | 3ms |
| โ | TPPBookExtensionsTests | test_sample_withAudiobookSample_returnsAudiobookSample | 9ms |
| โ | TPPBookExtensionsTests | test_sample_withEpubSample_returnsEpubSample | 6ms |
| โ | TPPBookExtensionsTests | test_showAudiobookToolbar_falseForEpubEvenWithSample | 4ms |
| โ | TPPBookExtensionsTests | test_showAudiobookToolbar_falseWhenNoSample | 5ms |
| โ | TPPBookLocationCoverageTests | testBookLocation_dictionaryRoundTrip | 2ms |
| โ | TPPBookLocationCoverageTests | testBookLocation_initWithDictionary | 2ms |
| โ | TPPBookLocationCoverageTests | testBookLocation_initWithEmptyDictionary | 2ms |
| โ | TPPBookLocationCoverageTests | testBookLocation_initWithIncompleteDictionary | 5ms |
| โ | TPPBookLocationCoverageTests | testBookLocation_initWithStrings | 2ms |
| โ | TPPBookLocationCoverageTests | testBookLocation_locationStringMutation_ReflectsInDictionary | 4ms |
| โ | TPPBookLocationCoverageTests | testBookLocation_rendererMutation_ReflectsInDictionary | 2ms |
| โ | TPPBookLocationEdgeCaseTests | test_bookLocationData_stringForKey_missingKey_returnsNil | 2ms |
| โ | TPPBookLocationEdgeCaseTests | test_bookLocationData_stringForKey_returnsValue | 4ms |
| โ | TPPBookLocationEdgeCaseTests | test_bookLocationData_stringForKey_wrongType_returnsNil | 2ms |
| โ | TPPBookLocationEdgeCaseTests | test_dictionaryRepresentation_containsExpectedKeys | 2ms |
| โ | TPPBookLocationEdgeCaseTests | test_dictionaryRepresentation_preservesJSONContent | 2ms |
| โ | TPPBookLocationEdgeCaseTests | test_dictionaryRepresentation_roundTrips | 3ms |
| โ | TPPBookLocationEdgeCaseTests | test_initFromDictionary_emptyDictionary_returnsNil | 2ms |
| โ | TPPBookLocationEdgeCaseTests | test_initFromDictionary_extraKeys_ignoresExtras | 4ms |
| โ | TPPBookLocationEdgeCaseTests | test_initFromDictionary_missingLocationString_returnsNil | 2ms |
| โ | TPPBookLocationEdgeCaseTests | test_initFromDictionary_missingRenderer_returnsNil | 2ms |
| โ | TPPBookLocationEdgeCaseTests | test_initFromDictionary_withValidData_createsLocation | 2ms |
| โ | TPPBookLocationEdgeCaseTests | test_initFromDictionary_wrongTypes_returnsNil | 2ms |
| โ | TPPBookLocationEdgeCaseTests | test_init_withEmptyLocationString_createsLocation | 2ms |
| โ | TPPBookLocationEdgeCaseTests | test_init_withEmptyRenderer_createsLocation | 3ms |
| โ | TPPBookLocationEdgeCaseTests | test_init_withLongJSON_createsLocation | 3ms |
| โ | TPPBookLocationEdgeCaseTests | test_init_withValidStringAndRenderer_createsLocation | 2ms |
| โ | TPPBookLocationEdgeCaseTests | test_isSimilarTo_differentContent_returnsFalse | 2ms |
| โ | TPPBookLocationEdgeCaseTests | test_isSimilarTo_differentRenderer_returnsFalse | 3ms |
| โ | TPPBookLocationEdgeCaseTests | test_isSimilarTo_identicalLocations_returnsTrue | 9ms |
| โ | TPPBookLocationEdgeCaseTests | test_isSimilarTo_ignoresAnnotationIdDifferences | 3ms |
| โ | TPPBookLocationEdgeCaseTests | test_isSimilarTo_ignoresTimeStampDifferences | 5ms |
| โ | TPPBookLocationEdgeCaseTests | test_isSimilarTo_nonJSONLocationString_returnsFalse | 3ms |
| โ | TPPBookLocationEdgeCaseTests | test_isSimilarTo_sameContentDifferentTimeStampAndAnnotationId_returnsTrue | 2ms |
| โ | TPPBookLocationEdgeCaseTests | test_locationStringDictionary_arrayJSON_returnsNil | 3ms |
| โ | TPPBookLocationEdgeCaseTests | test_locationStringDictionary_emptyString_returnsNil | 2ms |
| โ | TPPBookLocationEdgeCaseTests | test_locationStringDictionary_invalidJSON_returnsNil | 2ms |
| โ | TPPBookLocationEdgeCaseTests | test_locationStringDictionary_validJSON_returnsParsedDictionary | 4ms |
| โ | TPPBookLocationKeyTests | testBookLocationData_stringAccessor | 3ms |
| โ | TPPBookLocationKeyTests | testBookLocationData_stringAccessorWrongType | 6ms |
| โ | TPPBookLocationKeyTests | testBookLocationKey_MatchesDictionaryRepresentationKeys | 5ms |
| โ | TPPBookLocationTests | testDictionaryRepresentation_ContainsAllFields | 2ms |
| โ | TPPBookLocationTests | testInit_FromDictionary_Succeeds | 3ms |
| โ | TPPBookLocationTests | testInit_FromDictionary_WithMissingLocationString_ReturnsNil | 2ms |
| โ | TPPBookLocationTests | testInit_FromDictionary_WithMissingRenderer_ReturnsNil | 2ms |
| โ | TPPBookLocationTests | testInit_WithValidParams_Succeeds | 2ms |
| โ | TPPBookLocationTests | testIsSimilarTo_IgnoresAnnotationId | 47ms |
| โ | TPPBookLocationTests | testIsSimilarTo_IgnoresTimestamp | 2ms |
| โ | TPPBookLocationTests | testIsSimilarTo_WithDifferentRenderer_ReturnsFalse | 2ms |
| โ | TPPBookLocationTests | testIsSimilarTo_WithSameContent_ReturnsTrue | 2ms |
| โ | TPPBookLocationTests | testLocationStringDictionary_ParsesValidJSON | 2ms |
| โ | TPPBookLocationTests | testLocationStringDictionary_WithInvalidJSON_ReturnsNil | 2ms |
| โ | TPPBookModelGapTests | testTPPBook_bookWithMetadata_returnsBookWithUpdatedMetadata | 12ms |
| โ | TPPBookModelGapTests | testTPPBook_dictionaryRepresentation_producesNonEmptyDict | 7ms |
| โ | TPPBookModelGapTests | testTPPBook_dictionaryRepresentation_roundTripPreservesKeyProperties | 7ms |
| โ | TPPBookModelGapTests | testTPPBook_sameIdentifier_comparableEquivalent | 15ms |
| โ | TPPBookRegistryBookRetrievalTests | testAllBooks_ReturnsRegisteredBooks | 18ms |
| โ | TPPBookRegistryBookRetrievalTests | testBook_ForEmptyIdentifier_ReturnsNil | 2ms |
| โ | TPPBookRegistryBookRetrievalTests | testBook_ForNilIdentifier_ReturnsNil | 16ms |
| โ | TPPBookRegistryBookRetrievalTests | testBook_ForNonExistentIdentifier_ReturnsNil | 2ms |
| โ | TPPBookRegistryBookRetrievalTests | testBook_ForValidIdentifier_ReturnsBook | 11ms |
| โ | TPPBookRegistryBookRetrievalTests | testHeldBooks_ReturnsOnlyHoldingBooks | 29ms |
| โ | TPPBookRegistryBookRetrievalTests | testMyBooks_ReturnsDownloadRelatedBooks | 26ms |
| โ | TPPBookRegistryBookmarkTests | testAddGenericBookmark_AppendsToList | 30ms |
| โ | TPPBookRegistryBookmarkTests | testAddOrReplaceGenericBookmark_ReplacesExisting | 23ms |
| โ | TPPBookRegistryBookmarkTests | testAddReadiumBookmark_AppendsToList | 16ms |
| โ | TPPBookRegistryBookmarkTests | testDeleteGenericBookmark_RemovesFromList | 27ms |
| โ | TPPBookRegistryBookmarkTests | testDeleteReadiumBookmark_RemovesFromList | 52ms |
| โ | TPPBookRegistryBookmarkTests | testReadiumBookmarks_SortedByProgress | 14ms |
| โ | TPPBookRegistryBookmarkTests | testReplaceGenericBookmark_UpdatesBookmark | 18ms |
| โ | TPPBookRegistryCorruptedDataTests | testRecordInit_WithCorruptedBookmarks_SkipsInvalid | 5ms |
| โ | TPPBookRegistryCorruptedDataTests | testRecordInit_WithInvalidState_ReturnsNil | 5ms |
| โ | TPPBookRegistryCorruptedDataTests | testRecordInit_WithMissingBook_ReturnsNil | 5ms |
| โ | TPPBookRegistryCorruptedDataTests | testRecordInit_WithMissingOptionalFields_Succeeds | 5ms |
| โ | TPPBookRegistryCorruptedDataTests | testRecordInit_WithMissingState_ReturnsNil | 6ms |
| โ | TPPBookRegistryDataTests | testArrayForKey_ReturnsArray | 3ms |
| โ | TPPBookRegistryDataTests | testObjectForKey_ReturnsDictionary | 3ms |
| โ | TPPBookRegistryDataTests | testSetValue_SetsValue | 7ms |
| โ | TPPBookRegistryDataTests | testValueForKey_ReturnsValue | 2ms |
| โ | TPPBookRegistryDependencyTests | testAppContainer_constructionDoesNotDeadlock | 4ms |
| โ | TPPBookRegistryDependencyTests | testAppContainer_returnsSameRegistryInstance | 4ms |
| โ | TPPBookRegistryDependencyTests | testInit_takesAccountsManagerExplicitly | 39ms |
| โ | TPPBookRegistryDependencyTests | testWithAccount_inheritsParentAccountsManager | 8ms |
| โ | TPPBookRegistryFulfillmentIdTests | testFulfillmentId_ForEmptyIdentifier_ReturnsNil | 4ms |
| โ | TPPBookRegistryFulfillmentIdTests | testFulfillmentId_ForNilIdentifier_ReturnsNil | 2ms |
| โ | TPPBookRegistryFulfillmentIdTests | testFulfillmentId_ForNonExistentBook_ReturnsNil | 2ms |
| โ | TPPBookRegistryFulfillmentIdTests | testSetFulfillmentId_UpdatesFulfillmentId | 13ms |
| โ | TPPBookRegistryLoadReentrancyTests | testLoad_EmitsBookStateEventsForAllBooks | 507ms |
| โ | TPPBookRegistryLoadReentrancyTests | testLoad_RapidCallsForSameAccount_DoesNotCrash | 6ms |
| โ | TPPBookRegistryLocationTests | testLocation_ForNonExistentBook_ReturnsNil | 3ms |
| โ | TPPBookRegistryLocationTests | testSetLocationSync_UpdatesSynchronously | 15ms |
| โ | TPPBookRegistryLocationTests | testSetLocation_UpdatesLocation | 73ms |
| โ | TPPBookRegistryLocationTests | testSetLocation_WithNil_ClearsLocation | 16ms |
| โ | TPPBookRegistryProcessingTests | testSetProcessing_False_ClearsProcessingState | 2ms |
| โ | TPPBookRegistryProcessingTests | testSetProcessing_TracksProcessingState | 2ms |
| โ | TPPBookRegistryPublisherTests | testBookStatePublisher_EmitsOnBookAdd | 25ms |
| โ | TPPBookRegistryPublisherTests | testBookStatePublisher_EmitsOnBookRemove | 32ms |
| โ | TPPBookRegistryPublisherTests | testBookStatePublisher_EmitsOnStateChange | 26ms |
| โ | TPPBookRegistryPublisherTests | testBookStatePublisher_MultipleStateChanges_EmitsAll | 38ms |
| โ | TPPBookRegistryPublisherTests | testRegistryPublisher_EmitsOnBookAdd | 27ms |
| โ | TPPBookRegistryPublisherTests | testRegistryPublisher_EmitsOnBookRemove | 20ms |
| โ | TPPBookRegistryRecordPersistenceTests | testAllStatesSerializeCorrectly | 124ms |
| โ | TPPBookRegistryRecordPersistenceTests | testDictionaryRepresentation_ContainsAllFields | 5ms |
| โ | TPPBookRegistryRecordPersistenceTests | testDictionaryRoundTrip_PreservesData | 11ms |
| โ | TPPBookRegistryRecordTests | testAllStatesCanBePreserved | 53ms |
| โ | TPPBookRegistryRecordTests | testDeriveInitialStateForBookWithoutAcquisition | 5ms |
| โ | TPPBookRegistryRecordTests | testDeriveInitialStateForBorrowableBook | 7ms |
| โ | TPPBookRegistryRecordTests | testDictionaryRepresentationPreservesState | 3ms |
| โ | TPPBookRegistryRecordTests | testInitFromDictionaryPreservesState | 7ms |
| โ | TPPBookRegistryRecordTests | testInitPreservesDownloadFailedState | 5ms |
| โ | TPPBookRegistryRecordTests | testInitPreservesDownloadSuccessfulState | 6ms |
| โ | TPPBookRegistryRecordTests | testInitPreservesDownloadingState | 6ms |
| โ | TPPBookRegistryRecordTests | testInitPreservesHoldingState | 20ms |
| โ | TPPBookRegistryRecordTests | testInitPreservesUsedState | 5ms |
| โ | TPPBookRegistryStateManagementTests | testAddBook_NewBook_RegistersWithCorrectState | 5ms |
| โ | TPPBookRegistryStateManagementTests | testAddBook_WithBookmarks_StoresBookmarks | 6ms |
| โ | TPPBookRegistryStateManagementTests | testAddBook_WithFulfillmentId_StoresFulfillmentId | 6ms |
| โ | TPPBookRegistryStateManagementTests | testAddBook_WithLocation_StoresLocation | 9ms |
| โ | TPPBookRegistryStateManagementTests | testRemoveBook_RemovesFromRegistry | 7ms |
| โ | TPPBookRegistryStateManagementTests | testRemoveBook_WithEmptyIdentifier_DoesNotCrash | 3ms |
| โ | TPPBookRegistryStateManagementTests | testSetState_ForUnregisteredBook_DoesNotCrash | 2ms |
| โ | TPPBookRegistryStateManagementTests | testSetState_TransitionsCorrectly | 6ms |
| โ | TPPBookRegistryStateManagementTests | testStateFor_EmptyIdentifier_ReturnsUnregistered | 2ms |
| โ | TPPBookRegistryStateManagementTests | testStateFor_NilIdentifier_ReturnsUnregistered | 2ms |
| โ | TPPBookRegistryStateManagementTests | testStateFor_NonExistentBook_ReturnsUnregistered | 2ms |
| โ | TPPBookRegistryThreadSafetyTests | testCrashlytics30c41d7e_ConcurrentAddAndUpdate_DoNotCrash | 67ms |
| โ | TPPBookRegistryThreadSafetyTests | testCrashlytics30c41d7e_RapidRegistryMutations_DoNotCrashPublisher | 220ms |
| โ | TPPBookRegistryThreadSafetyTests | testRegistryPublisher_EmitsConsistentSnapshots_DuringRapidMutations | 89ms |
| โ | TPPBookRegistryUpdateAndRemoveTests | testUpdateAndRemoveBook_SetsStateToUnregistered | 37ms |
| โ | TPPBookRequiresAdobeDRMTests | testRequiresAdobeDRM_falseForLCPBook | 6ms |
| โ | TPPBookRequiresAdobeDRMTests | testRequiresAdobeDRM_falseForOpenAccessAudiobook | 2ms |
| โ | TPPBookRequiresAdobeDRMTests | testRequiresAdobeDRM_falseForOpenAccessBook | 2ms |
| โ | TPPBookRequiresAdobeDRMTests | testRequiresAdobeDRM_falseWhenNoAdobeAcquisitionsPresent | 2ms |
| โ | TPPBookRequiresAdobeDRMTests | testRequiresAdobeDRM_trueForAdobeAdeptBook | 2ms |
| โ | TPPBookRequiresAdobeDRMTests | testRequiresAdobeDRM_trueForOPDSFixtureEntry | 2ms |
| โ | TPPBookSerializationTests | test_categoryStrings_returnsCategories | 2ms |
| โ | TPPBookSerializationTests | test_comparable_sortsAlphabeticallyByTitle | 2ms |
| โ | TPPBookSerializationTests | test_defaultBookContentType_forAudiobook_returnsAudiobook | 6ms |
| โ | TPPBookSerializationTests | test_defaultBookContentType_forEpub_returnsEpub | 3ms |
| โ | TPPBookSerializationTests | test_dictionaryRoundTrip_preservesAllFields | 4ms |
| โ | TPPBookSerializationTests | test_dictionaryRoundTrip_preservesIdentifier | 4ms |
| โ | TPPBookSerializationTests | test_dictionaryRoundTrip_preservesUpdatedTimestamp | 3ms |
| โ | TPPBookSerializationTests | test_initFromDictionary_missingCategories_usesEmptyArray | 2ms |
| โ | TPPBookSerializationTests | test_initFromDictionary_missingId_returnsNil | 5ms |
| โ | TPPBookSerializationTests | test_initFromDictionary_missingTitle_returnsNil | 24ms |
| โ | TPPBookSerializationTests | test_initFromDictionary_missingUpdated_fallsBackToDistantPast | 8ms |
| โ | TPPBookSerializationTests | test_initFromDictionary_updatedBareDate_parsesSuccessfully | 10ms |
| โ | TPPBookSerializationTests | test_initFromDictionary_updatedFullRFC3339Datetime_parsesSuccessfully | 3ms |
| โ | TPPBookStateInitializationTests | testStateInit_FromInvalidString_ReturnsNil | 3ms |
| โ | TPPBookStateInitializationTests | testStateInit_FromValidStrings | 2ms |
| โ | TPPBookStateInitializationTests | testStateRoundTrip_AllStates | 4ms |
| โ | TPPBookStateInitializationTests | testStateStringValue_ReturnsCorrectString | 2ms |
| โ | TPPBookStateTests | testAllBookState | 2ms |
| โ | TPPBookStateTests | testBookStateFromString | 2ms |
| โ | TPPBookStateTests | testInitWithString | 3ms |
| โ | TPPBookStateTests | testStringValue | 2ms |
| โ | TPPBookTests | test_authorLinkArray_excludesNilURLs | 4ms |
| โ | TPPBookTests | test_authorLinkArray_returnsURLStrings | 3ms |
| โ | TPPBookTests | test_authorNameArray_nilWhenNoAuthors | 2ms |
| โ | TPPBookTests | test_authorNameArray_returnsNames | 2ms |
| โ | TPPBookTests | test_authors_joinsNamesWithSemicolon | 15ms |
| โ | TPPBookTests | test_authors_nilWhenNoAuthors | 2ms |
| โ | TPPBookTests | test_authors_singleAuthor | 3ms |
| โ | TPPBookTests | test_availabilityDetails_defaultValues | 2ms |
| โ | TPPBookTests | test_bookWithMetadata_preservesSelfIdentifierAndAcquisitions | 2ms |
| โ | TPPBookTests | test_bookWithMetadata_preservesSelfRevokeReportAndTimeTrackingURLs | 3ms |
| โ | TPPBookTests | test_bookWithMetadata_takesImageURLsFromMetadataBook | 2ms |
| โ | TPPBookTests | test_bookWithMetadata_takesMetadataFromOtherBook | 2ms |
| โ | TPPBookTests | test_categories_joinsWithSemicolon | 3ms |
| โ | TPPBookTests | test_categories_nilWhenNil | 2ms |
| โ | TPPBookTests | test_categoryStringsFromCategories_emptyArrayReturnsEmpty | 2ms |
| โ | TPPBookTests | test_categoryStringsFromCategories_extractsLabelsFromSimplifiedScheme | 2ms |
| โ | TPPBookTests | test_categoryStringsFromCategories_filtersOutUnknownSchemes | 1ms |
| โ | TPPBookTests | test_categoryStringsFromCategories_includesCategoriesWithNilScheme | 2ms |
| โ | TPPBookTests | test_categoryStringsFromCategories_usesTermWhenNoLabel | 2ms |
| โ | TPPBookTests | test_clearCachedImages_removesAllKeysFromCache | 3ms |
| โ | TPPBookTests | test_comparable_equalIdentifiersNotLessThan | 2ms |
| โ | TPPBookTests | test_comparable_ordersById | 3ms |
| โ | TPPBookTests | test_comparable_sortingMultipleBooks | 3ms |
| โ | TPPBookTests | test_defaultAcquisitionIfBorrow_nilWhenOpenAccess | 2ms |
| โ | TPPBookTests | test_defaultAcquisitionIfBorrow_returnsAcquisitionWhenBorrow | 3ms |
| โ | TPPBookTests | test_defaultAcquisitionIfOpenAccess_nilWhenBorrow | 4ms |
| โ | TPPBookTests | test_defaultAcquisitionIfOpenAccess_returnsWhenOpenAccess | 4ms |
| โ | TPPBookTests | test_defaultBookContentType_audiobook | 4ms |
| โ | TPPBookTests | test_defaultBookContentType_epub | 5ms |
| โ | TPPBookTests | test_defaultBookContentType_pdf | 5ms |
| โ | TPPBookTests | test_defaultBookContentType_unsupportedWhenNoAcquisitions | 3ms |
| โ | TPPBookTests | test_dictionaryInit_handlesFlatAuthorArrayFormat | 4ms |
| โ | TPPBookTests | test_dictionaryInit_handlesNestedAuthorArrayFormat | 6ms |
| โ | TPPBookTests | test_dictionaryInit_nilWhenMissingId | 12ms |
| โ | TPPBookTests | test_dictionaryInit_nilWhenMissingTitle | 3ms |
| โ | TPPBookTests | test_dictionaryInit_salvagesWhenCategoriesMissing | 5ms |
| โ | TPPBookTests | test_dictionaryInit_salvagesWhenUpdatedMissing | 4ms |
| โ | TPPBookTests | test_dictionaryRepresentation_containsRequiredKeys | 4ms |
| โ | TPPBookTests | test_dictionaryRoundTrip_preservesAuthors | 8ms |
| โ | TPPBookTests | test_dictionaryRoundTrip_preservesCategories | 2ms |
| โ | TPPBookTests | test_dictionaryRoundTrip_preservesDistributor | 3ms |
| โ | TPPBookTests | test_dictionaryRoundTrip_preservesIdentifierAndTitle | 7ms |
| โ | TPPBookTests | test_dictionaryRoundTrip_preservesOptionalURLs | 2ms |
| โ | TPPBookTests | test_dictionaryRoundTrip_preservesSubtitleAndSummary | 4ms |
| โ | TPPBookTests | test_getAvailabilityDetails_nilForUnlimitedAvailability | 3ms |
| โ | TPPBookTests | test_getAvailabilityDetails_populatesForLimitedAvailability | 4ms |
| โ | TPPBookTests | test_getExpirationDate_nilForUnlimitedAvailability | 4ms |
| โ | TPPBookTests | test_getExpirationDate_returnsDateForLimitedAvailability | 11ms |
| โ | TPPBookTests | test_getExpirationDate_returnsRawUntilDate_andIsExpiredFlagsPastDates | 3ms |
| โ | TPPBookTests | test_getReservationDetails_populatesFromReservedAvailability | 8ms |
| โ | TPPBookTests | test_getReservationDetails_timeUnitPluralForMultipleDays | 3ms |
| โ | TPPBookTests | test_getReservationDetails_timeUnitSingularForOneDay | 2ms |
| โ | TPPBookTests | test_getReservationDetails_zeroValuesForUnlimitedAvailability | 2ms |
| โ | TPPBookTests | test_hasDuration_falseWhenDurationEmpty | 2ms |
| โ | TPPBookTests | test_hasDuration_falseWhenDurationNil | 2ms |
| โ | TPPBookTests | test_hasDuration_trueWhenDurationSet | 3ms |
| โ | TPPBookTests | test_identifiable_conformance | 7ms |
| โ | TPPBookTests | test_isAudiobook_falseForEpub | 2ms |
| โ | TPPBookTests | test_isAudiobook_falseForPDF | 4ms |
| โ | TPPBookTests | test_isAudiobook_trueForAudiobookContentType | 4ms |
| โ | TPPBookTests | test_isExpired_falseWhenNoExpiration | 4ms |
| โ | TPPBookTests | test_mergingPreservingMetadata_carriesCoverImageFromSelf | 29ms |
| โ | TPPBookTests | test_mergingPreservingMetadata_fallsBackToFreshCoverImage | 3ms |
| โ | TPPBookTests | test_mergingPreservingMetadata_preservesRichSelfFieldsWhenFreshIsEmpty | 6ms |
| โ | TPPBookTests | test_mergingPreservingMetadata_preservesSelfAuthorsWhenFreshIsEmpty | 3ms |
| โ | TPPBookTests | test_mergingPreservingMetadata_preservesSelfAuthorsWhenFreshIsNil | 3ms |
| โ | TPPBookTests | test_mergingPreservingMetadata_preservesSelfIdentifier | 4ms |
| โ | TPPBookTests | test_mergingPreservingMetadata_takesFreshAuthorsWhenPresent | 2ms |
| โ | TPPBookTests | test_mergingPreservingMetadata_usesFreshUpdatedTimestamp | 2ms |
| โ | TPPBookTests | test_narrators_joinsContributorsNrt | 22ms |
| โ | TPPBookTests | test_narrators_nilWhenNoContributors | 3ms |
| โ | TPPBookTests | test_narrators_nilWhenNoNrtKey | 2ms |
| โ | TPPBookTests | test_ordinalString_eleventh | 2ms |
| โ | TPPBookTests | test_ordinalString_first | 2ms |
| โ | TPPBookTests | test_ordinalString_hundredAndFirst | 3ms |
| โ | TPPBookTests | test_ordinalString_second | 4ms |
| โ | TPPBookTests | test_ordinalString_third | 18ms |
| โ | TPPBookTests | test_ordinalString_thirteenth | 2ms |
| โ | TPPBookTests | test_ordinalString_twelfth | 2ms |
| โ | TPPBookTests | test_ordinalString_twentyFirst | 4ms |
| โ | TPPBookTests | test_reservationDetails_defaultValues | 2ms |
| โ | TPPBookTests | test_sampleAcquisition_nilWhenNoSampleOrPreview | 3ms |
| โ | TPPBookTests | test_sampleAcquisition_returnsPreviewLinkAsFallback | 3ms |
| โ | TPPBookmarkDeletionLogTests | testClearAllDeletions_OnlyAffectsSpecifiedBook | 8ms |
| โ | TPPBookmarkDeletionLogTests | testClearAllDeletions_RemovesAllForBook | 8ms |
| โ | TPPBookmarkDeletionLogTests | testClearDeletion_RemovesSpecificAnnotation | 6ms |
| โ | TPPBookmarkDeletionLogTests | testLogDeletion_AddsToPendingDeletions | 8ms |
| โ | TPPBookmarkDeletionLogTests | testLogDeletion_HandlesDuplicates | 9ms |
| โ | TPPBookmarkDeletionLogTests | testLogDeletion_IgnoresEmptyAnnotationId | 7ms |
| โ | TPPBookmarkDeletionLogTests | testLogDeletion_MultipleDeletionsForSameBook | 10ms |
| โ | TPPBookmarkDeletionLogTests | testPP3555_ClearAllDeletionsOnBookReturn | 14ms |
| โ | TPPBookmarkDeletionLogTests | testPP3555_DeletionLogTracksBookmarksForServerDeletion | 12ms |
| โ | TPPBookmarkDeletionLogTests | testPendingDeletions_ReturnsEmptyForUnknownBook | 6ms |
| โ | TPPBookmarkDeletionLogTests | testThreadSafety_ConcurrentWrites | 55ms |
| โ | TPPBookmarkFactoryInitTests | testInit_StoresProperties | 14ms |
| โ | TPPBookmarkFactoryInitTests | testInit_WithNilDeviceId_CreatesFactory | 3ms |
| โ | TPPBookmarkFactoryServerAnnotationEdgeCaseTests | testMakeFromServerAnnotation_DoubleProgressValue_ConvertsToFloat | 8ms |
| โ | TPPBookmarkFactoryServerAnnotationEdgeCaseTests | testMakeFromServerAnnotation_EmptyHref_CreatesBookmarkWithEmptyHref | 6ms |
| โ | TPPBookmarkFactoryServerAnnotationEdgeCaseTests | testMakeFromServerAnnotation_MissingProgressValues_UsesDefaults | 7ms |
| โ | TPPBookmarkFactoryServerAnnotationEdgeCaseTests | testMakeFromServerAnnotation_ProgressFromBodyFallback | 8ms |
| โ | TPPBookmarkFactoryServerAnnotationEdgeCaseTests | testMakeFromServerAnnotation_WithReadingOrderItem_IncludesIt | 6ms |
| โ | TPPBookmarkFactoryTests | testMakeFromServerAnnotation_ExtractsChapterTitle | 4ms |
| โ | TPPBookmarkFactoryTests | testMakeFromServerAnnotation_InvalidSelectorJSON_ReturnsNil | 9ms |
| โ | TPPBookmarkFactoryTests | testMakeFromServerAnnotation_MismatchedBookId_ReturnsNil | 3ms |
| โ | TPPBookmarkFactoryTests | testMakeFromServerAnnotation_MismatchedMotivation_ReturnsNil | 3ms |
| โ | TPPBookmarkFactoryTests | testMakeFromServerAnnotation_MissingAnnotationId_ReturnsNil | 7ms |
| โ | TPPBookmarkFactoryTests | testMakeFromServerAnnotation_MissingBody_ReturnsNil | 4ms |
| โ | TPPBookmarkFactoryTests | testMakeFromServerAnnotation_MissingSelector_ReturnsNil | 4ms |
| โ | TPPBookmarkFactoryTests | testMakeFromServerAnnotation_MissingTarget_ReturnsNil | 7ms |
| โ | TPPBookmarkFactoryTests | testMakeFromServerAnnotation_ReadingProgress_CreatesBookmark | 3ms |
| โ | TPPBookmarkFactoryTests | testMakeFromServerAnnotation_ValidBookmark_CreatesBookmark | 33ms |
| โ | TPPBookmarkFactoryTests | testMake_FromR3Location_CreatesBookmark | 31ms |
| โ | TPPBookmarkFactoryTests | testMake_FromR3Location_GeneratesLocationFromLocator | 25ms |
| โ | TPPBookmarkFactoryTests | testMake_FromR3Location_UsesCreationDate | 28ms |
| โ | TPPBookmarkFactoryTests | testMake_FromR3Location_WithNilProgression_ReturnsNil | 2ms |
| โ | TPPBookmarkFactoryTests | testMake_FromR3Location_WithPagePosition_IncludesPage | 6ms |
| โ | TPPBookmarkR3ConversionTests | testConvertToR3_bookmarkNotInPublication_returnsNil | 4ms |
| โ | TPPBookmarkR3ConversionTests | testConvertToR3_parsesTimeCorrectly | 5ms |
| โ | TPPBookmarkR3ConversionTests | testConvertToR3_preservesChapterTitle | 15ms |
| โ | TPPBookmarkR3ConversionTests | testConvertToR3_preservesProgressionValues | 6ms |
| โ | TPPBookmarkR3ConversionTests | testConvertToR3_validBookmark_createsR3Location | 6ms |
| โ | TPPBookmarkR3LocationTests | testFrom_emptyReadingOrder_returnsNil | 15ms |
| โ | TPPBookmarkR3LocationTests | testFrom_firstChapter_returnsIndexZero | 3ms |
| โ | TPPBookmarkR3LocationTests | testFrom_lastChapter_returnsCorrectIndex | 3ms |
| โ | TPPBookmarkR3LocationTests | testFrom_locatorNotInPublication_returnsNil | 4ms |
| โ | TPPBookmarkR3LocationTests | testFrom_locatorWithDifferentMediaType_findsMatchByHref | 2ms |
| โ | TPPBookmarkR3LocationTests | testFrom_validLocatorInPublication_createsLocation | 3ms |
| โ | TPPBookmarkR3LocationTests | testFrom_withCustomCreationDate_usesProvidedDate | 2ms |
| โ | TPPBookmarkR3LocationTests | testInit_preservesResourceIndex | 2ms |
| โ | TPPBookmarkR3LocationTests | testInit_withDefaultCreationDate_usesCurrentDate | 2ms |
| โ | TPPBookmarkR3LocationTests | testInit_withValidParameters_createsLocation | 5ms |
| โ | TPPBookmarkR3LocationTests | testLocator_preservesMediaType | 6ms |
| โ | TPPBookmarkR3LocationTests | testLocator_preservesProgression | 2ms |
| โ | TPPBookmarkR3LocationTests | testLocator_preservesTitle | 2ms |
| โ | TPPBookmarkSpecTests | testBookmarkMotivationKeyword | 5ms |
| โ | TPPCachingTests | testMaxAgeExtraction | 4ms |
| โ | TPPCachingTests | testResponseModification | 8ms |
| โ | TPPCachingTests | testSufficientCacheHeaders | 4ms |
| โ | TPPCapturedCredentialsTests | testFinalizeSignIn_fallsBackToUIDelegate_whenCapturedNil | 107ms |
| โ | TPPCapturedCredentialsTests | testFinalizeSignIn_usesCapturedCredentials_whenUIDelegateCleared | 150ms |
| โ | TPPCapturedCredentialsTests | testLogIn_refreshesCapturedCredentials_onSubsequentAttempts | 315ms |
| โ | TPPCapturedCredentialsTests | testUpdateUserAccount_usesAtomicUpdateWithCorrectLibraryUUID | 128ms |
| โ | TPPCapturedCredentialsTests | testUpdateUserAccount_withAuthToken_savesAllCredentials | 110ms |
| โ | TPPConfigurationTests | test_accentColor_returnsValidUIColor | 4ms |
| โ | TPPConfigurationTests | test_appearanceWithBackgroundColor_usesProvidedColor | 42ms |
| โ | TPPConfigurationTests | test_backgroundColor_returnsValidUIColor | 6ms |
| โ | TPPConfigurationTests | test_backgroundMediaOverlayHighlightColor_returnsValidUIColor | 2ms |
| โ | TPPConfigurationTests | test_betaUrlHash_isNonEmpty | 4ms |
| โ | TPPConfigurationTests | test_betaUrl_isValid | 2ms |
| โ | TPPConfigurationTests | test_boldSystemFontName_returnsNonEmptyString | 2ms |
| โ | TPPConfigurationTests | test_defaultAppearance_returnsConfiguredAppearance | 17ms |
| โ | TPPConfigurationTests | test_defaultBookmarkRowHeight_returnsPositiveValue | 2ms |
| โ | TPPConfigurationTests | test_defaultTOCRowHeight_returnsPositiveValue | 2ms |
| โ | TPPConfigurationTests | test_mainColor_returnsValidUIColor | 8ms |
| โ | TPPConfigurationTests | test_palaceRed_returnsValidUIColor | 8ms |
| โ | TPPConfigurationTests | test_prodUrlHash_isDeterministic | 2ms |
| โ | TPPConfigurationTests | test_prodUrlHash_isNonEmpty | 3ms |
| โ | TPPConfigurationTests | test_prodUrl_isValid | 3ms |
| โ | TPPConfigurationTests | test_readerBackgroundColor_returnsValidUIColor | 7ms |
| โ | TPPConfigurationTests | test_readerBackgroundDarkColor_returnsValidUIColor | 3ms |
| โ | TPPConfigurationTests | test_readerBackgroundSepiaColor_returnsValidUIColor | 3ms |
| โ | TPPConfigurationTests | test_semiBoldSystemFontName_returnsNonEmptyString | 5ms |
| โ | TPPConfigurationTests | test_systemFontFamilyName_returnsNonEmptyString | 4ms |
| โ | TPPConfigurationTests | test_systemFontFamilyName_returnsOpenSans | 6ms |
| โ | TPPConfigurationTests | test_systemFontName_returnsNonEmptyString | 6ms |
| โ | TPPContentTypeTests | testFrom_EmptyString_ReturnsUnsupported | 2ms |
| โ | TPPContentTypeTests | testFrom_EpubZip_ReturnsEpub | 2ms |
| โ | TPPContentTypeTests | testFrom_NilMimeType_ReturnsUnsupported | 3ms |
| โ | TPPContentTypeTests | testFrom_OctetStream_ReturnsEpub | 4ms |
| โ | TPPContentTypeTests | testFrom_OpenAccessAudiobook_ReturnsAudiobook | 3ms |
| โ | TPPContentTypeTests | testFrom_OpenAccessPDF_ReturnsPDF | 9ms |
| โ | TPPContentTypeTests | testFrom_UnknownMimeType_ReturnsUnsupported | 3ms |
| โ | TPPCredentialConcurrencyTests | testAtomicUpdate_writesAreVisibleInSnapshot | 3ms |
| โ | TPPCredentialConcurrencyTests | testConcurrentRefreshCredentials_doesNotCrash | 7ms |
| โ | TPPCredentialConcurrencyTests | testConcurrentSnapshots_returnConsistentData | 3ms |
| โ | TPPCredentialIsolationE2ETests | testMarkCredentialsStale_doesNotAffectOtherAccount | 31ms |
| โ | TPPCredentialIsolationE2ETests | testRapidSwitching_500Iterations_noContamination | 38ms |
| โ | TPPCredentialIsolationE2ETests | testSignInA_switchB_signInB_signOutB_verifyAIntact | 29ms |
| โ | TPPCredentialIsolationE2ETests | testSignInA_switchToB_signInB_verifyAIntact | 37ms |
| โ | TPPCredentialIsolationE2ETests | testThreeLibraries_allIsolated | 38ms |
| โ | TPPCredentialPersistenceTests | testFullSignInFlow_authStateIsLoggedIn | 121ms |
| โ | TPPCredentialPersistenceTests | testFullSignInFlow_completionCalledOnce | 204ms |
| โ | TPPCredentialPersistenceTests | testFullSignInFlow_credentialsRemainAccessible | 176ms |
| โ | TPPCredentialPersistenceTests | testUpdateUserAccount_basicAuth_setsCredentialsAndAuthState | 188ms |
| โ | TPPCredentialPersistenceTests | testUpdateUserAccount_credentialsPersistedAndRefreshable | 138ms |
| โ | TPPCredentialPersistenceTests | testUpdateUserAccount_noSelectedAuth_stillMarksLoggedIn | 161ms |
| โ | TPPCredentialSnapshotCoherenceTests | testCredentialSnapshot_AuthStateTransitions_ArePeerVisible | 6ms |
| โ | TPPCredentialSnapshotCoherenceTests | testCredentialSnapshot_ReflectsRemoveAllFromPeerInstance | 18ms |
| โ | TPPCredentialSnapshotCoherenceTests | testCredentialSnapshot_ReflectsWriteFromPeerInstance | 34ms |
| โ | TPPCredentialSnapshotTests | testSnapshot_identifiesTokenCredentials | 107ms |
| โ | TPPCredentialSnapshotTests | testSnapshot_isSignedInLogic_OAuth_stale | 2ms |
| โ | TPPCredentialSnapshotTests | testSnapshot_isSignedInLogic_basicAuth | 13ms |
| โ | TPPCredentialSnapshotTests | testSnapshot_isSignedInLogic_basicAuth_stale | 2ms |
| โ | TPPCredentialSnapshotTests | testSnapshot_isSignedInLogic_loggedOut | 4ms |
| โ | TPPCredentialSnapshotTests | testSnapshot_reportsNoCredentials | 2ms |
| โ | TPPCredentialSnapshotTests | testSnapshot_returnsAuthState | 2ms |
| โ | TPPCredentialSnapshotTests | testSnapshot_returnsCredentialsAfterSet | 2ms |
| โ | TPPCredentialsCoverageTests | testBarcodeAndPin_codableRoundTrip | 4ms |
| โ | TPPCredentialsCoverageTests | testBarcodeAndPin_storesFields | 3ms |
| โ | TPPCredentialsCoverageTests | testCookies_codableRoundTrip | 15ms |
| โ | TPPCredentialsCoverageTests | testCookies_storesCookies | 2ms |
| โ | TPPCredentialsCoverageTests | testToken_codableRoundTrip | 3ms |
| โ | TPPCredentialsCoverageTests | testToken_nilOptionals_codableRoundTrip | 6ms |
| โ | TPPCredentialsCoverageTests | testToken_optionalDefaults | 5ms |
| โ | TPPCredentialsCoverageTests | testToken_storesFields | 4ms |
| โ | TPPCredentialsCoverageTests | testTypeID_rawValues | 3ms |
| โ | TPPCredentialsTests | testBarcodeAndPin_WithEmptyValues_StoresEmptyStrings | 2ms |
| โ | TPPCredentialsTests | testBarcodeAndPin_WithSpecialCharacters_PreservesCharacters | 34ms |
| โ | TPPCredentialsTests | testBarcodeAndPin_WithValidData_StoresValues | 2ms |
| โ | TPPCredentialsTests | testCookies_WithEmptyArray_StoresEmptyArray | 2ms |
| โ | TPPCredentialsTests | testCookies_WithMultipleCookies_StoresAllCookies | 2ms |
| โ | TPPCredentialsTests | testCookies_WithValidCookies_StoresCookies | 2ms |
| โ | TPPCredentialsTests | testDecode_WithInvalidTypeID_ThrowsError | 5ms |
| โ | TPPCredentialsTests | testDecode_WithMissingType_ThrowsError | 3ms |
| โ | TPPCredentialsTests | testEncodeDecode_BarcodeAndPin_PreservesValues | 3ms |
| โ | TPPCredentialsTests | testEncodeDecode_BarcodeAndPin_WithEmptyStrings | 5ms |
| โ | TPPCredentialsTests | testEncodeDecode_BarcodeAndPin_WithLongStrings | 4ms |
| โ | TPPCredentialsTests | testEncodeDecode_Cookies_WithEmptyArray | 6ms |
| โ | TPPCredentialsTests | testEncodeDecode_Cookies_WithMultipleCookies | 8ms |
| โ | TPPCredentialsTests | testEncodeDecode_Cookies_WithValidCookies | 6ms |
| โ | TPPCredentialsTests | testEncodeDecode_Token_ExpirationDatePrecision | 5ms |
| โ | TPPCredentialsTests | testEncodeDecode_Token_WithAllProperties | 4ms |
| โ | TPPCredentialsTests | testEncodeDecode_Token_WithEmptyAuthToken | 3ms |
| โ | TPPCredentialsTests | testEncodeDecode_Token_WithNilOptionals | 3ms |
| โ | TPPCredentialsTests | testEncodeDecode_Token_WithSpecialCharacters | 2ms |
| โ | TPPCredentialsTests | testEncodeDecode_Token_WithUnicodeCharacters | 5ms |
| โ | TPPCredentialsTests | testToken_WithAllProperties_StoresValues | 5ms |
| โ | TPPCredentialsTests | testToken_WithEmptyAuthToken_StoresEmptyString | 15ms |
| โ | TPPCredentialsTests | testToken_WithOnlyAuthToken_StoresNilOptionals | 4ms |
| โ | TPPCredentialsTests | testTypeID_BarcodeAndPinHasCorrectRawValue | 3ms |
| โ | TPPCredentialsTests | testTypeID_CookiesHasCorrectRawValue | 3ms |
| โ | TPPCredentialsTests | testTypeID_TokenHasCorrectRawValue | 2ms |
| โ | TPPCrossLibrarySignOutTests | testMultiLibraryMock_returnsSeparateAccountsPerUUID | 103ms |
| โ | TPPCrossLibrarySignOutTests | testSequentialSignOuts_ofMultipleLibraries_clearCorrectCredentials | 151ms |
| โ | TPPCrossLibrarySignOutTests | testSignOut_ofNonActiveLibrary_doesNotClearActiveLibraryCredentials | 111ms |
| โ | TPPCrossLibrarySignOutTests | testSignOut_ofNonActiveOAuthLibrary_doesNotClearActiveLibraryToken | 136ms |
| โ | TPPCrossLibrarySignOutTests | testSignOut_ofNonActiveSAMLLibrary_doesNotClearActiveLibraryCookies | 116ms |
| โ | TPPCrossLibrarySignOutTests | testUserAccount_isScopedToLibraryAccountID | 124ms |
| โ | TPPDRMFailureCredentialPreservationTests | testUpdateUserAccount_drmFailure_doesNotChangeAuthState | 123ms |
| โ | TPPDRMFailureCredentialPreservationTests | testUpdateUserAccount_drmFailure_doesNotWipeExistingCredentials | 117ms |
| โ | TPPDRMFailureCredentialPreservationTests | testUpdateUserAccount_drmFailure_noExistingCredentials_noWipe | 129ms |
| โ | TPPDRMFailureCredentialPreservationTests | testUpdateUserAccount_drmSuccess_doesSaveCredentials | 141ms |
| โ | TPPEncryptedPDFDataProviderTests | test_dataProvider_returnsValidCGDataProvider | 23ms |
| โ | TPPEncryptedPDFDataProviderTests | test_initWithEmptyData_succeeds | 5ms |
| โ | TPPEncryptedPDFDataProviderTests | test_initWithValidData_succeeds | 2ms |
| โ | TPPErrorLoggerTests | testClientDomain_isCorrect | 2ms |
| โ | TPPErrorLoggerTests | testErrorCode_appLaunchAndRegistryCodesAreDistinct | 2ms |
| โ | TPPErrorLoggerTests | testErrorCode_drmCodesAreSeparateFromNetworking | 4ms |
| โ | TPPErrorLoggerTests | testErrorCode_ignoreProducesNoError | 3ms |
| โ | TPPErrorLoggerTests | testErrorCode_imageLoadingCodesAreUnique | 3ms |
| โ | TPPErrorLoggerTests | testErrorCode_networkingCodesAreUnique | 2ms |
| โ | TPPErrorLoggerTests | testErrorCode_parseAndImageGroupsDoNotOverlap | 3ms |
| โ | TPPErrorLoggerTests | testErrorCode_parseFailureCodesAreUnique | 4ms |
| โ | TPPErrorLoggerTests | testErrorCode_signInCodesAreDistinct | 2ms |
| โ | TPPErrorLoggerTests | testErrorCodes_areUnique | 5ms |
| โ | TPPErrorLoggerTests | testImageDecodeFail_doesNotCrash | 33ms |
| โ | TPPErrorLoggerTests | testImageHostFailure_isThrottled | 13ms |
| โ | TPPErrorLoggerTests | testLogBarcodeException_doesNotCrash | 35ms |
| โ | TPPErrorLoggerTests | testLogError_withCodeAndSummary_doesNotCrash | 6ms |
| โ | TPPErrorLoggerTests | testLogError_withErrorAndSummary_doesNotCrash | 9ms |
| โ | TPPErrorLoggerTests | testLogInvalidLicensor_doesNotCrash | 17ms |
| โ | TPPErrorLoggerTests | testLogInvalidLicensor_withNilAccountID_doesNotCrash | 23ms |
| โ | TPPErrorLoggerTests | testLogLocalAuthFailed_doesNotCrash | 8ms |
| โ | TPPErrorLoggerTests | testLogLoginError_withProblemDocument_doesNotCrash | 7ms |
| โ | TPPErrorLoggerTests | testLogNetworkError_doesNotCrash | 11ms |
| โ | TPPErrorLoggerTests | testLogNetworkError_withIgnoreCode_usesApiCallCode | 11ms |
| โ | TPPErrorLoggerTests | testLogNetworkError_withNilSummary_usesDefault | 14ms |
| โ | TPPErrorLoggerTests | testLogProblemDocumentParseError_doesNotCrash | 29ms |
| โ | TPPErrorLoggerTests | testLogProblemDocumentParseError_withNilData_doesNotCrash | 11ms |
| โ | TPPErrorLoggerTests | testSeverity_errorStringValue | 4ms |
| โ | TPPErrorLoggerTests | testSeverity_infoStringValue | 2ms |
| โ | TPPErrorLoggerTests | testSeverity_warningStringValue | 5ms |
| โ | TPPIdleSignOutRegressionTests | testCancelPendingSignOut_preventsCredentialCleanup | 185ms |
| โ | TPPIdleSignOutRegressionTests | testNormalSignOut_stillClearsCredentials | 194ms |
| โ | TPPIdleSignOutRegressionTests | testOAuthSignOut401_clearsTokenCredentials | 222ms |
| โ | TPPIdleSignOutRegressionTests | testRaceCondition_signInDuringPendingDeauth_preservesNewCredentials | 278ms |
| โ | TPPIdleSignOutRegressionTests | testRapidSignOutSignInCycles_doNotCorruptState | 273ms |
| โ | TPPIdleSignOutRegressionTests | testSignOut401_clearsCredentials | 188ms |
| โ | TPPIdleSignOutRegressionTests | testSignOut401_deauthorizesDeviceWithLicensor | 165ms |
| โ | TPPIdleSignOutRegressionTests | testSignOut401_doesNotShowUnexpectedCredentialsError | 172ms |
| โ | TPPIdleSignOutRegressionTests | testSignOut500_showsErrorToUser | 235ms |
| โ | TPPIdleSignOutRegressionTests | testSignOutSignInCycle_licensorPreservedForBorrow | 193ms |
| โ | TPPIdleSignOutRegressionTests | testSignOut_alwaysCallsDidFinishDeauthorizing | 220ms |
| โ | TPPIdleSignOutRegressionTests | testSignOut_withNoDRMAuthorizer_completes | 178ms |
| โ | TPPIdleSignOutRegressionTests | testStaleSignOut_stillCallsDidFinishDeauthorizing | 196ms |
| โ | TPPJWKConversionTest | testJWKConversion | 30ms |
| โ | TPPKeychainManagerTests | testLogKeychainError_doesNotCrash_withEmptyMessage | 12ms |
| โ | TPPKeychainManagerTests | testLogKeychainError_doesNotCrash_withEmptyVendor | 12ms |
| โ | TPPKeychainManagerTests | testLogKeychainError_doesNotCrash_withKnownStatuses | 67ms |
| โ | TPPKeychainManagerTests | testLogKeychainError_doesNotCrash_withUnknownStatus | 17ms |
| โ | TPPKeychainManagerTests | testSecClassItems_coversAllExpectedTypes | 5ms |
| โ | TPPLastReadPositionPosterTests | testStoreReadPosition_multipleCalls_updatesLocation | 3ms |
| โ | TPPLastReadPositionPosterTests | testStoreReadPosition_positiveProgression_stores | 5ms |
| โ | TPPLastReadPositionPosterTests | testStoreReadPosition_validLocator_savesToRegistry | 3ms |
| โ | TPPLastReadPositionPosterTests | testStoreReadPosition_zeroProgressionNoCssSelector_doesNotStore | 2ms |
| โ | TPPLastReadPositionPosterTests | testStoreReadPosition_zeroProgression_withCssSelector_savesToRegistry | 3ms |
| โ | TPPLastReadPositionPosterTests | testThrottlingInterval_hasReasonableValue | 4ms |
| โ | TPPLastReadPositionSynchronizerIntegrationTests | testRealSynchronizer_Init_Succeeds | 4ms |
| โ | TPPLastReadPositionSynchronizerIntegrationTests | testRealSynchronizer_MultipleBooks_IndependentLocations | 4ms |
| โ | TPPLastReadPositionSynchronizerIntegrationTests | testRealSynchronizer_WithEmptyRegistry_DoesNotCrash | 4ms |
| โ | TPPLastReadPositionSynchronizerIntegrationTests | testRealSynchronizer_WithManyBooks_PerformsEfficiently | 54ms |
| โ | TPPLastReadPositionSynchronizerIntegrationTests | testRealSynchronizer_WithRegistryContainingBook_AccessesLocation | 3ms |
| โ | TPPLastReadPositionSynchronizerTests | testBookRegistry_GetLocation_ForNonexistentBook_ReturnsNil | 4ms |
| โ | TPPLastReadPositionSynchronizerTests | testBookRegistry_SetLocationToNil_ClearsPosition | 4ms |
| โ | TPPLastReadPositionSynchronizerTests | testBookRegistry_SetLocation_UpdatesPosition | 4ms |
| โ | TPPLastReadPositionSynchronizerTests | testBookRegistry_StoresLocation | 24ms |
| โ | TPPLastReadPositionSynchronizerTests | testBookRegistry_UpdateLocation_OverwritesPrevious | 3ms |
| โ | TPPLastReadPositionSynchronizerTests | testReadiumBookmark_StoresAllProperties | 4ms |
| โ | TPPLastReadPositionSynchronizerTests | testSyncDecision_WhenBothDeviceIDsNilButLocalExists_ReturnsTrue | 6ms |
| โ | TPPLastReadPositionSynchronizerTests | testSyncDecision_WhenDifferentDeviceWithDifferentPosition_ReturnsTrue | 2ms |
| โ | TPPLastReadPositionSynchronizerTests | testSyncDecision_WhenDifferentDeviceWithNoLocalPosition_ReturnsTrue | 6ms |
| โ | TPPLastReadPositionSynchronizerTests | testSyncDecision_WhenNilLocalDeviceIDAndServerHasDevice_ReturnsTrue | 3ms |
| โ | TPPLastReadPositionSynchronizerTests | testSyncDecision_WhenPositionsMatchExactly_RegardlessOfDevice_ReturnsFalse | 3ms |
| โ | TPPLastReadPositionSynchronizerTests | testSyncDecision_WhenSameDeviceWithLocalPosition_ReturnsFalse | 4ms |
| โ | TPPLastReadPositionSynchronizerTests | testSyncDecision_WhenSameDeviceWithNoLocalPosition_ReturnsTrue | 3ms |
| โ | TPPLastReadPositionSynchronizerTests | testSyncDecision_WhenServerBookmarkHasEmptyDevice_AndLocalDeviceEmpty_ReturnsFalse | 3ms |
| โ | TPPLastReadPositionSynchronizerTests | testSyncDecision_WhenServerDeviceIsNilAndLocalDeviceIDEmpty_ReturnsFalse | 3ms |
| โ | TPPLastReadPositionSynchronizerTests | testSyncDecision_WhenServerHasNoPositionAndNilDeviceID_ReturnsFalse | 3ms |
| โ | TPPLastReadPositionSynchronizerTests | testSyncDecision_WhenServerHasNoPositionAndNoLocalPosition_ReturnsFalse | 4ms |
| โ | TPPLastReadPositionSynchronizerTests | testSyncDecision_WhenServerHasNoPosition_ReturnsFalse | 5ms |
| โ | TPPLastReadPositionSynchronizerTests | testSyncDecision_WhenServerPositionMatchesLocal_ReturnsFalse | 8ms |
| โ | TPPLastReadPositionSynchronizerTests | testSyncDecision_WhenServerReturnsNilOnError_ReturnsFalse | 3ms |
| โ | TPPLastReadPositionSynchronizerTests | testSyncDecision_WithMatchingLocation_StillComparesAsStrings | 4ms |
| โ | TPPLastReadPositionSynchronizerTests | testSynchronizer_Init_AcceptsDifferentRegistryImplementations | 13ms |
| โ | TPPLastReadPositionSynchronizerTests | testSynchronizer_Init_StoresBookRegistry | 2ms |
| โ | TPPLastReadPositionSynchronizer_BehaviorDocumentationTests | testBehavior_DifferentDevice_UserShouldBePrompted | 4ms |
| โ | TPPLastReadPositionSynchronizer_BehaviorDocumentationTests | testBehavior_FreshDevice_ShouldSyncFromServer | 5ms |
| โ | TPPLastReadPositionSynchronizer_BehaviorDocumentationTests | testBehavior_IdenticalPositions_NoPromptNeeded | 4ms |
| โ | TPPLastReadPositionSynchronizer_BehaviorDocumentationTests | testBehavior_NoServerPosition_NoSync | 3ms |
| โ | TPPLastReadPositionSynchronizer_BehaviorDocumentationTests | testBehavior_SameDevice_LocalPositionIsAuthoritative | 3ms |
| โ | TPPLastReadPositionSynchronizer_BookLocationTests | testTPPBookLocation_Creation_WithValidParameters | 4ms |
| โ | TPPLastReadPositionSynchronizer_BookLocationTests | testTPPBookLocation_DictionaryRepresentation_ContainsRequiredKeys | 2ms |
| โ | TPPLastReadPositionSynchronizer_BookLocationTests | testTPPBookLocation_DifferentLocationStrings_AreNotEqual | 3ms |
| โ | TPPLastReadPositionSynchronizer_BookLocationTests | testTPPBookLocation_EmptyLocationString_IsValid | 2ms |
| โ | TPPLastReadPositionSynchronizer_BookLocationTests | testTPPBookLocation_FromDictionary_CreatesValidLocation | 2ms |
| โ | TPPLastReadPositionSynchronizer_BookLocationTests | testTPPBookLocation_FromDictionary_WithMissingKeys_ReturnsNil | 2ms |
| โ | TPPLastReadPositionSynchronizer_BookLocationTests | testTPPBookLocation_LocationStringEquality_MatchesExactly | 3ms |
| โ | TPPLastReadPositionSynchronizer_BookLocationTests | testTPPBookLocation_R3Renderer_HasCorrectValue | 2ms |
| โ | TPPLastReadPositionSynchronizer_BookLocationTests | testTPPBookLocation_VeryLongLocationString_IsHandled | 2ms |
| โ | TPPLastReadPositionSynchronizer_ConcurrencyTests | testConcurrentLocationUpdates_DoNotCrash | 10ms |
| โ | TPPLastReadPositionSynchronizer_ConcurrencyTests | testConcurrentSyncDecisions_AreConsistent | 15ms |
| โ | TPPLastReadPositionSynchronizer_ConcurrencyTests | testMultipleSynchronizersWithSameRegistry_DoNotConflict | 7ms |
| โ | TPPLastReadPositionSynchronizer_ReadiumBookmarkTests | testReadiumBookmark_DeviceProperty_WithNilDevice_ReturnsNil | 8ms |
| โ | TPPLastReadPositionSynchronizer_ReadiumBookmarkTests | testReadiumBookmark_DictionaryRepresentation_ContainsAllKeys | 5ms |
| โ | TPPLastReadPositionSynchronizer_ReadiumBookmarkTests | testReadiumBookmark_Equality_SameAnnotationId | 5ms |
| โ | TPPLastReadPositionSynchronizer_ReadiumBookmarkTests | testReadiumBookmark_FullProgress_FormatsAs100 | 4ms |
| โ | TPPLastReadPositionSynchronizer_ReadiumBookmarkTests | testReadiumBookmark_Init_WithNilHref_ReturnsNil | 2ms |
| โ | TPPLastReadPositionSynchronizer_ReadiumBookmarkTests | testReadiumBookmark_Init_WithValidParameters | 3ms |
| โ | TPPLastReadPositionSynchronizer_ReadiumBookmarkTests | testReadiumBookmark_PercentInBook_FormatsCorrectly | 3ms |
| โ | TPPLastReadPositionSynchronizer_ReadiumBookmarkTests | testReadiumBookmark_PercentInChapter_FormatsCorrectly | 20ms |
| โ | TPPLastReadPositionSynchronizer_ReadiumBookmarkTests | testReadiumBookmark_ZeroProgress_FormatsAsZero | 6ms |
| โ | TPPLastReadPositionSynchronizer_SyncLogicTests | testSyncLogic_DeviceCheckTakesPrecedenceOverLocationMatch | 6ms |
| โ | TPPLastReadPositionSynchronizer_SyncLogicTests | testSyncLogic_DeviceIDCaseSensitivity | 2ms |
| โ | TPPLastReadPositionSynchronizer_SyncLogicTests | testSyncLogic_DeviceIDWithSpecialCharacters | 2ms |
| โ | TPPLastReadPositionSynchronizer_SyncLogicTests | testSyncLogic_LocationMatchPreventsSync_EvenFromDifferentDevice | 9ms |
| โ | TPPLastReadPositionSynchronizer_SyncLogicTests | testSyncLogic_LocationWithWhitespace_ExactMatchRequired | 93ms |
| โ | TPPLastReadPositionSynchronizer_SyncLogicTests | testSyncLogic_ProgressAtExactBoundaries | 3ms |
| โ | TPPLastReadPositionSynchronizer_SyncLogicTests | testSyncLogic_SameBookmarkLocation_ExactStringMatch | 16ms |
| โ | TPPLastReadPositionSynchronizer_SyncLogicTests | testSyncLogic_SameLocationString_HandledGracefully | 7ms |
| โ | TPPLastReadPositionSynchronizer_SyncLogicTests | testSyncLogic_VeryLongDeviceID | 2ms |
| โ | TPPLastReadPositionSynchronizer_SyncLogicTests | testSyncLogic_VerySmallProgressDifference | 6ms |
| โ | TPPLoginNoActivationTests | testValidateCredentials_doesNotTriggerAdobeActivation | 139ms |
| โ | TPPLoginNoActivationTests | testValidateCredentials_savesLicensorForLaterUse | 173ms |
| โ | TPPLoginNoActivationTests | testValidateCredentials_withStaleCredentials_doesNotActivate | 147ms |
| โ | TPPMainThreadCheckerTests | testAsyncIfNeeded_FromBackgroundThread_DispatchesAsyncToMain | 19ms |
| โ | TPPMainThreadCheckerTests | testAsyncIfNeeded_FromMainThread_ExecutesSynchronously | 2ms |
| โ | TPPMainThreadCheckerTests | testSync_FromBackgroundThread_DispatchesToMainThread | 22ms |
| โ | TPPMainThreadCheckerTests | testSync_FromMainThread_ExecutesSynchronously | 3ms |
| โ | TPPMigrationManagerTests | testVersion_emptyA_nonEmptyB_returnsTrue | 2ms |
| โ | TPPMigrationManagerTests | testVersion_emptyA_zeroB_returnsFalse | 5ms |
| โ | TPPMigrationManagerTests | testVersion_emptyA_zeroZeroB_returnsFalse | 3ms |
| โ | TPPMigrationManagerTests | testVersion_emptyArrays_returnsFalse | 2ms |
| โ | TPPMigrationManagerTests | testVersion_equalVersions_returnsFalse | 2ms |
| โ | TPPMigrationManagerTests | testVersion_longerA_returnsFalse | 4ms |
| โ | TPPMigrationManagerTests | testVersion_majorGreaterThan_returnsFalse | 3ms |
| โ | TPPMigrationManagerTests | testVersion_majorLessThan_returnsTrue | 4ms |
| โ | TPPMigrationManagerTests | testVersion_minorGreaterThan_returnsFalse | 4ms |
| โ | TPPMigrationManagerTests | testVersion_minorLessThan_returnsTrue | 2ms |
| โ | TPPMigrationManagerTests | testVersion_patchLessThan_returnsTrue | 2ms |
| โ | TPPMigrationManagerTests | testVersion_shorterA_withNonZeroRemainder_returnsTrue | 5ms |
| โ | TPPMigrationManagerTests | testVersion_shorterA_withZeroRemainder_returnsFalse | 32ms |
| โ | TPPMigrationManagerTests | testVersion_singleComponent_equal | 3ms |
| โ | TPPMigrationManagerTests | testVersion_singleComponent_lessThan | 4ms |
| โ | TPPNetworkExecutorAPITests | testBearerAuthorized_preservesExistingHeaders | 12ms |
| โ | TPPNetworkExecutorAPITests | testBearerAuthorized_setsAuthorizationHeader | 11ms |
| โ | TPPNetworkExecutorAPITests | testCancelNonEssentialTasks_doesNotCrash | 12ms |
| โ | TPPNetworkExecutorAPITests | testClearCache_doesNotCrash | 12ms |
| โ | TPPNetworkExecutorAPITests | testInit_withCachingStrategy_doesNotCrash | 2ms |
| โ | TPPNetworkExecutorAPITests | testInit_withCustomSessionConfiguration | 2ms |
| โ | TPPNetworkExecutorAPITests | testInit_withDefaultCachingStrategy | 2ms |
| โ | TPPNetworkExecutorAPITests | testInit_withFallbackCachingStrategy | 3ms |
| โ | TPPNetworkExecutorAPITests | testPauseAllTasks_doesNotCrash | 14ms |
| โ | TPPNetworkExecutorAPITests | testRequest_forURL_createsValidRequest | 11ms |
| โ | TPPNetworkExecutorAPITests | testRequest_forURL_setsAcceptLanguageEmpty | 16ms |
| โ | TPPNetworkExecutorAPITests | testRequest_forURL_setsUserAgent | 14ms |
| โ | TPPNetworkExecutorAPITests | testResumeAllTasks_doesNotCrash | 11ms |
| โ | TPPNetworkExecutorAPITests | testShared_isNotNil | 3ms |
| โ | TPPNetworkExecutorStubbedTests | testAddBearerAndExecute_setsAuthHeader | 20ms |
| โ | TPPNetworkExecutorStubbedTests | testDELETE_async_success | 10ms |
| โ | TPPNetworkExecutorStubbedTests | testDELETE_nilCompletion_doesNotCrash | 529ms |
| โ | TPPNetworkExecutorStubbedTests | testDELETE_setsMethodToDELETE | 6ms |
| โ | TPPNetworkExecutorStubbedTests | testDownload_createsDownloadTask | 11ms |
| โ | TPPNetworkExecutorStubbedTests | testGET_async_success | 12ms |
| โ | TPPNetworkExecutorStubbedTests | testGET_async_withRequest | 11ms |
| โ | TPPNetworkExecutorStubbedTests | testGET_correctsHTTPMethodIfNotGET | 5ms |
| โ | TPPNetworkExecutorStubbedTests | testGET_objcAPI_success | 18ms |
| โ | TPPNetworkExecutorStubbedTests | testGET_serverError_returnsFailure | 57ms |
| โ | TPPNetworkExecutorStubbedTests | testGET_success_returnsData | 22ms |
| โ | TPPNetworkExecutorStubbedTests | testPOST_async_success | 6ms |
| โ | TPPNetworkExecutorStubbedTests | testPOST_nilCompletion_doesNotCrash | 507ms |
| โ | TPPNetworkExecutorStubbedTests | testPOST_setsMethodToPOST | 5ms |
| โ | TPPNetworkExecutorStubbedTests | testPUT_async_success | 18ms |
| โ | TPPNetworkExecutorStubbedTests | testPUT_correctsHTTPMethodIfNotPUT | 9ms |
| โ | TPPNetworkExecutorStubbedTests | testPUT_setsMethodToPUT | 16ms |
| โ | TPPNetworkExecutorTests | testExecutor_conformsToProtocol | 5ms |
| โ | TPPNetworkExecutorTests | testExecutor_hasCorrectTimeout | 3ms |
| โ | TPPNetworkExecutorTests | testExecutor_usesEphemeralCaching | 6ms |
| โ | TPPNetworkResponderTests | testAddCompletionStoresTaskInfo | 5ms |
| โ | TPPNetworkResponderTests | testCanRetryReturnsFalseAfterMarkRetried | 4ms |
| โ | TPPNetworkResponderTests | testCanRetryReturnsFalseForNilURL | 6ms |
| โ | TPPNetworkResponderTests | testCanRetryReturnsTrueForFreshURL | 2ms |
| โ | TPPNetworkResponderTests | testClearAllRetriesResetsEverything | 2ms |
| โ | TPPNetworkResponderTests | testClearRetryResetsURL | 2ms |
| โ | TPPNetworkResponderTests | testInitWithCredentialsProvider | 5ms |
| โ | TPPNetworkResponderTests | testInitWithFallbackCachingDisabledByDefault | 3ms |
| โ | TPPNetworkResponderTests | testMarkRetriedWithNilURL_isNoOp_andLeavesRealURLTrackingIntact | 5ms |
| โ | TPPNetworkResponderTests | testMultipleURLsTrackedIndependently | 4ms |
| โ | TPPNetworkResponderTests | testSessionInvalidationCallsPendingCompletionsWithCancelError | 7ms |
| โ | TPPNetworkResponderTests | testUpdateCompletionIdTransfersInfo | 2ms |
| โ | TPPOPDSAcquisitionPathTests | testSampleLinkInAcquisitions | 13ms |
| โ | TPPOPDSAcquisitionPathTests | testSimplifiedAdeptEpubAcquisition | 9ms |
| โ | TPPOPDSEntryTests | testAuthorStrings | 6ms |
| โ | TPPOPDSEntryTests | testEntryFromSingleEntryFixture_parsesAllScalarFields | 22ms |
| โ | TPPOPDSEntryTests | testGroupAttributes | 5ms |
| โ | TPPOPDSEntryTests | testInit_returnsNilWhenRequiredIdElementIsMissing | 6ms |
| โ | TPPOPDSEntryTests | testUpdated | 7ms |
| โ | TPPOPDSFeedTests | testFeedFromMainFixture_parsesAllTopLevelFields | 98ms |
| โ | TPPOPDSFeedTests | testInit_nilXMLYieldsNil_validXMLYieldsParsedFeed | 131ms |
| โ | TPPOPDSFeedTests | testUpdated | 145ms |
| โ | TPPOPDSGroupSwiftTests | testInitStoresEntries | 3ms |
| โ | TPPOPDSGroupSwiftTests | testInitStoresProperties | 2ms |
| โ | TPPOPDSGroupSwiftTests | testInitWithDifferentHref_storesDifferentHref | 1ms |
| โ | TPPOPDSLinkTests | testCount | 6ms |
| โ | TPPOPDSLinkTests | testHandlesNilInit | 4ms |
| โ | TPPOPDSLinkTests | testLink0 | 4ms |
| โ | TPPOPDSLinkTests | testLink1 | 3ms |
| โ | TPPOPDSLinkTests | testLink2 | 3ms |
| โ | TPPOPDSLinkTests | testLink3 | 3ms |
| โ | TPPOPDSLinkTests | testLink4 | 4ms |
| โ | TPPOpenSearchDescriptionExpandedTests | test_initWithTitle_emptyBooks_setsEmptyBooks | 4ms |
| โ | TPPOpenSearchDescriptionExpandedTests | test_initWithTitle_setsDescriptionAndBooks | 2ms |
| โ | TPPOpenSearchDescriptionExpandedTests | test_initWithXML_missingDescription_returnsNil | 8ms |
| โ | TPPOpenSearchDescriptionExpandedTests | test_initWithXML_missingOPDSUrl_returnsNil | 3ms |
| โ | TPPOpenSearchDescriptionExpandedTests | test_initWithXML_validOpenSearchXML_returnsNonNil | 4ms |
| โ | TPPOpenSearchDescriptionExpandedTests | test_opdsURLForSearching_emptyString_returnsURL | 3ms |
| โ | TPPOpenSearchDescriptionExpandedTests | test_opdsURLForSearching_encodesAmpersand | 5ms |
| โ | TPPOpenSearchDescriptionExpandedTests | test_opdsURLForSearching_encodesSpecialCharacters | 2ms |
| โ | TPPOpenSearchDescriptionExpandedTests | test_opdsURLForSearching_encodesUnicode | 4ms |
| โ | TPPOpenSearchDescriptionExpandedTests | test_opdsURLForSearching_preservesEntrypoint | 4ms |
| โ | TPPOpenSearchDescriptionTests | testOPDSURLSearch | 3ms |
| โ | TPPPDFDocumentMetadataTests | testAddBookmark_AtCurrentPage_WhenNilPassed_UsesCurrentPage | 8ms |
| โ | TPPPDFDocumentMetadataTests | testAddBookmark_AtPageZero_HandlesCorrectly | 9ms |
| โ | TPPPDFDocumentMetadataTests | testAddBookmark_AtSpecificPage_AddsToBookmarks | 7ms |
| โ | TPPPDFDocumentMetadataTests | testAddBookmark_DuplicatePage_DoesNotDuplicate | 7ms |
| โ | TPPPDFDocumentMetadataTests | testAddBookmark_MultipleTimes_AddsAllBookmarks | 14ms |
| โ | TPPPDFDocumentMetadataTests | testBookmarks_IsPublished_EmitsChanges | 8ms |
| โ | TPPPDFDocumentMetadataTests | testCurrentPage_IsPublished_EmitsChanges | 9ms |
| โ | TPPPDFDocumentMetadataTests | testIsBookmarked_WhenPageInBookmarks_ReturnsTrue | 8ms |
| โ | TPPPDFDocumentMetadataTests | testIsBookmarked_WhenPageNotInBookmarks_ReturnsFalse | 13ms |
| โ | TPPPDFDocumentMetadataTests | testIsBookmarked_WithEmptyBookmarks_ReturnsFalse | 9ms |
| โ | TPPPDFDocumentMetadataTests | testIsBookmarked_WithLargePageNumber_HandlesCorrectly | 7ms |
| โ | TPPPDFDocumentMetadataTests | testIsBookmarked_WithNilPage_ChecksCurrentPage | 12ms |
| โ | TPPPDFDocumentMetadataTests | testIsBookmarked_WithZeroPage_HandlesCorrectly | 15ms |
| โ | TPPPDFDocumentMetadataTests | testRemoveBookmark_NonexistentPage_DoesNotCrash | 11ms |
| โ | TPPPDFDocumentMetadataTests | testRemoveBookmark_RemovesFromBookmarks | 8ms |
| โ | TPPPDFDocumentTests | testPDFDocument_decryptWithDecryptor | 3ms |
| โ | TPPPDFDocumentTests | testPDFDocument_decryptWithoutDecryptor | 3ms |
| โ | TPPPDFDocumentTests | testPDFDocument_delegateCanBeSet | 105ms |
| โ | TPPPDFDocumentTests | testPDFDocument_encryptedHasNilRegularDocument | 3ms |
| โ | TPPPDFDocumentTests | testPDFDocument_encryptedInit | 2ms |
| โ | TPPPDFDocumentTests | testPDFDocument_labelReturnsNilForInvalidPage | 2ms |
| โ | TPPPDFDocumentTests | testPDFDocument_nonEncryptedHasNilEncryptedDocument | 2ms |
| โ | TPPPDFDocumentTests | testPDFDocument_nonEncryptedInit | 3ms |
| โ | TPPPDFDocumentTests | testPDFDocument_pageCountForInvalidData | 9ms |
| โ | TPPPDFDocumentTests | testPDFDocument_previewReturnsNilForInvalidPage | 13ms |
| โ | TPPPDFDocumentTests | testPDFDocument_sizeReturnsNilForInvalidPage | 3ms |
| โ | TPPPDFDocumentTests | testPDFDocument_tableOfContentsEmptyForInvalidData | 8ms |
| โ | TPPPDFDocumentTests | testPDFDocument_thumbnailReturnsNilForInvalidPage | 2ms |
| โ | TPPPDFLocationCoverageTests | testPDFLocation_defaultLevelIsZero | 33ms |
| โ | TPPPDFLocationCoverageTests | testPDFLocation_differentLocations_differentIds | 3ms |
| โ | TPPPDFLocationCoverageTests | testPDFLocation_id_encodesAllFields | 125ms |
| โ | TPPPDFLocationCoverageTests | testPDFLocation_id_handlesNils | 3ms |
| โ | TPPPDFLocationCoverageTests | testPDFLocation_identifiableId_isDeterministic | 2ms |
| โ | TPPPDFLocationCoverageTests | testPDFLocation_initWithAllParameters | 2ms |
| โ | TPPPDFLocationCoverageTests | testPDFLocation_nilProperties | 2ms |
| โ | TPPPDFLocationTests | testId_ContainsPageNumber | 5ms |
| โ | TPPPDFLocationTests | testId_HandlesNilValues_WithEmptyStrings | 3ms |
| โ | TPPPDFLocationTests | testId_SameForIdenticalLocations | 8ms |
| โ | TPPPDFLocationTests | testId_UniqueForDifferentLevels | 4ms |
| โ | TPPPDFLocationTests | testId_UniqueForDifferentPageLabels | 7ms |
| โ | TPPPDFLocationTests | testId_UniqueForDifferentPages | 2ms |
| โ | TPPPDFLocationTests | testId_UniqueForDifferentSubtitles | 4ms |
| โ | TPPPDFLocationTests | testId_UniqueForDifferentTitles | 4ms |
| โ | TPPPDFLocationTests | testInit_AllParameters_SetsProperties | 5ms |
| โ | TPPPDFLocationTests | testInit_NilOptionals_DefaultsLevelToZero | 294ms |
| โ | TPPPDFPageBookmarkTests | testPageBookmark_annotationIdCanBeSet | 3ms |
| โ | TPPPDFPageBookmarkTests | testPageBookmark_annotationIdDefaultsToNil | 4ms |
| โ | TPPPDFPageBookmarkTests | testPageBookmark_codableRoundTrip | 3ms |
| โ | TPPPDFPageBookmarkTests | testPageBookmark_conformsToBookmark | 6ms |
| โ | TPPPDFPageBookmarkTests | testPageBookmark_decodesFromJSON | 3ms |
| โ | TPPPDFPageBookmarkTests | testPageBookmark_encodesAtTypeKey | 4ms |
| โ | TPPPDFPageBookmarkTests | testPageBookmark_initSetsPage | 2ms |
| โ | TPPPDFPageBookmarkTests | testPageBookmark_isNSObject | 2ms |
| โ | TPPPDFPageBookmarkTests | testPageBookmark_typeIsLocatorPage | 3ms |
| โ | TPPPDFPageTests | testPDFPage_codableRoundTrip | 4ms |
| โ | TPPPDFPageTests | testPDFPage_decodesFromJSON | 2ms |
| โ | TPPPDFPageTests | testPDFPage_encodesToExpectedJSON | 3ms |
| โ | TPPPDFPageTests | testPDFPage_initStoresPageNumber | 3ms |
| โ | TPPPDFPageTests | testPDFPage_zeroPageNumber | 4ms |
| โ | TPPPDFReaderModeTests | testReaderMode_allCasesHaveUniqueValues | 2ms |
| โ | TPPPDFReaderModeTests | testReaderMode_bookmarksValue | 1ms |
| โ | TPPPDFReaderModeTests | testReaderMode_previewsValue | 2ms |
| โ | TPPPDFReaderModeTests | testReaderMode_readerValue | 2ms |
| โ | TPPPDFReaderModeTests | testReaderMode_searchValue | 2ms |
| โ | TPPPDFReaderModeTests | testReaderMode_tocValue | 2ms |
| โ | TPPPerAccountIsolationTests | testConcurrentAccess_noContamination | 28ms |
| โ | TPPPerAccountIsolationTests | testConcurrentSnapshots_returnCorrectData | 39ms |
| โ | TPPPerAccountIsolationTests | testCredentialIsolation_bothAccountsHoldIndependentCredentials | 48ms |
| โ | TPPPerAccountIsolationTests | testCredentialIsolation_tokenCredentials | 27ms |
| โ | TPPPerAccountIsolationTests | testCredentialIsolation_writeToA_doesNotAffectB | 23ms |
| โ | TPPPerAccountIsolationTests | testCredentialSnapshot_perAccountIsolation | 35ms |
| โ | TPPPerAccountIsolationTests | testInstanceCache_isStableSameUUID_distinctDifferentUUIDs_andPreservesBinding | 40ms |
| โ | TPPPerAccountIsolationTests | testRemoveAll_doesNotAffectOtherAccount | 33ms |
| โ | TPPPreferredAuthSelectionTests | testAfterAutoSelection_SelectedAuthIsSaml_forMultiAuthLibrary | 123ms |
| โ | TPPPreferredAuthSelectionTests | testPrecondition_NYPLFixtureHasMultipleAuthMethods | 89ms |
| โ | TPPPreferredAuthSelectionTests | testSelectPreferredAuth_AutoSelectsSoleSAMLIDP | 185ms |
| โ | TPPPreferredAuthSelectionTests | testSelectPreferredAuth_DoesNotOverrideExplicitChoice | 170ms |
| โ | TPPPreferredAuthSelectionTests | testSelectPreferredAuth_DoesNotOverrideExplicitIDPChoice | 131ms |
| โ | TPPPreferredAuthSelectionTests | testSelectPreferredAuth_IsIdempotent | 132ms |
| โ | TPPPreferredAuthSelectionTests | testSelectPreferredAuth_NoOp_ForSingleAuthLibrary | 141ms |
| โ | TPPPreferredAuthSelectionTests | testSelectPreferredAuth_PicksSAML_WhenMultipleAuthsAndNoneSelected | 121ms |
| โ | TPPProblemDocumentCacheManagerTests | testCacheMultipleDocuments_lastEntryRetrievable | 3ms |
| โ | TPPProblemDocumentCacheManagerTests | testCacheProblemDocument_andRetrieve | 6ms |
| โ | TPPProblemDocumentCacheManagerTests | testCacheProblemDocument_postsNotification | 4ms |
| โ | TPPProblemDocumentCacheManagerTests | testCacheSize_isFive | 4ms |
| โ | TPPProblemDocumentCacheManagerTests | testCache_exceedingSize_evictsOldestEntry | 3ms |
| โ | TPPProblemDocumentCacheManagerTests | testClearCachedDoc_nonexistentKey_doesNotCrash | 3ms |
| โ | TPPProblemDocumentCacheManagerTests | testClearCachedDoc_preventsRetrieval | 6ms |
| โ | TPPProblemDocumentCacheManagerTests | testClearThenReCache_works | 4ms |
| โ | TPPProblemDocumentCacheManagerTests | testConcurrentCacheAndClear_sameKey_doesNotCrash | 5ms |
| โ | TPPProblemDocumentCacheManagerTests | testConcurrentReadWrite_doesNotCrash | 7ms |
| โ | TPPProblemDocumentCacheManagerTests | testGetLastCachedDoc_unknownKey_returnsNil | 6ms |
| โ | TPPProblemDocumentCacheManagerTests | testSharedInstance_returnsSameObject | 2ms |
| โ | TPPProblemDocumentTests | testAccountStatusTypeConstants | 5ms |
| โ | TPPProblemDocumentTests | testCodableRoundTrip | 11ms |
| โ | TPPProblemDocumentTests | testDictionaryValue_roundTrip | 24ms |
| โ | TPPProblemDocumentTests | testForExpiredOrMissing_hasCredentials | 5ms |
| โ | TPPProblemDocumentTests | testForExpiredOrMissing_noCredentials | 4ms |
| โ | TPPProblemDocumentTests | testFromData_invalidJSON | 8ms |
| โ | TPPProblemDocumentTests | testFromData_validJSON | 4ms |
| โ | TPPProblemDocumentTests | testFromDictionary_createsDocument | 3ms |
| โ | TPPProblemDocumentTests | testFromProblemResponseData_invalidData | 4ms |
| โ | TPPProblemDocumentTests | testFromProblemResponseData_nonProblemJSON | 3ms |
| โ | TPPProblemDocumentTests | testFromProblemResponseData_validData | 24ms |
| โ | TPPProblemDocumentTests | testFromResponseError_nilErrorNilData | 3ms |
| โ | TPPProblemDocumentTests | testFromResponseError_withResponseData | 6ms |
| โ | TPPProblemDocumentTests | testIsRecoverableAuthError | 6ms |
| โ | TPPProblemDocumentTests | testIsUnrecoverableAuthError | 6ms |
| โ | TPPProblemDocumentTests | testNilType_authChecks | 3ms |
| โ | TPPProblemDocumentTests | testNonAuthError | 6ms |
| โ | TPPProblemDocumentTests | testStaticTypeConstants | 6ms |
| โ | TPPProblemDocumentTests | testStringValue_format | 2ms |
| โ | TPPProblemDocumentTests | testStringValue_noDetail | 4ms |
| โ | TPPProblemDocumentTests | testStringValue_noTitle | 3ms |
| โ | TPPReaderAppearanceTests | testAssociatedColors_blackOnWhite_hasLightBackground | 4ms |
| โ | TPPReaderAppearanceTests | testBlackOnSepia_hasCorrectPropertyIndex | 3ms |
| โ | TPPReaderAppearanceTests | testBlackOnWhite_hasCorrectPropertyIndex | 4ms |
| โ | TPPReaderAppearanceTests | testWhiteOnBlack_hasCorrectPropertyIndex | 2ms |
| โ | TPPReaderBookmarksBusinessLogicTests | testBookmarkAtIndex_WithEmptyBookmarks_ReturnsNil | 138ms |
| โ | TPPReaderBookmarksBusinessLogicTests | testBookmarkAtIndex_WithValidIndex_ReturnsBookmark | 154ms |
| โ | TPPReaderBookmarksBusinessLogicTests | testBookmarkAtIndex_returnsNilForOutOfRangeIndicesEmptyOrPopulated | 128ms |
| โ | TPPReaderBookmarksBusinessLogicTests | testDeleteBookmarkAtIndex_WithInvalidIndex_ReturnsNil | 299ms |
| โ | TPPReaderBookmarksBusinessLogicTests | testDeleteBookmarkAtIndex_WithValidIndex_RemovesAndReturns | 145ms |
| โ | TPPReaderBookmarksBusinessLogicTests | testDeleteBookmark_RemovesFromList | 138ms |
| โ | TPPReaderBookmarksBusinessLogicTests | testPP3555_OldBookmarksDoNotReappearAfterReborrow | 154ms |
| โ | TPPReaderBookmarksBusinessLogicTests | testReadOnlySurfaces_noBookmarksText_shouldSelect_isBookmarkExisting | 115ms |
| โ | TPPReaderBookmarksBusinessLogicTests | testUpdateLocalBookmarksWithDuplicatedLocalBookmarks | 163ms |
| โ | TPPReaderBookmarksBusinessLogicTests | testUpdateLocalBookmarksWithExtraLocalBookmarks | 187ms |
| โ | TPPReaderBookmarksBusinessLogicTests | testUpdateLocalBookmarksWithFailedUploadBookmarks | 130ms |
| โ | TPPReaderBookmarksBusinessLogicTests | testUpdateLocalBookmarksWithNoLocalBookmarks | 120ms |
| โ | TPPReaderFontTests | testDyslexic_hasPropertyIndex | 3ms |
| โ | TPPReaderFontTests | testOriginal_hasCorrectPropertyIndex | 26ms |
| โ | TPPReaderFontTests | testSansSerif_hasPropertyIndex | 2ms |
| โ | TPPReaderFontTests | testSerif_hasPropertyIndex | 2ms |
| โ | TPPReaderPreferencesLoadTests | testTPPReaderPreferencesLoad_disablesPublisherStyles | 2ms |
| โ | TPPReaderPreferencesLoadTests | testTPPReaderPreferencesLoad_returnsValidPreferences | 17ms |
| โ | TPPReaderPreferencesLoadTests | testTPPReaderPreferencesLoad_setsDefaultTheme | 3ms |
| โ | TPPReaderSettingsTests | testCanDecreaseFontSize_falseAtMinimum | 3ms |
| โ | TPPReaderSettingsTests | testCanIncreaseFontSize_trueWhenBelowMax | 5ms |
| โ | TPPReaderSettingsTests | testChangeAppearance_updatesColors | 3ms |
| โ | TPPReaderSettingsTests | testChangeAppearance_updatesIndex | 12ms |
| โ | TPPReaderSettingsTests | testChangeFontFamily_updatesIndex | 7ms |
| โ | TPPReaderSettingsTests | testDecreaseFontSize_decreasesByStep | 6ms |
| โ | TPPReaderSettingsTests | testDecreaseFontSize_respectsMinimum | 3ms |
| โ | TPPReaderSettingsTests | testIncreaseFontSize_increasesByStep | 10ms |
| โ | TPPReaderSettingsTests | testIncreaseFontSize_respectsMaximum | 6ms |
| โ | TPPReaderSettingsTests | testInit_getsScreenBrightness | 4ms |
| โ | TPPReaderSettingsTests | testInit_setsDefaultAppearanceIndex | 20ms |
| โ | TPPReaderSettingsTests | testInit_setsDefaultFontFamilyIndex | 4ms |
| โ | TPPReaderSettingsTests | testInit_setsDefaultFontSize | 2ms |
| โ | TPPReaderSettingsTests | testLoadPreferences_returnsPreferences | 17ms |
| โ | TPPReaderSettingsTests | testMapAppearanceToIndex_dark | 2ms |
| โ | TPPReaderSettingsTests | testMapAppearanceToIndex_light | 4ms |
| โ | TPPReaderSettingsTests | testMapAppearanceToIndex_sepia | 2ms |
| โ | TPPReaderSettingsTests | testMapFontFamilyToIndex_nil | 2ms |
| โ | TPPReaderSettingsTests | testMapFontFamilyToIndex_openDyslexic | 3ms |
| โ | TPPReaderSettingsTests | testMapFontFamilyToIndex_sansSerif | 3ms |
| โ | TPPReaderSettingsTests | testMapFontFamilyToIndex_serif | 4ms |
| โ | TPPReaderSettingsTests | testMapIndexToAppearance_dark | 2ms |
| โ | TPPReaderSettingsTests | testMapIndexToAppearance_default | 8ms |
| โ | TPPReaderSettingsTests | testMapIndexToAppearance_sepia | 2ms |
| โ | TPPReaderSettingsTests | testMapIndexToFontFamily_default | 4ms |
| โ | TPPReaderSettingsTests | testMapIndexToFontFamily_dyslexic | 2ms |
| โ | TPPReaderSettingsTests | testMapIndexToFontFamily_sansSerif | 2ms |
| โ | TPPReaderSettingsTests | testMapIndexToFontFamily_serif | 20ms |
| โ | TPPReaderTOCBusinessLogicTests | testInit_withCurrentLocation_storesLocation | 2ms |
| โ | TPPReaderTOCBusinessLogicTests | testInit_withPublication_initializesCorrectly | 9ms |
| โ | TPPReaderTOCBusinessLogicTests | testIsCurrentChapterTitled_caseInsensitiveMatch_returnsTrue | 3ms |
| โ | TPPReaderTOCBusinessLogicTests | testIsCurrentChapterTitled_withDifferentTitle_returnsFalse | 3ms |
| โ | TPPReaderTOCBusinessLogicTests | testIsCurrentChapterTitled_withMatchingTitle_returnsTrue | 2ms |
| โ | TPPReaderTOCBusinessLogicTests | testIsCurrentChapterTitled_withNilCurrentLocation_returnsFalse | 2ms |
| โ | TPPReaderTOCBusinessLogicTests | testIsCurrentChapterTitled_withNilLocationTitle_returnsFalse | 2ms |
| โ | TPPReaderTOCBusinessLogicTests | testShouldSelectTOCItem_invalidIndex_returnsFalse | 7ms |
| โ | TPPReaderTOCBusinessLogicTests | testTitleAndLevel_forValidIndex_returnsTitleAndLevel | 1.01s |
| โ | TPPReaderTOCBusinessLogicTests | testTitleForHref_existingHref_returnsTitle | 1.03s |
| โ | TPPReaderTOCBusinessLogicTests | testTitleForHref_nonExistentHref_returnsNil | 1.02s |
| โ | TPPReaderTOCBusinessLogicTests | testTocDisplayTitle_returnsLocalizedString | 3ms |
| โ | TPPReaderTOCBusinessLogicTests | testTocElements_initiallyEmpty_beforeAsyncLoad | 3ms |
| โ | TPPReaderTOCBusinessLogicTests | testTocLocator_negativeIndex_returnsNil | 8ms |
| โ | TPPReaderTOCBusinessLogicTests | testTocLocator_outOfBoundsIndex_returnsNil | 6ms |
| โ | TPPReaderTOCFlattenTests | testFlatten_emptyTOC_producesEmptyElements | 5ms |
| โ | TPPReaderTOCFlattenTests | testFlatten_nestedTOC_assignsCorrectLevels | 1.09s |
| โ | TPPReadiumBookmarkLocationMatchingTests | testLocationMatches_differentChapterProgress_returnsFalse | 4ms |
| โ | TPPReadiumBookmarkLocationMatchingTests | testLocationMatches_differentTotalProgress_returnsFalse | 6ms |
| โ | TPPReadiumBookmarkLocationMatchingTests | testLocationMatches_exactProgress_returnsTrue | 5ms |
| โ | TPPReadiumBookmarkLocationMatchingTests | testLocationMatches_matchingProgress_returnsTrue | 4ms |
| โ | TPPReadiumBookmarkLocationMatchingTests | testLocationMatches_nilLocatorProgress_matchesZeroBookmarkProgress | 3ms |
| โ | TPPReadiumBookmarkTests | testDescription_returnsNonEmptyString | 3ms |
| โ | TPPReadiumBookmarkTests | testDictionaryRepresentation_containsAllFields | 3ms |
| โ | TPPReadiumBookmarkTests | testInit_fromDictionary_createsBookmark | 5ms |
| โ | TPPReadiumBookmarkTests | testInit_fromDictionary_withEmptyAnnotationId_setsNil | 2ms |
| โ | TPPReadiumBookmarkTests | testInit_fromDictionary_withMissingRequiredFields_returnsNil | 5ms |
| โ | TPPReadiumBookmarkTests | testInit_withDefaultTime_usesCurrentTime | 3ms |
| โ | TPPReadiumBookmarkTests | testInit_withNilHref_returnsNil | 6ms |
| โ | TPPReadiumBookmarkTests | testInit_withValidParameters_createsBookmark | 3ms |
| โ | TPPReadiumBookmarkTests | testIsEqual_differentHref_returnsFalse | 4ms |
| โ | TPPReadiumBookmarkTests | testIsEqual_differentProgress_returnsFalse | 20ms |
| โ | TPPReadiumBookmarkTests | testIsEqual_sameAnnotationId_returnsTrue | 7ms |
| โ | TPPReadiumBookmarkTests | testIsEqual_sameProgress_noAnnotationId_returnsTrue | 3ms |
| โ | TPPReadiumBookmarkTests | testIsEqual_withNonBookmarkObject_returnsFalse | 3ms |
| โ | TPPReadiumBookmarkTests | testPercentInBook_formatsCorrectly | 4ms |
| โ | TPPReadiumBookmarkTests | testPercentInBook_fullProgress_showsHundred | 6ms |
| โ | TPPReadiumBookmarkTests | testPercentInChapter_formatsCorrectly | 6ms |
| โ | TPPReadiumBookmarkTests | testPercentInChapter_zeroProgress_showsZero | 6ms |
| โ | TPPReadiumBookmarkTests | testToJSONDictionary_includesLocationFields | 6ms |
| โ | TPPReauthenticatorMockTests | testMockReauthenticator_callsCompletion | 4ms |
| โ | TPPReauthenticatorMockTests | testMockReauthenticator_tracksReauthPerformed | 5ms |
| โ | TPPReauthenticatorTests | testAuthenticateIfNeeded_withNilCompletion_doesNotCrash | 3ms |
| โ | TPPReauthenticatorTests | testInit_conformsToReauthenticatorProtocol | 9ms |
| โ | TPPReauthenticatorTests | testInit_createsDistinctInstances | 5ms |
| โ | TPPReauthenticatorTests | testInit_isNSObjectSubclass | 2ms |
| โ | TPPReturnPromptHelperTests | testAudiobookPrompt_createsAlertController | 139ms |
| โ | TPPReturnPromptHelperTests | testAudiobookPrompt_hasExactlyKeepAndReturnActionsWithTitles | 4ms |
| โ | TPPReturnPromptHelperTests | testAudiobookPrompt_hasKeepAction_withCancelStyle | 4ms |
| โ | TPPReturnPromptHelperTests | testAudiobookPrompt_hasReturnAction_withDefaultStyle | 7ms |
| โ | TPPReturnPromptHelperTests | testAudiobookPrompt_hasTitleAndMessage | 4ms |
| โ | TPPSAMLCookieExpirationTests | testSAMLLogin_allCookiesExpired_proceedsWithEmpty | 48ms |
| โ | TPPSAMLCookieExpirationTests | testSAMLLogin_cookieExpiringInFuture_isKept | 4ms |
| โ | TPPSAMLCookieExpirationTests | testSAMLLogin_filtersExpiredCookies | 2ms |
| โ | TPPSAMLCookieExpirationTests | testSAMLLogin_keepsSessionCookiesWithoutExpiry | 2ms |
| โ | TPPSAMLCookieExpirationTests | testSAMLLogin_mixOfExpiredAndValid_onlyPassesValid | 12ms |
| โ | TPPSAMLFlowTests | testSAMLHelper_initRequiresContext_andStartsWithCleanCookieState | 11ms |
| โ | TPPSAMLFlowTests | testSAMLLogin_callsPresenterNotUIKit | 2ms |
| โ | TPPSAMLFlowTests | testSAMLLogin_cancelCallsCancelHandler | 2ms |
| โ | TPPSAMLFlowTests | testSAMLLogin_completionCallsHandleRedirect | 5ms |
| โ | TPPSAMLFlowTests | testSAMLLogin_dismissCalledAfterCompletion | 2ms |
| โ | TPPSAMLFlowTests | testSAMLLogin_dismissCalledWithError | 4ms |
| โ | TPPSAMLFlowTests | testSAMLLogin_passesCorrectURLPreservesExistingQueryParams | 21ms |
| โ | TPPSAMLFlowTests | testSAMLLogin_passesCorrectURLWithRedirectURI | 5ms |
| โ | TPPSAMLFlowTests | testSAMLLogin_passesSavedCookiesToPresenter | 4ms |
| โ | TPPSAMLFlowTests | testSAMLLogin_withNilIDP_doesNotCallPresenter | 5ms |
| โ | TPPSAMLReauthFlowTests | testFreshLogin_callsAdobeActivation | 124ms |
| โ | TPPSAMLReauthFlowTests | testSAMLReauthFlow_skipsAdobeActivation | 409ms |
| โ | TPPSAMLRegressionTests | testOAuthFlow_unaffectedBySAMLRefactor | 122ms |
| โ | TPPSAMLRegressionTests | testSAMLAuthType_matchesCMValue | 146ms |
| โ | TPPSAMLRegressionTests | testSAMLIdPParsing_fromAuthDocumentLinks | 121ms |
| โ | TPPSAMLRegressionTests | testSAMLRedirectURL_matchesCMExpectedPattern | 5ms |
| โ | TPPSAMLSignInTests | testAuthState_transitionsFromLoggedOutToLoggedIn | 77ms |
| โ | TPPSAMLSignInTests | testCredentialsStale_PP418_userStillHasCredentials | 78ms |
| โ | TPPSAMLSignInTests | testCredentialsStale_hasCredentialsReturnsTrue | 80ms |
| โ | TPPSAMLSignInTests | testCredentialsStale_preservesCookies | 122ms |
| โ | TPPSAMLSignInTests | testCredentialsStale_reAuthClearsStaleState | 81ms |
| โ | TPPSAMLSignInTests | testRefreshCredentialsFromKeychain_returnsFalseWhenNoCredentials | 100ms |
| โ | TPPSAMLSignInTests | testRefreshCredentialsFromKeychain_returnsTrueWhenCredentialsExist | 80ms |
| โ | TPPSAMLSignInTests | testSAMLReauth_usesSavedCookiesForIDPSession | 87ms |
| โ | TPPSAMLSignInTests | testSAMLSignIn_PP418_credentialsArePersisted | 101ms |
| โ | TPPSAMLSignInTests | testSAMLSignIn_cookiesAreStored | 84ms |
| โ | TPPSAMLSignInTests | testSAMLSignIn_drmFailurePreventsCredentialStorage | 77ms |
| โ | TPPSAMLSignInTests | testSAMLSignIn_hasCredentialsReturnsTrue | 92ms |
| โ | TPPSAMLSignInTests | testSAMLSignIn_patronInfoIsStored | 81ms |
| โ | TPPSAMLSignInTests | testSAMLSignIn_setsAuthStateToLoggedIn | 92ms |
| โ | TPPSAMLSignInTests | testSAMLSignIn_stateTransitions | 100ms |
| โ | TPPSAMLSignInTests | testSAMLSignIn_usesCorrectLibraryUUID | 99ms |
| โ | TPPSAMLSignInTests | testSAMLSignIn_worksWithoutCookies | 78ms |
| โ | TPPSAMLSignInTests | testSAMLSignIn_worksWithoutPatronInfo | 93ms |
| โ | TPPSAMLSignInTests | testSAMLSignOut_clearsAllCredentials | 87ms |
| โ | TPPSAMLSignInTests | testSetAuthToken_doesNotChangeStaleState | 93ms |
| โ | TPPSAMLSignInTests | testSignIn_callsBusinessLogicDidCompleteSignIn | 88ms |
| โ | TPPSAMLSignInTests | testSignIn_callsBusinessLogicWillSignIn | 83ms |
| โ | TPPSAMLSignInTests | testSignIn_cancelledSetsLoadingFalse | 79ms |
| โ | TPPSAMLSignInTests | testSignIn_loadingStateTransitions | 112ms |
| โ | TPPSAMLSignInTests | testTokenRefresh_settingsScreenShowsSignedIn | 79ms |
| โ | TPPSAMLSignInTests | testTokenRefresh_transitionsFromStaleToLoggedIn | 79ms |
| โ | TPPSAMLStateIsolationTests | testNonSAMLLibrary_noSAMLHelperCreated | 231ms |
| โ | TPPSAMLStateIsolationTests | testSAMLCookies_storedOnHelper_notBusinessLogic | 6ms |
| โ | TPPSAMLStateIsolationTests | testSAMLLibrary_helperCreatedOnDemand | 204ms |
| โ | TPPSAMLStateIsolationTests | testSignOut_clearsSAMLState | 9ms |
| โ | TPPSAMLStateMachineTests | testFinalizeSignIn_transitionsToLoggedIn | 131ms |
| โ | TPPSAMLStateMachineTests | testIsSignedIn_returnsFalseWhenCredentialsStale | 149ms |
| โ | TPPSAMLStateMachineTests | testIsSignedIn_returnsFalseWhenLoggedOut | 108ms |
| โ | TPPSAMLStateMachineTests | testIsSignedIn_returnsTrueWhenLoggedIn | 111ms |
| โ | TPPSAMLStateMachineTests | testRefreshAuth_SAMLClearsSelectedAuth | 117ms |
| โ | TPPSAMLStateMachineTests | testRefreshAuth_transitionsToCredentialsStale | 125ms |
| โ | TPPSettingsTests | testAccountMainFeedURL_setToSameValue_doesNotPostNotification | 32ms |
| โ | TPPSettingsTests | testCustomMainFeedURL_publishesViaSettingsDidChange | 40ms |
| โ | TPPSettingsTests | testCustomMainFeedURL_setToDifferentValue_postsNotification | 6ms |
| โ | TPPSettingsTests | testCustomMainFeedURL_setToSameValue_doesNotPostNotification | 10ms |
| โ | TPPSettingsTests | testUseBetaLibraries_postsNotification | 5ms |
| โ | TPPSettingsTests | testUseBetaLibraries_publishesViaCombine | 27ms |
| โ | TPPSignInAdobeSkipTests | testEnsureAuthDocLoaded_callsCompletionImmediatelyWhenDetailsExist | 202ms |
| โ | TPPSignInAdobeSkipTests | testEnsureAuthDocLoaded_setsLoadingFlag | 127ms |
| โ | TPPSignInAdobeSkipTests | testIgnoreSignedInState_affectsIsSignedIn | 103ms |
| โ | TPPSignInAdobeSkipTests | testLogIn_capturedBarcode_nilWhenUIDelegateHasNilUsername | 114ms |
| โ | TPPSignInAdobeSkipTests | testLogIn_capturesBarcodeAndPIN | 138ms |
| โ | TPPSignInAdobeSkipTests | testLogIn_notifiesUIDelegateWillSignIn | 195ms |
| โ | TPPSignInAdobeSkipTests | testLogIn_postsSigningInNotification | 372ms |
| โ | TPPSignInAdobeSkipTests | testLogIn_withNoSelectedAuth_doesNotCrash | 171ms |
| โ | TPPSignInAdobeSkipTests | testMakeRequest_prefersBusinessLogicToken_overUserAccountToken | 138ms |
| โ | TPPSignInAdobeSkipTests | testMakeRequest_withOAuthButNoToken_logsError | 928ms |
| โ | TPPSignInAdobeSkipTests | testRefreshAuthIfNeeded_returnsFalseWithNoAuthDefinition | 142ms |
| โ | TPPSignInAdobeSkipTests | testRefreshAuthIfNeeded_setsRefreshAuthCompletion | 1.65s |
| โ | TPPSignInAdobeSkipTests | testShouldSkipAdobeActivation_falseWhenNotStale | 167ms |
| โ | TPPSignInAdobeSkipTests | testShouldSkipAdobeActivation_falseWithoutAdobeCredentials | 193ms |
| โ | TPPSignInAuthStateTransitionTests | testReauth_transitionsFromStaleToLoggedIn | 243ms |
| โ | TPPSignInAuthStateTransitionTests | testSignIn_isSignedInConditionMet | 299ms |
| โ | TPPSignInAuthStateTransitionTests | testSignIn_transitionsFromLoggedOutToLoggedIn | 217ms |
| โ | TPPSignInBusinessLogicExtendedTests | testCanResetPassword_dependsOnLibraryConfig | 127ms |
| โ | TPPSignInBusinessLogicExtendedTests | testCurrentAccount_matchesLibraryAccount | 122ms |
| โ | TPPSignInBusinessLogicExtendedTests | testEnsureAuthDoc_setsAndClearsLoadingFlag | 127ms |
| โ | TPPSignInBusinessLogicExtendedTests | testInitialization_authTokenNilByDefault | 141ms |
| โ | TPPSignInBusinessLogicExtendedTests | testInitialization_cookiesNilByDefault | 117ms |
| โ | TPPSignInBusinessLogicExtendedTests | testInitialization_defaultsIgnoreSignedInStateToFalse | 111ms |
| โ | TPPSignInBusinessLogicExtendedTests | testInitialization_defaultsNotLoggingInAfterSignUp | 120ms |
| โ | TPPSignInBusinessLogicExtendedTests | testInitialization_defaultsNotValidatingCredentials | 166ms |
| โ | TPPSignInBusinessLogicExtendedTests | testInitialization_patronNilByDefault | 117ms |
| โ | TPPSignInBusinessLogicExtendedTests | testInitialization_setsCorrectLibraryAccountID | 184ms |
| โ | TPPSignInBusinessLogicExtendedTests | testInitialization_setsUIDelegate | 109ms |
| โ | TPPSignInBusinessLogicExtendedTests | testIsAuthenticationDocumentLoading_defaultsFalse | 183ms |
| โ | TPPSignInBusinessLogicExtendedTests | testIsLoggingInAfterSignUp_setterRoutesThroughReducer | 155ms |
| โ | TPPSignInBusinessLogicExtendedTests | testIsNetworkConnectivityError_NonURLDomain_ReturnsFalse | 128ms |
| โ | TPPSignInBusinessLogicExtendedTests | testIsSamlPossible_trueWhenLibrarySupports | 114ms |
| โ | TPPSignInBusinessLogicExtendedTests | testIsSignedIn_falseWhenIgnoreSignedInStateTrue | 158ms |
| โ | TPPSignInBusinessLogicExtendedTests | testIsSignedIn_falseWhenNoCredentials | 117ms |
| โ | TPPSignInBusinessLogicExtendedTests | testIsSignedIn_trueWhenHasCredentials | 167ms |
| โ | TPPSignInBusinessLogicExtendedTests | testLibraryAccount_returnsCorrectAccount | 161ms |
| โ | TPPSignInBusinessLogicExtendedTests | testLibrarySupportsBarcodeDisplay_WithoutAuthorizationIdentifier_ReturnsFalse | 167ms |
| โ | TPPSignInBusinessLogicExtendedTests | testLibrarySupportsBarcodeDisplay_falseWithoutCredentials | 141ms |
| โ | TPPSignInBusinessLogicExtendedTests | testLibrarySupportsBarcodeDisplay_requiresAuthorizationIdentifier | 135ms |
| โ | TPPSignInBusinessLogicExtendedTests | testLogIn_initiatesSignIn | 131ms |
| โ | TPPSignInBusinessLogicExtendedTests | testLogIn_preventsMultipleSimultaneousCalls | 188ms |
| โ | TPPSignInBusinessLogicExtendedTests | testLogIn_withBasicAuth_validatesCredentials | 134ms |
| โ | TPPSignInBusinessLogicExtendedTests | testMakeRequest_forBasicAuth_noAuthorizationHeader | 158ms |
| โ | TPPSignInBusinessLogicExtendedTests | testMakeRequest_forOAuth_hasBearerToken | 123ms |
| โ | TPPSignInBusinessLogicExtendedTests | testMakeRequest_forSAML_hasBearerToken | 146ms |
| โ | TPPSignInBusinessLogicExtendedTests | testMakeRequest_signOut_usesCorrectURL | 152ms |
| โ | TPPSignInBusinessLogicExtendedTests | testRefreshAuthIfNeeded_returnsFalseWhenNoAuthDefinition | 180ms |
| โ | TPPSignInBusinessLogicExtendedTests | testRegistrationIsPossible_falseWhenSignedIn | 115ms |
| โ | TPPSignInBusinessLogicExtendedTests | testSelectPreferredAuthIfNeeded_WithExistingSelection_DoesNotOverride | 106ms |
| โ | TPPSignInBusinessLogicExtendedTests | testSelectedAuthentication_canBeSetToBasic | 143ms |
| โ | TPPSignInBusinessLogicExtendedTests | testSelectedAuthentication_canBeSetToOAuth | 178ms |
| โ | TPPSignInBusinessLogicExtendedTests | testSelectedAuthentication_canBeSetToSAML | 129ms |
| โ | TPPSignInBusinessLogicExtendedTests | testSelectedAuthentication_nilByDefault | 175ms |
| โ | TPPSignInBusinessLogicExtendedTests | testShouldShowEULALink_basedOnLibraryDetails | 124ms |
| โ | TPPSignInBusinessLogicExtendedTests | testShouldShowSyncButton_PP3252_usesCurrentAccountIdNotCurrentAccountUuid | 186ms |
| โ | TPPSignInBusinessLogicExtendedTests | testShouldShowSyncButton_falseWhenDifferentLibrary | 140ms |
| โ | TPPSignInBusinessLogicExtendedTests | testShouldShowSyncButton_falseWhenNoCredentials | 212ms |
| โ | TPPSignInBusinessLogicExtendedTests | testShouldSkipAdobeActivation_WhenMissingAdobeCredentials_ReturnsFalse | 145ms |
| โ | TPPSignInBusinessLogicExtendedTests | testShouldSkipAdobeActivation_WhenNotCredentialsStale_ReturnsFalse | 137ms |
| โ | TPPSignInBusinessLogicExtendedTests | testSignOut_PP418_clearsWebViewDataBeforeCompletion | 136ms |
| โ | TPPSignInBusinessLogicExtendedTests | testSignOut_sequencesCookieClearingBeforeCompletionCallback | 159ms |
| โ | TPPSignInBusinessLogicExtendedTests | testUpdateUserAccount_clearsCapturedCredentials | 132ms |
| โ | TPPSignInBusinessLogicExtendedTests | testUpdateUserAccount_clearsIgnoreSignedInState | 146ms |
| โ | TPPSignInBusinessLogicExtendedTests | testUpdateUserAccount_clearsInFlightAuthToken | 163ms |
| โ | TPPSignInBusinessLogicExtendedTests | testUpdateUserAccount_setsAuthDefinition | 138ms |
| โ | TPPSignInBusinessLogicExtendedTests | testUpdateUserAccount_withBasicAuth_setsBarcodePIN | 155ms |
| โ | TPPSignInBusinessLogicExtendedTests | testUpdateUserAccount_withOAuth_setsAuthToken | 106ms |
| โ | TPPSignInBusinessLogicExtendedTests | testUpdateUserAccount_withSAML_setsCookies | 126ms |
| โ | TPPSignInBusinessLogicExtendedTests | testValidateCredentials_setsIsValidatingCredentialsTrue | 147ms |
| โ | TPPSignInBusinessLogicExtendedTests | testValidateCredentials_setsValidatingFlag | 148ms |
| โ | TPPSignInBusinessLogicTests | testIsNetworkConnectivityError_OnlyRecognizesURLErrorDomain | 183ms |
| โ | TPPSignInBusinessLogicTests | testLogInFlow | 94ms |
| โ | TPPSignInBusinessLogicTests | testMakeSignInRequest | 173ms |
| โ | TPPSignInBusinessLogicTests | testUpdateUserAccountWithBarcodeAuthentication | 144ms |
| โ | TPPSignInBusinessLogicTests | testUpdateUserAccountWithCleverAuthentication | 116ms |
| โ | TPPSignInBusinessLogicTests | testUpdateUserAccountWithNoSelectedAuthentication | 157ms |
| โ | TPPSignInBusinessLogicTests | testUpdateUserAccountWithSAMLAuthentication | 133ms |
| โ | TPPSignInBusinessLogicTests | testUserFacingSignInError_ConnectionLost_ReturnsNetworkMessage | 92ms |
| โ | TPPSignInBusinessLogicTests | testUserFacingSignInError_NoInternet_ReturnsNetworkMessage | 112ms |
| โ | TPPSignInBusinessLogicTests | testUserFacingSignInError_NonURLErrorDomain_ReturnsInvalidCredentials | 123ms |
| โ | TPPSignInBusinessLogicTests | testUserFacingSignInError_ProblemDocument_TakesPrecedenceOverNetworkError | 115ms |
| โ | TPPSignInBusinessLogicTests | testUserFacingSignInError_Timeout_ReturnsNetworkMessage | 127ms |
| โ | TPPSignInErrorHandlingTests | testValidateCredentials_withSelectedAuth_doesNotCrash | 121ms |
| โ | TPPSignInErrorHandlingTests | testValidateCredentials_withoutSelectedAuth_doesNotCrash | 149ms |
| โ | TPPSignInProfileDocEdgeCaseTests | testSignIn_invalidProfileDoc_credentialsPreserved | 189ms |
| โ | TPPSignInProfileDocEdgeCaseTests | testSignIn_noDRMInProfileDoc_credentialsPreserved | 208ms |
| โ | TPPSignInProfileDocEdgeCaseTests | testSignIn_validDRMProfileDoc_savesCredentialsAndDRM | 172ms |
| โ | TPPSignedInStateProviderTests | testIsSignedIn_AfterRemoveAll_ReturnsFalse | 2ms |
| โ | TPPSignedInStateProviderTests | testIsSignedIn_WhenCredentialsPresent_ReturnsTrue | 5ms |
| โ | TPPSignedInStateProviderTests | testIsSignedIn_WhenNoCredentials_ReturnsFalse | 62ms |
| โ | TPPUserAccountAuthStateTests | testAuthState_defaultIsLoggedOut_andDerivesFromCredentialsWhenNotExplicit | 69ms |
| โ | TPPUserAccountAuthStateTests | testMarkCredentialsStale_doesNotTransitionFromLoggedOut | 2ms |
| โ | TPPUserAccountAuthStateTests | testMarkCredentialsStale_transitionsFromLoggedInToStale | 4ms |
| โ | TPPUserAccountAuthStateTests | testMarkLoggedIn_transitionsFromAnyReauthenticatableStateToLoggedIn | 3ms |
| โ | TPPUserAccountAuthStateTests | testRemoveAll_resetsStateToLoggedOut | 5ms |
| โ | TPPUserAccountGapTests | testTPPUserAccount_basicPropertyAccessors_dontCrash | 3ms |
| โ | TPPUserAccountGapTests | testTPPUserAccount_hasAuthToken_returnsFalseWhenNoToken | 3ms |
| โ | TPPUserAccountGapTests | testTPPUserAccount_hasBarcodeAndPIN_returnsFalseWhenNoCredentials | 3ms |
| โ | TPPUserAccountGapTests | testTPPUserAccount_sharedAccount_isAccessible | 9ms |
| โ | TPPUserFriendlyErrorTests | testDefaultImplementation_messageIsNil | 2ms |
| โ | TPPUserFriendlyErrorTests | testDefaultImplementation_titleIsNil | 2ms |
| โ | TPPUserFriendlyErrorTests | testMakeFromProblemDocument_preservesExistingUserInfo | 2ms |
| โ | TPPUserFriendlyErrorTests | testMakeFromProblemDocument_setsDomainAndCode | 4ms |
| โ | TPPUserFriendlyErrorTests | testMakeFromProblemDocument_storesProblemDocument | 3ms |
| โ | TPPUserFriendlyErrorTests | testNSError_withProblemDocument_hasFriendlyMessage | 3ms |
| โ | TPPUserFriendlyErrorTests | testNSError_withProblemDocument_hasFriendlyTitle | 3ms |
| โ | TPPUserFriendlyErrorTests | testNSError_withoutProblemDocument_messageIsLocalizedDescription | 3ms |
| โ | TPPUserFriendlyErrorTests | testNSError_withoutProblemDocument_noUserInfo_messageIsNil | 3ms |
| โ | TPPUserFriendlyErrorTests | testNSError_withoutProblemDocument_titleIsNil | 2ms |
| โ | TPPUserFriendlyErrorTests | testProblemDocument_accessor_returnsStoredDocument | 4ms |
| โ | TPPUserNotificationsTests | testBackgroundFetchIsNeeded_returnsBasedOnHeldBooksCount | 31ms |
| โ | TPPUserNotificationsTests | testCompareAvailability_detectsTransitionFromReservedToReady | 8ms |
| โ | TPPUserNotificationsTests | testCompareAvailability_doesNotCrashWithValidInputs | 10ms |
| โ | TPPUserNotificationsTests | testCompareAvailability_doesNotNotifyWhenStillReserved | 6ms |
| โ | TPPUserNotificationsTests | testCompareAvailability_handlesNilAvailability | 6ms |
| โ | TPPUserNotificationsTests | testRequestAuthorization_isExposedAsObjcSelectorOnService | 3ms |
| โ | TPPUserNotificationsTests | testSharedInstance_isStableAcrossCallsAndConcurrentAccess | 8ms |
| โ | TPPUserNotificationsTests | testUpdateAppIconBadge_countsOnlyReadyBooks | 87ms |
| โ | TPPUserNotificationsTests | testUpdateAppIconBadge_withBooks_processesWithoutCrash | 8ms |
| โ | TPPUserNotificationsTests | testUpdateAppIconBadge_withEmptyArray_isIdempotentAndCrashFree | 62ms |
| โ | TPPXMLSwiftTests | test_attributes_emptyAttributes_returnsEmptyDictionary | 2ms |
| โ | TPPXMLSwiftTests | test_attributes_withAttributes_returnsDictionary | 2ms |
| โ | TPPXMLSwiftTests | test_childrenWithName_nonexistentName_returnsEmptyArray | 2ms |
| โ | TPPXMLSwiftTests | test_childrenWithName_returnsMatchingChildren | 2ms |
| โ | TPPXMLSwiftTests | test_firstChildWithName_nonexistent_returnsNil | 2ms |
| โ | TPPXMLSwiftTests | test_firstChildWithName_returnsFirstMatch | 3ms |
| โ | TPPXMLSwiftTests | test_parseEmptyData_returnsNil | 16ms |
| โ | TPPXMLSwiftTests | test_parseInlineXML_simpleElement | 2ms |
| โ | TPPXMLSwiftTests | test_parseInvalidXML_returnsNil | 4ms |
| โ | TPPXMLSwiftTests | test_parseNilData_returnsNil | 1ms |
| โ | TPPXMLSwiftTests | test_parseValidXML_rootHasNoParent | 2ms |
| โ | TPPXMLSwiftTests | test_parseValidXML_rootHasThreeChildren | 2ms |
| โ | TPPXMLSwiftTests | test_parseValidXML_rootName_isFoo | 2ms |
| โ | TPPXMLSwiftTests | test_parseValidXML_rootNamespaceURI_isCorrect | 2ms |
| โ | TPPXMLSwiftTests | test_parseValidXML_rootQualifiedName | 2ms |
| โ | TPPXMLSwiftTests | test_value_returnsTextContent | 2ms |
| โ | TPPXMLTests | testInvalid | 5ms |
| โ | TPPXMLTests | testNoData | 4ms |
| โ | TPPXMLTests | testValid | 7ms |
| โ | TimeEntryTests | testTimeEntry_creation | 4ms |
| โ | TimeEntryTests | testTimeEntry_durationLimit | 5ms |
| โ | TimeEntryTests | testTimeEntry_utcFormat | 5ms |
| โ | TokenRefreshIntegrationTests | testExecuteTokenRefresh_EmptyUsername_NeverHitsNetwork | 4ms |
| โ | TokenRefreshIntegrationTests | testExecuteTokenRefresh_ValidatesBasicAuthHeaderOnWire | 30ms |
| โ | TokenRefreshInterceptorTests | testHandleBorrowInvalidCredentials_firstAttempt_triggersReauth | 6ms |
| โ | TokenRefreshInterceptorTests | testHandleBorrowInvalidCredentials_nilDelegate_doesNotCrash | 7ms |
| โ | TokenRefreshInterceptorTests | testHandleBorrowInvalidCredentials_secondAttempt_showsAlert | 117ms |
| โ | TokenRefreshInterceptorTests | testHandleBorrowInvalidCredentials_successfulReauth_startsDownload | 532ms |
| โ | TokenRefreshInterceptorTests | testHandleDownloadFailure_OIDC_401_marksCredentialsStale | 6ms |
| โ | TokenRefreshInterceptorTests | testHandleDownloadFailure_OIDC_401_triggersReauthViaSignInModal | 1.03s |
| โ | TokenRefreshInterceptorTests | testHandleDownloadFailure_OIDC_cancelledReauth_doesNotRetry | 1.02s |
| โ | TokenRefreshInterceptorTests | testHandleDownloadFailure_OIDC_successfulReauth_retriesDownload | 1.06s |
| โ | TokenRefreshInterceptorTests | testHandleDownloadFailure_hasCredentials_noLoginRequired_returnsFalse | 6ms |
| โ | TokenRefreshInterceptorTests | testHandleDownloadFailure_noActiveLoan_OIDC_triggersReauth | 1.01s |
| โ | TokenRefreshInterceptorTests | testHandleDownloadFailure_noActiveLoan_SAML_treatAsSessionExpiry | 6ms |
| โ | TokenRefreshInterceptorTests | testHandleDownloadFailure_noActiveLoan_nonSAML_autoBorrows | 7ms |
| โ | TokenRefreshInterceptorTests | testHandleDownloadFailure_noCredentialsLoginRequired_triggersSignIn | 6ms |
| โ | TokenRefreshInterceptorTests | testHandleDownloadFailure_noDelegateReturnsFalse | 10ms |
| โ | TokenRefreshInterceptorTests | testHandleDownloadFailure_nonAuthRelatedError_returnsFalse | 6ms |
| โ | TokenRefreshInterceptorTests | testHandleProblem_SAMLStartedState_circuitBreaker | 12ms |
| โ | TokenRefreshInterceptorTests | testHandleProblem_SAMLWithCredentials_retriesWithSAML | 514ms |
| โ | TokenRefreshInterceptorTests | testHandleProblem_authenticatedUser_noReauth | 314ms |
| โ | TokenRefreshInterceptorTests | testHandleProblem_nilDelegate_doesNotCrash | 6ms |
| โ | TokenRefreshInterceptorTests | testHandleProblem_noCredentials_triggersReauth | 82ms |
| โ | TokenRefreshInterceptorTests | testInit_defaultState | 3ms |
| โ | TokenRefreshInterceptorTests | testInit_withCustomReauthenticator | 5ms |
| โ | TokenRefreshTests | testBearerAuthorized_AddsAuthorizationHeader | 2ms |
| โ | TokenRefreshTests | testBearerAuthorized_EmptyTokenSetsEmptyHeader | 2ms |
| โ | TokenRefreshTests | testMockExecutor_HandlesEmptyURL | 4ms |
| โ | TokenRefreshTests | testMockExecutor_Returns404ForUnknownURL | 10ms |
| โ | TokenRefreshTests | testMockExecutor_ReturnsConfiguredResponse | 3ms |
| โ | TokenRefreshTests | testNYPLResult_FailureCase | 2ms |
| โ | TokenRefreshTests | testNYPLResult_FailureWithNilResponse | 2ms |
| โ | TokenRefreshTests | testNYPLResult_SuccessCase | 5ms |
| โ | TokenRefreshTests | testNYPLResult_SuccessWithNilResponse | 1ms |
| โ | TokenRefreshTests | testRequestTimeout_DefaultValue | 3ms |
| โ | TokenRefreshTests | testRequestTimeout_StaticDefault | 2ms |
| โ | TokenRefreshTests | testTPPErrorCode_InvalidCredentialsValue | 2ms |
| โ | TokenRefreshTests | testTokenRequest_EmptyPassword | 2ms |
| โ | TokenRefreshTests | testTokenRequest_EmptyUsername | 109ms |
| โ | TokenRefreshTests | testTokenRequest_InitializesCorrectly | 3ms |
| โ | TokenRefreshTests | testTokenRequest_SpecialCharactersInCredentials | 2ms |
| โ | TokenRefreshTests | testTokenResponse_DecodesFromJSON | 2ms |
| โ | TokenRefreshTests | testTokenResponse_DifferentTokenTypes | 2ms |
| โ | TokenRefreshTests | testTokenResponse_EncodesToJSON | 4ms |
| โ | TokenRefreshTests | testTokenResponse_ExpirationDateCalculation | 2ms |
| โ | TokenRefreshTests | testTokenResponse_LargeExpiresIn | 2ms |
| โ | TokenRefreshTests | testTokenResponse_NegativeExpiresIn | 2ms |
| โ | TokenRefreshTests | testTokenResponse_RoundTrip | 2ms |
| โ | TokenRefreshTests | testTokenResponse_SmallExpiresIn | 2ms |
| โ | TokenRefreshTests | testTokenResponse_ZeroExpiresIn | 2ms |
| โ | TokenRequestCredentialGuardTests | testExecute_BothEmpty_ReturnsFailureWithoutNetworkCall | 3ms |
| โ | TokenRequestCredentialGuardTests | testExecute_ColonInPassword_EncodesCorrectly | 7ms |
| โ | TokenRequestCredentialGuardTests | testExecute_EmptyCredentials_ErrorDomain | 4ms |
| โ | TokenRequestCredentialGuardTests | testExecute_EmptyPassword_PinlessLogin_MakesNetworkCall | 4ms |
| โ | TokenRequestCredentialGuardTests | testExecute_EmptyUsername_ReturnsFailureWithoutNetworkCall | 5ms |
| โ | TokenRequestCredentialGuardTests | testExecute_SendsPOSTMethod | 8ms |
| โ | TokenRequestCredentialGuardTests | testExecute_ServerReturns400_ReturnsFailureWithStatusCode | 5ms |
| โ | TokenRequestCredentialGuardTests | testExecute_ServerReturns401_ReturnsFailureWithStatusCode | 7ms |
| โ | TokenRequestCredentialGuardTests | testExecute_ServerReturnsIncompleteJSON_ReturnsDecodingError | 13ms |
| โ | TokenRequestCredentialGuardTests | testExecute_ServerReturnsNonJSON_ReturnsDecodingError | 4ms |
| โ | TokenRequestCredentialGuardTests | testExecute_SpecialCharactersInCredentials_EncodesCorrectly | 4ms |
| โ | TokenRequestCredentialGuardTests | testExecute_ValidCredentials_MakesNetworkCall | 5ms |
| โ | TokenRequestCredentialGuardTests | testExecute_ValidCredentials_SendsCorrectBasicAuthHeader | 4ms |
| โ | TokenRequestTests | testExecuteInvalidJSONReturnsDecodingError | 32ms |
| โ | TokenRequestTests | testExecuteNon200StatusReturnsFailure | 5ms |
| โ | TokenRequestTests | testExecuteSendsBasicAuthHeader | 6ms |
| โ | TokenRequestTests | testExecuteSuccessReturnsToken | 30ms |
| โ | TokenRequestTests | testExecuteUsesPOSTMethod | 11ms |
| โ | TokenRequestTests | testTokenRequestInitProperties | 6ms |
| โ | TokenRequestTests | testTokenResponseDecodableFromJSON | 5ms |
| โ | TokenRequestTests | testTokenResponseExpirationDate | 4ms |
| โ | TokenRequestTests | testTokenResponseInitProperties | 3ms |
| โ | TokenResponseTests | testAccessToken_WithSpecialCharacters | 2ms |
| โ | TokenResponseTests | testAccessToken_WithUnicodeCharacters | 3ms |
| โ | TokenResponseTests | testDecode_WithDifferentTokenType_ParsesCorrectly | 2ms |
| โ | TokenResponseTests | testDecode_WithExtraFields_IgnoresExtraFields | 2ms |
| โ | TokenResponseTests | testDecode_WithLargeExpiresIn_ParsesCorrectly | 4ms |
| โ | TokenResponseTests | testDecode_WithMissingAccessToken_ThrowsError | 229ms |
| โ | TokenResponseTests | testDecode_WithMissingExpiresIn_ThrowsError | 5ms |
| โ | TokenResponseTests | testDecode_WithMissingTokenType_ThrowsError | 2ms |
| โ | TokenResponseTests | testDecode_WithValidJSON_ParsesCorrectly | 2ms |
| โ | TokenResponseTests | testDecode_WithWrongTypeForExpiresIn_ThrowsError | 7ms |
| โ | TokenResponseTests | testEncodeDecode_RoundTrip_PreservesValues | 2ms |
| โ | TokenResponseTests | testEncode_ProducesValidJSON | 5ms |
| โ | TokenResponseTests | testExpirationDate_CalculatesCorrectInterval | 2ms |
| โ | TokenResponseTests | testExpirationDate_WithNegativeExpiresIn_ReturnsDateInPast | 2ms |
| โ | TokenResponseTests | testExpirationDate_WithPositiveExpiresIn_ReturnsDateInFuture | 2ms |
| โ | TokenResponseTests | testExpirationDate_WithZeroExpiresIn_ReturnsCurrentTime | 2ms |
| โ | TokenResponseTests | testExpiresIn_WithMaxInt32Value | 2ms |
| โ | TokenResponseTests | testInit_WithEmptyToken_StoresEmptyString | 2ms |
| โ | TokenResponseTests | testInit_WithNegativeExpiresIn_StoresNegativeValue | 6ms |
| โ | TokenResponseTests | testInit_WithValidParameters_StoresValues | 6ms |
| โ | TokenResponseTests | testInit_WithZeroExpiresIn_StoresZero | 3ms |
| โ | TypographyPresetTests | testAllPresetFontSizesInRange | 8ms |
| โ | TypographyPresetTests | testAllPresetLetterSpacingsInRange | 3ms |
| โ | TypographyPresetTests | testAllPresetLineSpacingsInRange | 2ms |
| โ | TypographyPresetTests | testAllPresetWordSpacingsInRange | 28ms |
| โ | TypographyPresetTests | testAllPresetsProduceCSS | 5ms |
| โ | TypographyPresetTests | testClassicCSSContainsGeorgia | 2ms |
| โ | TypographyPresetTests | testClassicPreset | 3ms |
| โ | TypographyPresetTests | testCozyPreset | 3ms |
| โ | TypographyPresetTests | testDensePreset | 3ms |
| โ | TypographyPresetTests | testDyslexiaCSSContainsOpenDyslexic | 3ms |
| โ | TypographyPresetTests | testDyslexiaFriendlyPreset | 3ms |
| โ | TypographyPresetTests | testModernCSSContainsSFPro | 4ms |
| โ | TypographyPresetTests | testModernPreset | 2ms |
| โ | TypographyPresetTests | testNightReaderCSSHasBlackBackground | 2ms |
| โ | TypographyPresetTests | testNightReaderPreset | 2ms |
| โ | TypographyPresetTests | testPresetCount | 3ms |
| โ | TypographyPresetTests | testPresetLookupById | 27ms |
| โ | TypographyPresetTests | testPresetLookupByInvalidId | 2ms |
| โ | TypographyPresetTests | testPresetSettingsAreCodable | 34ms |
| โ | TypographyPresetTests | testPresetsHaveUniqueIds | 3ms |
| โ | TypographyPresetTests | testPresetsHaveUniqueNames | 6ms |
| โ | TypographyServiceTests | testApplyPreset | 3ms |
| โ | TypographyServiceTests | testApplyPresetClearsPreviousCustomization | 2ms |
| โ | TypographyServiceTests | testCSSContainsBackgroundColor | 2ms |
| โ | TypographyServiceTests | testCSSContainsFontFamily | 7ms |
| โ | TypographyServiceTests | testCSSContainsFontSize | 6ms |
| โ | TypographyServiceTests | testCSSContainsLetterSpacing | 4ms |
| โ | TypographyServiceTests | testCSSContainsLineSpacing | 2ms |
| โ | TypographyServiceTests | testCSSContainsMargins | 3ms |
| โ | TypographyServiceTests | testCSSContainsParagraphSpacing | 2ms |
| โ | TypographyServiceTests | testCSSContainsTextAlignment | 2ms |
| โ | TypographyServiceTests | testCSSContainsWordSpacing | 2ms |
| โ | TypographyServiceTests | testCSSDisablesHyphensForLeftAligned | 4ms |
| โ | TypographyServiceTests | testCSSEnablesHyphensForJustifiedText | 3ms |
| โ | TypographyServiceTests | testCSSForArbitrarySettings | 3ms |
| โ | TypographyServiceTests | testCSSForDarkTheme | 2ms |
| โ | TypographyServiceTests | testCSSForSepiaTheme | 3ms |
| โ | TypographyServiceTests | testDefaultSettingsLoadClassicPreset | 2ms |
| โ | TypographyServiceTests | testResetToPresetRestoresOriginal | 2ms |
| โ | TypographyServiceTests | testResetToPresetWithNoPresetResetsToClassic | 3ms |
| โ | TypographyServiceTests | testSettingsPersistedAfterDebounce | 732ms |
| โ | TypographyServiceTests | testSettingsPublisherEmitsOnChange | 7ms |
| โ | TypographyServiceTests | testUpdateFontFamily | 2ms |
| โ | TypographyServiceTests | testUpdateFontSizeClampsToRange | 2ms |
| โ | TypographyServiceTests | testUpdateLetterSpacingClampsToRange | 1ms |
| โ | TypographyServiceTests | testUpdateLineSpacingClampsToRange | 2ms |
| โ | TypographyServiceTests | testUpdateMarginLevel | 2ms |
| โ | TypographyServiceTests | testUpdateParagraphSpacing | 4ms |
| โ | TypographyServiceTests | testUpdateSettingsReplacesAll | 2ms |
| โ | TypographyServiceTests | testUpdateTextAlignment | 5ms |
| โ | TypographyServiceTests | testUpdateTheme | 3ms |
| โ | TypographyServiceTests | testUpdateWordSpacingClampsToRange | 4ms |
| โ | TypographySettingsViewModelTests | testAlignmentGetterMatchesSettings | 20ms |
| โ | TypographySettingsViewModelTests | testAvailableFontsNotEmpty | 5ms |
| โ | TypographySettingsViewModelTests | testFontSizeGetterMatchesSettings | 17ms |
| โ | TypographySettingsViewModelTests | testHasCustomOverridesIsFalseForPreset | 27ms |
| โ | TypographySettingsViewModelTests | testHasCustomOverridesIsTrueAfterChange | 28ms |
| โ | TypographySettingsViewModelTests | testHasCustomOverridesIsTrueWithNoPreset | 15ms |
| โ | TypographySettingsViewModelTests | testInitialPresetIsClassic | 32ms |
| โ | TypographySettingsViewModelTests | testInitialStateMatchesService | 2ms |
| โ | TypographySettingsViewModelTests | testPreviewCSSChangesWithSettings | 14ms |
| โ | TypographySettingsViewModelTests | testPreviewCSSNotEmpty | 4ms |
| โ | TypographySettingsViewModelTests | testPreviewTextNotEmpty | 3ms |
| โ | TypographySettingsViewModelTests | testRapidChangesSettleCorrectly | 15ms |
| โ | TypographySettingsViewModelTests | testResetToPresetAfterCustomization | 38ms |
| โ | TypographySettingsViewModelTests | testResetWithNoPresetResetsToClassic | 28ms |
| โ | TypographySettingsViewModelTests | testSelectAllPresetsInSequence | 75ms |
| โ | TypographySettingsViewModelTests | testSelectPresetUpdatesService | 49ms |
| โ | TypographySettingsViewModelTests | testSelectPresetUpdatesSettings | 14ms |
| โ | TypographySettingsViewModelTests | testServiceChangesReflectedInViewModel | 8ms |
| โ | TypographySettingsViewModelTests | testUpdateFontFamily | 14ms |
| โ | TypographySettingsViewModelTests | testUpdateFontSize | 13ms |
| โ | TypographySettingsViewModelTests | testUpdateLetterSpacing | 14ms |
| โ | TypographySettingsViewModelTests | testUpdateLineSpacing | 22ms |
| โ | TypographySettingsViewModelTests | testUpdateMarginLevel | 15ms |
| โ | TypographySettingsViewModelTests | testUpdateParagraphSpacing | 16ms |
| โ | TypographySettingsViewModelTests | testUpdateTextAlignment | 14ms |
| โ | TypographySettingsViewModelTests | testUpdateTheme | 18ms |
| โ | TypographySettingsViewModelTests | testUpdateWordSpacing | 15ms |
| โ | UIColor_NYPLAdditionsTests | testExample | 4ms |
| โ | URLBackupExclusionTests | test_excludeFromBackup_returnsFalse_whenURLDoesNotExist | 4ms |
| โ | URLBackupExclusionTests | test_excludeFromBackup_setsFlag_onExistingDirectory | 3ms |
| โ | URLBackupExclusionTests | test_excludeFromBackup_setsFlag_onExistingFile | 4ms |
| โ | URLExtensionTests | testAppendingPathComponent | 2ms |
| โ | URLExtensionTests | testAppendingPathExtension | 4ms |
| โ | URLExtensionTests | testFileURL_deletingLastPathComponent | 2ms |
| โ | URLExtensionTests | testFileURL_isFileURL | 4ms |
| โ | URLExtensionTests | testFileURL_lastPathComponent | 3ms |
| โ | URLExtensionTests | testFileURL_pathExtension | 3ms |
| โ | URLExtensionTests | testHTTPURL_isNotFileURL | 2ms |
| โ | URLExtensionTests | testURLComponents_fragment | 3ms |
| โ | URLExtensionTests | testURLComponents_host | 2ms |
| โ | URLExtensionTests | testURLComponents_path | 3ms |
| โ | URLExtensionTests | testURLComponents_query | 3ms |
| โ | URLExtensionTests | testURLComponents_scheme | 2ms |
| โ | URLExtensionTests | testURLEncoding_spaceInQuery | 3ms |
| โ | URLExtensionTests | testURLEncoding_specialCharacters | 125ms |
| โ | URLExtensionTests | testURLQueryItems_building | 2ms |
| โ | URLExtensionTests | testURLQueryItems_parsing | 6ms |
| โ | URLExtensionsTests | testReplacingScheme_HttpToHttps_ReplacesScheme | 2ms |
| โ | URLExtensionsTests | testReplacingScheme_HttpsToHttp_ReplacesScheme | 3ms |
| โ | URLExtensionsTests | testReplacingScheme_PreservesFragment | 4ms |
| โ | URLExtensionsTests | testReplacingScheme_PreservesPort | 38ms |
| โ | URLExtensionsTests | testReplacingScheme_PreservesUserInfo | 2ms |
| โ | URLExtensionsTests | testReplacingScheme_ToCustomScheme_Works | 38ms |
| โ | URLRequestExtensionsCoverageTests | testURLRequest_applyCustomUserAgent | 2ms |
| โ | URLRequestExtensionsCoverageTests | testURLRequest_customUserAgent | 2ms |
| โ | URLRequestExtensionsCoverageTests | testURLRequest_noCustomUserAgent_doesNotSetUserAgentHeader | 2ms |
| โ | URLRequestExtensionsTests | testApplyCustomUserAgent_ReturnsSelf | 2ms |
| โ | URLRequestExtensionsTests | testApplyCustomUserAgent_SetsHeader | 2ms |
| โ | URLRequestExtensionsTests | testInit_WithCustomUserAgent_PreservesURL | 5ms |
| โ | URLRequestExtensionsTests | testInit_WithCustomUserAgent_SetsUserAgentHeader | 2ms |
| โ | URLRequestExtensionsTests | testInit_WithoutCustomUserAgent_NoUserAgentHeader | 11ms |
| โ | URLRequestExtensionsTests | testIsTokenAuthorized_NoAuthHeader_ReturnsFalse | 2ms |
| โ | URLRequestExtensionsTests | testIsTokenAuthorized_WithBasicAuth_ReturnsFalse | 2ms |
| โ | URLRequestExtensionsTests | testIsTokenAuthorized_WithBearerToken_ReturnsTrue | 2ms |
| โ | URLRequestExtensionsTests | testLoggableString_ContainsMethodAndURL | 3ms |
| โ | URLRequestExtensionsTests | testLoggableString_ExcludesAuthorizationHeader | 5ms |
| โ | URLRequestExtensionsTests | testLoggableString_IncludesNonSensitiveHeaders | 2ms |
| โ | URLRequestNYPLAdditionsTests | testPostParams_bodyContainsParams | 2ms |
| โ | URLRequestNYPLAdditionsTests | testPostParams_boundaryConsistencyBetweenHeaderAndBody | 2ms |
| โ | URLRequestNYPLAdditionsTests | testPostParams_emptyParams_doesNotCrash | 2ms |
| โ | URLRequestNYPLAdditionsTests | testPostParams_producesMultipartFormPOSTRequest | 6ms |
| โ | URLRequestNYPLAdditionsTests | testPostParams_setsContentLength | 2ms |
| โ | URLRequestNYPLAdditionsTests | testPostParams_withImage_bodyContainsImageData | 23ms |
| โ | URLRequestNYPLAdditionsTests | testPostParams_withNilImage_bodyLacksImageSection | 2ms |
| โ | URLRequestNYPLAdditionsTests | testPostProblemDocument_producesCompliantProblemJSONRequest | 2ms |
| โ | URLRequestNYPLAdditionsTests | testPostProblemDocument_setsBody | 2ms |
| โ | URLRequestNYPLAdditionsTests | testPostProblemDocument_setsContentLength | 2ms |
| โ | URLRequestNYPLAdditionsTests | testPostProblemDocument_usesTransportDefaultsForReporting | 2ms |
| โ | URLRequest_NYPLTests | testAuthorizationHeaderStrip | 3ms |
| โ | URLResponseAuthenticationTests | testHTTPURLResponse_with200StatusCode_returnsFalse | 3ms |
| โ | URLResponseAuthenticationTests | testHTTPURLResponse_with401StatusCode_returnsTrue | 6ms |
| โ | URLResponseAuthenticationTests | testHTTPURLResponse_with403StatusCode_returnsFalse | 2ms |
| โ | URLResponseAuthenticationTests | testHTTPURLResponse_withApiProblemMimeType_andInvalidCredentials_returnsTrue | 2ms |
| โ | URLResponseAuthenticationTests | testHTTPURLResponse_withInvalidCredentialsProblemDoc_returnsTrue | 2ms |
| โ | URLResponseAuthenticationTests | testHTTPURLResponse_withOPDSAuthMimeType_and200Status_returnsFalse | 2ms |
| โ | URLResponseAuthenticationTests | testHTTPURLResponse_withOPDSAuthMimeType_andNon2xxStatus_returnsTrue | 65ms |
| โ | URLResponseAuthenticationTests | testURLResponse_withInvalidCredentialsProblemDoc_returnsTrue | 12ms |
| โ | URLResponseAuthenticationTests | testURLResponse_withNilProblemDoc_returnsFalse | 2ms |
| โ | URLResponseAuthenticationTests | testURLResponse_withNonProblemMimeType_returnsFalse | 5ms |
| โ | URLResponseNYPLTests | testIsProblemDocument_WithApiProblemJsonMime_ReturnsTrue | 4ms |
| โ | URLResponseNYPLTests | testIsProblemDocument_WithHtmlMime_ReturnsFalse | 5ms |
| โ | URLResponseNYPLTests | testIsProblemDocument_WithNilMime_ReturnsFalse | 3ms |
| โ | URLResponseNYPLTests | testIsProblemDocument_WithProblemJsonMime_ReturnsTrue | 4ms |
| โ | URLResponseNYPLTests | testIsProblemDocument_WithRegularJsonMime_ReturnsFalse | 2ms |
| โ | URLResponseNYPLTests | testIsSuccess_199_ReturnsFalse | 4ms |
| โ | URLResponseNYPLTests | testIsSuccess_200_ReturnsTrue | 3ms |
| โ | URLResponseNYPLTests | testIsSuccess_201Created_ReturnsTrue | 16ms |
| โ | URLResponseNYPLTests | testIsSuccess_204NoContent_ReturnsTrue | 2ms |
| โ | URLResponseNYPLTests | testIsSuccess_299_ReturnsTrue | 3ms |
| โ | URLResponseNYPLTests | testIsSuccess_300Redirect_ReturnsFalse | 3ms |
| โ | URLResponseNYPLTests | testIsSuccess_400BadRequest_ReturnsFalse | 5ms |
| โ | URLResponseNYPLTests | testIsSuccess_401Unauthorized_ReturnsFalse | 4ms |
| โ | URLResponseNYPLTests | testIsSuccess_500ServerError_ReturnsFalse | 3ms |
| โ | URLSessionCredentialStorageTests | testMakeURLSessionConfiguration_Default_DisablesCredentialStorage | 14ms |
| โ | URLSessionCredentialStorageTests | testMakeURLSessionConfiguration_Ephemeral_ReturnsEphemeralConfig | 169ms |
| โ | URLSessionCredentialStorageTests | testMakeURLSessionConfiguration_Fallback_DisablesCredentialStorage | 2ms |
| โ | URLTypeTests | testURLType_HasAllExpectedCases | 6ms |
| โ | URLTypeTests | testURLType_RawValues_AreDistinct | 3ms |
| โ | URLValidationTests | testEmptyString_returnsNil | 4ms |
| โ | URLValidationTests | testFileURL_alwaysValid | 3ms |
| โ | URLValidationTests | testInvalidURL_handledByURLInit | 3ms |
| โ | URLValidationTests | testURLWithSpaces_handledCorrectly | 2ms |
| โ | URLValidationTests | testValidHTTPURL | 5ms |
| โ | UserAccountPublisherAuthStateTests | testAuthStateDidChangePublisher_firesOnStateChanges | 8ms |
| โ | UserAccountPublisherAuthStateTests | testCredentialsStalePublisher_firesWhenStateBecomesStale | 8ms |
| โ | UserAccountPublisherAuthStateTests | testInitialState_isLoggedOut_andMarkCredentialsStaleFromLoggedOutIsNoOp | 2ms |
| โ | UserAccountPublisherAuthStateTests | testMarkCredentialsStale_updatesState | 6ms |
| โ | UserAccountPublisherAuthStateTests | testSignOut_resetsToLoggedOut | 16ms |
| โ | UserAccountPublisherTests | testAuthStateDidChangePublisher_emitsStateChanges | 61ms |
| โ | UserAccountPublisherTests | testCredentialsDidChangePublisher_emitsOnChange | 10ms |
| โ | UserAccountPublisherTests | testCredentialsStalePublisher_emitsWhenStale | 14ms |
| โ | UserAccountPublisherTests | testDidSignOutPublisher_emitsOnSignOut | 10ms |
| โ | UserAccountPublisherTests | testInit_hasCorrectDefaults | 7ms |
| โ | UserAccountPublisherTests | testMarkCredentialsStale_fromLoggedIn_setsStaleState | 42ms |
| โ | UserAccountPublisherTests | testMarkCredentialsStale_fromLoggedOut_doesNotChange | 21ms |
| โ | UserAccountPublisherTests | testMarkLoggedIn_setsLoggedInState | 2ms |
| โ | UserAccountPublisherTests | testShared_returnsSameInstance | 17ms |
| โ | UserAccountPublisherTests | testSignOut_resetsAllState | 4ms |
| โ | UserAccountPublisherTests | testSignOut_resetsIsSigningOutAfterDelay | 167ms |
| โ | UserAccountValidationTests | testAcceptsASCIICharacters | 146ms |
| โ | UserAccountValidationTests | testAcceptsEmptyReplacementString | 161ms |
| โ | UserAccountValidationTests | testAcceptsPINAtExactlyAuthPasscodeLength | 242ms |
| โ | UserAccountValidationTests | testAcceptsUsernameAtExactly25Characters | 151ms |
| โ | UserAccountValidationTests | testRejectsNonASCIICharacters | 164ms |
| โ | UserAccountValidationTests | testRejectsPINLongerThanAuthPasscodeLength | 299ms |
| โ | UserAccountValidationTests | testRejectsUsernameLongerThan25Characters | 150ms |
| โ | UserAccountValidationTests | testRejectsUsernameRangeOutsideTextBounds | 158ms |
| โ | UserAccountValidationTests | testShouldBeginEditingWhenForceEditabilityIsTrue | 118ms |
| โ | UserAccountValidationTests | testShouldBeginEditingWhenNoBusinessLogic | 119ms |
| โ | UserAccountValidationTests | testShouldNotBeginEditingWhenBusinessLogicHasBarcodeAndPIN | 211ms |
| โ | UserProfileDocumentTests | testParse | 4ms |
| โ | UserProfileDocumentTests | testParseJSONExtraProperty | 5ms |
| โ | UserProfileDocumentTests | testParseJSONInvalid | 5ms |
| โ | UserProfileDocumentTests | testParseJSONMissingProperty | 33ms |
| โ | UserProfileDocumentTests | testParseJSONNilValue | 3ms |
| โ | UserProfileDocumentTests | testParseJSONTypeMismatch | 3ms |
| โ | UserProfileDocumentTests | testParseProfileDocCausingSIMPLY2491 | 5ms |
| โ | UserRetryTrackerTests | testCanRetry_afterFiveRetries_returnsFalse | 2ms |
| โ | UserRetryTrackerTests | testCanRetry_afterFourRetries_returnsTrue | 2ms |
| โ | UserRetryTrackerTests | testCanRetry_afterOneRetry_returnsTrue | 3ms |
| โ | UserRetryTrackerTests | testCanRetry_newOperation_returnsTrue | 3ms |
| โ | UserRetryTrackerTests | testClearRetries_onlyAffectsSpecifiedOperation | 3ms |
| โ | UserRetryTrackerTests | testClearRetries_resetsCount | 3ms |
| โ | UserRetryTrackerTests | testConcurrentAccess_doesNotCrash | 3ms |
| โ | UserRetryTrackerTests | testRecordRetry_afterMax_returnsZero | 2ms |
| โ | UserRetryTrackerTests | testRecordRetry_returnsRemainingCount | 2ms |
| โ | UserRetryTrackerTests | testSeparateOperations_trackIndependently | 2ms |