@@ -409,11 +409,129 @@ public void testIsScreenRenderEnabled() {
409
409
verify (result ).success (expected );
410
410
}
411
411
412
+ @ Test
412
413
public void testSetScreenRenderEnabled () {
413
414
boolean isEnabled = false ;
414
415
415
416
api .setScreenRenderEnabled (isEnabled );
416
417
417
418
mAPM .verify (() -> APM .setScreenRenderingEnabled (isEnabled ));
418
419
}
420
+
421
+ @ Test
422
+ public void testDeviceRefreshRate () throws Exception {
423
+ float expectedRefreshRate = 60.0f ;
424
+ Double expectedResult = 60.0 ;
425
+ ApmPigeon .Result <Double > result = spy (makeResult ((actual ) -> assertEquals (expectedResult , actual )));
426
+
427
+ // Mock the refresh rate provider to return the expected value
428
+ Callable <Float > mockRefreshRateProvider = () -> expectedRefreshRate ;
429
+ ApmApi testApi = new ApmApi (mockRefreshRateProvider );
430
+
431
+ testApi .deviceRefreshRate (result );
432
+
433
+ verify (result ).success (expectedResult );
434
+ }
435
+
436
+ @ Test
437
+ public void testDeviceRefreshRateWithException () throws Exception {
438
+ ApmPigeon .Result <Double > result = spy (makeResult ((actual ) -> {}));
439
+
440
+ // Mock the refresh rate provider to throw an exception
441
+ Callable <Float > mockRefreshRateProvider = () -> {
442
+ throw new RuntimeException ("Test exception" );
443
+ };
444
+ ApmApi testApi = new ApmApi (mockRefreshRateProvider );
445
+
446
+ testApi .deviceRefreshRate (result );
447
+
448
+ // Verify that the method doesn't crash when an exception occurs
449
+ // The exception is caught and printed, but the result is not called
450
+ verify (result , never ()).success (any ());
451
+ }
452
+
453
+ @ Test
454
+ public void testEndScreenRenderForAutoUiTrace () {
455
+ Map <String , Object > data = new HashMap <>();
456
+ data .put ("traceId" , 123L );
457
+ data .put ("slowFramesTotalDuration" , 1000L );
458
+ data .put ("frozenFramesTotalDuration" , 2000L );
459
+ data .put ("endTime" , 1234567890L );
460
+ data .put ("frameData" , null );
461
+
462
+ api .endScreenRenderForAutoUiTrace (data );
463
+
464
+ mInternalApmStatic .verify (() -> InternalAPM ._endAutoUiTraceWithScreenRendering (any (), eq (1234567890L )));
465
+ mInternalApmStatic .verifyNoMoreInteractions ();
466
+ }
467
+
468
+ @ Test
469
+ public void testEndScreenRenderForAutoUiTraceWithFrameData () {
470
+ Map <String , Object > data = new HashMap <>();
471
+ data .put ("traceId" , 123L );
472
+ data .put ("slowFramesTotalDuration" , 1000L );
473
+ data .put ("frozenFramesTotalDuration" , 2000L );
474
+ data .put ("endTime" , 1234567890L );
475
+
476
+ // Create frame data with ArrayList<ArrayList<Long>>
477
+ java .util .ArrayList <java .util .ArrayList <Long >> frameData = new java .util .ArrayList <>();
478
+ java .util .ArrayList <Long > frame1 = new java .util .ArrayList <>();
479
+ frame1 .add (100L );
480
+ frame1 .add (200L );
481
+ frameData .add (frame1 );
482
+
483
+ java .util .ArrayList <Long > frame2 = new java .util .ArrayList <>();
484
+ frame2 .add (300L );
485
+ frame2 .add (400L );
486
+ frameData .add (frame2 );
487
+
488
+ data .put ("frameData" , frameData );
489
+
490
+ api .endScreenRenderForAutoUiTrace (data );
491
+
492
+ mInternalApmStatic .verify (() -> InternalAPM ._endAutoUiTraceWithScreenRendering (any (), eq (1234567890L )));
493
+ mInternalApmStatic .verifyNoMoreInteractions ();
494
+ }
495
+
496
+ @ Test
497
+ public void testEndScreenRenderForCustomUiTrace () {
498
+ Map <String , Object > data = new HashMap <>();
499
+ data .put ("traceId" , 123L );
500
+ data .put ("slowFramesTotalDuration" , 1000L );
501
+ data .put ("frozenFramesTotalDuration" , 2000L );
502
+ data .put ("endTime" , 1234567890L );
503
+ data .put ("frameData" , null );
504
+
505
+ api .endScreenRenderForCustomUiTrace (data );
506
+
507
+ mInternalApmStatic .verify (() -> InternalAPM ._endCustomUiTraceWithScreenRenderingCP (any ()));
508
+ mInternalApmStatic .verifyNoMoreInteractions ();
509
+ }
510
+
511
+ @ Test
512
+ public void testEndScreenRenderForCustomUiTraceWithFrameData () {
513
+ Map <String , Object > data = new HashMap <>();
514
+ data .put ("traceId" , 123L );
515
+ data .put ("slowFramesTotalDuration" , 1000L );
516
+ data .put ("frozenFramesTotalDuration" , 2000L );
517
+
518
+ // Create frame data with ArrayList<ArrayList<Long>>
519
+ java .util .ArrayList <java .util .ArrayList <Long >> frameData = new java .util .ArrayList <>();
520
+ java .util .ArrayList <Long > frame1 = new java .util .ArrayList <>();
521
+ frame1 .add (100L );
522
+ frame1 .add (200L );
523
+ frameData .add (frame1 );
524
+
525
+ java .util .ArrayList <Long > frame2 = new java .util .ArrayList <>();
526
+ frame2 .add (300L );
527
+ frame2 .add (400L );
528
+ frameData .add (frame2 );
529
+
530
+ data .put ("frameData" , frameData );
531
+
532
+ api .endScreenRenderForCustomUiTrace (data );
533
+
534
+ mInternalApmStatic .verify (() -> InternalAPM ._endCustomUiTraceWithScreenRenderingCP (any ()));
535
+ mInternalApmStatic .verifyNoMoreInteractions ();
536
+ }
419
537
}
0 commit comments