255 CHECK (win.px_per_sec() == 20);
258 CHECK (win.overallSpan() ==
TimeSpan(_t(0), _t(64)));
259 CHECK (win.visible() ==
TimeSpan(_t(32,2), FSecs(32)));
260 CHECK (win.px_per_sec() == 40);
261 CHECK (win.pxWidth() == 1280);
263 win.setVisiblePos(0.0);
264 CHECK (win.visible() ==
TimeSpan(_t(0), FSecs(32)));
266 win.nudgeMetric(+15);
267 CHECK (win.overallSpan() ==
TimeSpan(_t(0), _t(64)));
268 CHECK (win.visible() ==
TimeSpan(_t(0), FSecs(32,32768) +MICRO_TICK));
269 CHECK (win.visible().start() == _t(0));
270 CHECK (win.visible().end() ==
TimeValue(977));
274 CHECK (win.px_per_sec() == 1280_r/977 *
Time::SCALE);
275 CHECK (win.pxWidth() == 1280);
278 CHECK (rational_cast<double> (32_r/32768 *
Time::SCALE) == 976.5625);
281 CHECK (win.overallSpan() ==
TimeSpan(_t(0), _t(64)));
284 CHECK (win.pxWidth() == 1280);
292 CHECK (win.visible().duration() ==
TimeValue(640));
296 win.calibrateExtension(2);
297 CHECK (win.overallSpan() ==
TimeSpan(_t(0), _t(64)));
298 CHECK (win.visible().duration() ==
TimeValue(1));
300 CHECK (win.pxWidth() == 2);
302 win.calibrateExtension(1);
303 CHECK (win.visible().duration() ==
TimeValue(1));
305 CHECK (win.pxWidth() == 1);
307 win.calibrateExtension(1280);
308 CHECK (win.visible().duration() ==
TimeValue(1280));
309 CHECK (win.visible().duration() ==
Duration{1280*MICRO_TICK});
311 CHECK (win.pxWidth() == 1280);
312 CHECK (win.overallSpan() ==
TimeSpan(_t(0), _t(64)));
315 CHECK (win.visible().duration() ==
Duration{32 * 1280*MICRO_TICK});
317 CHECK (win.pxWidth() == 1280);
318 CHECK (win.overallSpan() ==
TimeSpan(_t(0), _t(64)));
320 win.nudgeMetric(-12);
321 CHECK (win.visible() == win.overallSpan());
322 CHECK (win.overallSpan() ==
TimeSpan(_t(0), _t(64)));
323 CHECK (win.px_per_sec() == 20);
324 CHECK (win.pxWidth() == 1280);
327 win.expandVisibleRange (
TimeSpan{_t(60), _t(62)});
328 CHECK (win.px_per_sec() == 20_r/64*2);
329 CHECK (win.visible().duration() == _t(64 * 32));
330 CHECK (win.visible() == win.overallSpan());
331 CHECK (win.overallSpan() ==
TimeSpan(_t(-1920), _t(128)));
332 CHECK (win.overallSpan().duration() == _t(2048));
335 win.setMetric (5 / (1_r/44100));
336 CHECK (win.pxWidth() == 1280);
337 CHECK (win.px_per_sec() <= 5*44100);
338 CHECK (win.px_per_sec() >= 5*44100 - 1);
339 CHECK (win.visible().duration() ==
Duration{1280_r/(5*44100) +MICRO_TICK});
340 CHECK (win.visible().duration() ==
Duration{1280_r/win.px_per_sec()});
341 CHECK (win.overallSpan().duration() == _t(2048));
350 CHECK (win.visible() == win.overallSpan());
351 CHECK (win.px_per_sec() == 20);
353 win.setVisibleDuration (
Duration{FSecs(23,30)});
354 CHECK (win.visible().duration() == _t(23,30));
355 CHECK (win.visible().start() == _t(64,2) - _t(23,30*2));
356 CHECK (win.px_per_sec() == 1280_r/_FSecs(_t(23,30)));
357 CHECK (win.pxWidth() == 1280);
359 win.setVisibleRange (
TimeSpan{_t(12), FSecs(16)});
360 CHECK (win.visible() ==
TimeSpan(_t(12), _t(12+16)));
361 CHECK (win.overallSpan() ==
TimeSpan(_t(0), _t(64)));
362 CHECK (win.px_per_sec() == 1280_r/16);
363 CHECK (win.pxWidth() == 1280);
365 win.setVisiblePos(_t(12));
366 CHECK (win.visible().start() < _t(12));
367 CHECK (win.visible().duration() == _t(16));
368 CHECK (win.overallSpan() ==
TimeSpan(_t(0), _t(64)));
369 CHECK (win.px_per_sec() == 1280_r/16);
370 CHECK (win.pxWidth() == 1280);
372 win.setVisiblePos(0.80);
373 CHECK (win.visible().start() <
Time{FSecs(64)*8/10});
374 CHECK (win.visible().end() >
Time{FSecs(64)*8/10});
375 CHECK (win.px_per_sec() == 1280_r/16);
376 CHECK (win.pxWidth() == 1280);
379 win.setOverallDuration (
Duration{FSecs(3600)});
380 CHECK (win.overallSpan() ==
TimeSpan(_t(0), _t(3600)));
381 CHECK (win.px_per_sec() == 1280_r/16);
382 CHECK (win.pxWidth() == 1280);
383 CHECK (win.visible().duration() == _t(16));
384 CHECK (win.visible().start() <
Time{FSecs(64)*8/10});
385 CHECK (win.visible().end() >
Time{FSecs(64)*8/10});
388 win.setOverallRange (
TimeSpan{_t(-64), _t(-32)});
389 CHECK (win.overallSpan() ==
TimeSpan(_t(-64), FSecs(32)));
390 CHECK (win.px_per_sec() == 1280_r/16);
391 CHECK (win.pxWidth() == 1280);
392 CHECK (win.visible() ==
TimeSpan(_t(-32-16), FSecs(16)));
394 win.setOverallStart (_t(100));
395 CHECK (win.overallSpan() ==
TimeSpan(_t(100), FSecs(32)));
396 CHECK (win.visible() ==
TimeSpan(_t(100), FSecs(16)));
397 CHECK (win.px_per_sec() == 1280_r/16);
399 win.setOverallRange (
TimeSpan{_t(50), _t(52)});
400 CHECK (win.overallSpan() ==
TimeSpan(_t(50), FSecs(2)));
401 CHECK (win.visible() ==
TimeSpan(_t(50), FSecs(2)));
402 CHECK (win.px_per_sec() == 1280_r/2);
403 CHECK (win.pxWidth() == 1280);
412 CHECK (win.visible() == win.overallSpan());
413 CHECK (win.visible() ==
TimeSpan(_t(0), FSecs(16)));
414 CHECK (win.px_per_sec() == 80);
416 win.nudgeVisiblePos(+1);
417 CHECK (win.visible() ==
TimeSpan(_t(8), FSecs(16)));
418 CHECK (win.overallSpan() ==
TimeSpan(_t(0), FSecs(16+8)));
419 CHECK (win.px_per_sec() == 80);
420 CHECK (win.pxWidth() == 1280);
422 win.nudgeVisiblePos(-3);
423 CHECK (win.visible() ==
TimeSpan(_t(-16), FSecs(16)));
424 CHECK (win.overallSpan() ==
TimeSpan(_t(-16), FSecs(16+8+16)));
425 CHECK (win.px_per_sec() == 80);
426 CHECK (win.pxWidth() == 1280);
428 win.setVisiblePos(0.50);
429 CHECK (win.visible() ==
TimeSpan(_t((40/2-16) -8), FSecs(16)));
430 CHECK (win.visible().start() == _t(-4));
432 win.setVisiblePos(-0.50);
433 CHECK (win.visible() ==
TimeSpan(_t(-16-40/2), FSecs(16)));
434 CHECK (win.visible().start() == _t(-36));
435 win.setVisiblePos(_t(200));
436 CHECK (win.visible() ==
TimeSpan(_t(200-16), FSecs(16)));
437 CHECK (win.px_per_sec() == 80);
438 CHECK (win.pxWidth() == 1280);
440 win.setVisibleRange(
TimeSpan{_t(-200), FSecs(32)});
441 CHECK (win.overallSpan() ==
TimeSpan(_t(-200), _t(200)));
442 CHECK (win.visible() ==
TimeSpan(_t(-200), FSecs(32)));
443 CHECK (win.px_per_sec() == 40);
444 CHECK (win.pxWidth() == 1280);
453 CHECK (win.overallSpan() ==
TimeSpan(_t(0), _t(4)));
454 CHECK (win.visible() ==
TimeSpan(_t(0), _t(4)));
455 CHECK (win.px_per_sec() == 25);
456 CHECK (win.pxWidth() == 100);
458 bool notified{
false};
460 CHECK (not notified);
461 CHECK (win.px_per_sec() == 50);
462 CHECK (win.visible().duration() == _t(2));
464 win.attachChangeNotification([&](){ notified =
true; });
465 CHECK (not notified);
466 CHECK (win.px_per_sec() == 50);
468 CHECK (win.px_per_sec() == 100);
472 CHECK (win.visible().start() == _t(3,2));
473 win.nudgeVisiblePos(+1);
474 CHECK (win.visible().start() == _t(2));
478 CHECK (win.overallSpan() ==
TimeSpan(_t(0), _t(4)));
479 win.setOverallRange(
TimeSpan(_t(-4), _t(4)));
480 CHECK (win.overallSpan() ==
TimeSpan(_t(-4), _t(4)));
484 CHECK (win.pxWidth() == 100);
485 win.calibrateExtension(200);
486 CHECK (win.pxWidth() == 200);
487 CHECK (win.px_per_sec() == 100);
491 bool otherTriger{
false};
493 wuz.attachChangeNotification([&](){ otherTriger =
true; });
494 CHECK (wuz.visible().start() == _t(0));
495 CHECK (not notified);
496 CHECK (not otherTriger);
497 wuz.nudgeVisiblePos(-1);
498 CHECK (not notified);
500 CHECK (wuz.visible().start() == _t(-1,2));
503 CHECK (not notified);
505 CHECK (not otherTriger);
507 CHECK (win.px_per_sec() == 200);
508 CHECK (wuz.px_per_sec() == 10);
512 win.detachChangeNotification();
514 CHECK (not notified);
515 CHECK (win.px_per_sec() == 400);
518 CHECK (not notified);
520 CHECK (win.px_per_sec() == 400);
521 CHECK (wuz.px_per_sec() == 20);
577 CHECK (poison == 206435633551724850_r/307445734561825883);
578 CHECK (2_r/3 < poison and poison < 1);
581 CHECK (-6 == rational_cast<raw_time_64>(poison *
Time::SCALE));
582 CHECK (671453 == _raw(
Time(FSecs(poison))));
583 CHECK (671453.812f == rational_cast<float>(poison)*
Time::SCALE);
586 CHECK (40 == ilog2 (LIM_HAZARD));
587 CHECK (57 == ilog2 (poison.numerator()));
588 CHECK (58 == ilog2 (poison.denominator()));
591 int toxicity = toxicDegree (poison);
592 CHECK (toxicity == 18);
593 int64_t quant = poison.denominator() >> toxicity;
594 CHECK (quant == 1172812402961);
595 CHECK (ilog2 (quant) == ilog2 (LIM_HAZARD));
597 CHECK (detoxed == 787489446837_r/1172812402961);
598 CHECK (0.671453834f == rational_cast<float> (poison));
599 CHECK (0.671453834f == rational_cast<float> (detoxed));
601 CHECK (detoxed+
Time::SCALE == 1172813190450446837_r/1172812402961);
603 CHECK (671453 == _raw(
Time(FSecs(detoxed))));
605 CHECK (1906 == _raw(
TimeValue(1280 / rational_cast<long double>(poison))));
606 CHECK (1906 == _raw(
TimeValue(1280 / rational_cast<long double>(detoxed))));
620 CHECK (win.visible() == win.overallSpan());
621 CHECK (win.visible().duration() == _t(23));
622 CHECK (win.px_per_sec() == 25);
623 CHECK (win.pxWidth() == 575);
626 CHECK (0 < poison and poison < 1);
629 win.setMetric (poison);
630 CHECK (win.visible() == win.overallSpan());
631 CHECK (win.visible().duration() == _t(23));
632 CHECK (win.visible() ==
TimeSpan(_t(0), _t(23)));
633 CHECK (win.px_per_sec() == 25);
634 CHECK (win.pxWidth() == 575);
637 CHECK (win.overallSpan().duration() ==
TimeValue{307445734561825860});
638 CHECK (win.overallSpan().duration() ==
Time::MAX);
639 CHECK (win.visible().duration() == _t(23));
642 win.setMetric (poison);
643 CHECK (win.overallSpan().duration() ==
Time::MAX);
644 CHECK (win.visible().duration() ==
TimeValue{856350691});
645 CHECK (win.px_per_sec() == Rat{win.pxWidth()} / _FSecs(win.visible().duration()));
646 float approxPoison = rational_cast<float> (poison);
647 CHECK (approxPoison == 0.671453834f);
648 float approxNewMetric = rational_cast<float> (win.px_per_sec());
649 CHECK (approxNewMetric == 0.671453893f);
650 CHECK (win.px_per_sec() != poison);
651 CHECK (win.px_per_sec() < poison);
653 Rat poisonousDuration = win.pxWidth() / poison;
654 CHECK (poisonousDuration == 7071251894921995309_r/8257425342068994);
656 CHECK(856.350708f == rational_cast<float> (poisonousDuration));
657 CHECK(856.350708f == rational_cast<float> (_FSecs(win.visible().duration())));
658 CHECK (win.px_per_sec() == 575000000_r/856350691);
659 CHECK (win.pxWidth() == 575);
661 CHECK (win.overallSpan().start() ==
Time::ZERO);
662 CHECK (win.overallSpan().duration() ==
TimeValue{307445734561825860});
663 CHECK (win.visible().duration() ==
TimeValue{856350691});
666 win.setVisiblePos (poison);
667 CHECK (win.overallSpan().start() ==
Time::ZERO);
668 CHECK (win.overallSpan().duration() ==
TimeValue{307445734561825860});
669 CHECK (win.visible().duration() ==
TimeValue{856350691});
671 TimeValue targetPos{raw_time_64(_raw(win.overallSpan().duration())
672 * rational_cast<double> (poison))};
674 CHECK (targetPos ==
TimeValue{206435633551724864});
675 CHECK (win.visible().start() ==
TimeValue{206435633106265625});
676 CHECK (win.visible().end() ==
TimeValue{206435633962616316});
677 CHECK (win.visible().start() < targetPos);
678 CHECK (win.visible().end() > targetPos);
680 CHECK (win.px_per_sec() == 575000000_r/856350691);
681 CHECK (win.pxWidth() == 575);
685 CHECK (win.overallSpan() == win.visible());
686 CHECK (win.overallSpan().start() ==
TimeValue{307445734561825572});
687 CHECK (win.overallSpan().end() ==
TimeValue{307445734561825860});
688 CHECK (win.overallSpan().duration() ==
TimeValue{288});
689 CHECK (win.px_per_sec() == 17968750_r/9);
690 CHECK (win.pxWidth() == 575);
695 CHECK (win.visible().end() == win.visible().start() +
TimeValue{288});
696 CHECK (win.visible().duration() ==
TimeValue{288});
698 CHECK (win.overallSpan().start() == win.visible().start());
699 CHECK (win.overallSpan().end() ==
TimeValue{307445734561825860});
700 CHECK (_raw(win.overallSpan().duration()) == 614891469123651707);
701 CHECK (win.px_per_sec() == 17968750_r/9);
702 CHECK (win.pxWidth() == 575);
714 CHECK (win.overallSpan().duration() == _t(1));
715 CHECK (win.px_per_sec() == 3_r/1);
716 CHECK (win.pxWidth() == 3);
718 CHECK (_raw(win.overallSpan().duration()) == 614891469123651720);
719 CHECK (_raw(win.visible().duration()) == 1000000);
720 CHECK (win.px_per_sec() == 3_r/1);
721 CHECK (win.pxWidth() == 3);
724 Rat bruteZoom{3_r/(int64_t{1}<<60)};
725 win.setMetric (bruteZoom);
727 CHECK (_raw(win.overallSpan().duration()) == 614891469123651720);
728 CHECK (_raw(win.visible().duration()) == 3298534883328000);
729 CHECK (_raw(win.visible().duration()) < int64_t{1}<<60 );
730 CHECK (_raw(win.visible().duration()) == 3* LIM_HAZARD*1000);
732 CHECK (win.visible().start() == - win.visible().end());
733 CHECK (win.px_per_sec() > bruteZoom);
734 CHECK (win.px_per_sec() == 125_r/137438953472);
735 CHECK (win.px_per_sec() == 1000_r/LIM_HAZARD);
736 CHECK (win.px_per_sec() == 3 / _FSecs(win.visible().duration()));
737 CHECK (win.pxWidth() == 3);
740 win.setMetric (5_r/std::numeric_limits<int64_t>::max());
741 CHECK (_raw(win.visible().duration()) == 3298534883328000);
742 CHECK (win.px_per_sec() == 125_r/137438953472);
743 CHECK (win.pxWidth() == 3);
746 win.setMetric (1001_r/LIM_HAZARD);
747 CHECK (_raw(win.visible().duration()) == 3295239643684316);
748 CHECK (_raw(win.visible().duration()) < 3 * LIM_HAZARD*1000);
749 CHECK (win.px_per_sec() > 1000_r/LIM_HAZARD);
750 CHECK (win.px_per_sec() == 1001_r/LIM_HAZARD);
751 CHECK (win.px_per_sec() == 1001_r/1099511627776);
752 CHECK (win.pxWidth() == 3);
755 win.setMetric (1000_r/LIM_HAZARD * 1024_r/1023);
756 CHECK (_raw(win.visible().duration()) == 3295313657856000);
757 CHECK (_raw(win.visible().duration()) < 3 * LIM_HAZARD*1000);
758 CHECK (win.px_per_sec() > 1000_r/LIM_HAZARD);
759 CHECK (win.px_per_sec() < 1001_r/LIM_HAZARD);
760 CHECK (win.px_per_sec() == 1000_r/LIM_HAZARD * 1024_r/1023);
761 CHECK (win.px_per_sec() == 125_r/137304735744);
762 CHECK (win.pxWidth() == 3);
765 win.setMetric (1001_r/(LIM_HAZARD-3));
766 CHECK (win.px_per_sec() > 1001_r/LIM_HAZARD);
767 CHECK (win.px_per_sec() < 1002_r/LIM_HAZARD);
768 CHECK (1001_r/(LIM_HAZARD-3) == 77_r/84577817521);
770 CHECK (3_r/3295239643675325 *
Time::SCALE == 120000_r/131809585747013);
771 CHECK (win.px_per_sec() == 2003_r/2199023255552);
772 CHECK (win.pxWidth() == 3);
774 CHECK (_raw(
Duration{3_r/(77_r/84577817521)}) == 3295239643675324);
775 CHECK (_raw(win.visible().duration()) == 3295239643675325);
776 CHECK (_raw(
Duration{3_r/win.px_per_sec()}) == 3293594491590614);
778 CHECK (2003.0f/2002 - 1 == 0.000499486923f);
782 win.calibrateExtension (1'000'000'000);
783 CHECK (win.pxWidth() < 1'000'000'000);
784 CHECK (win.pxWidth() == MAX_PX_WIDTH);
785 CHECK (win.px_per_sec() == 89407_r/549755813888);
786 CHECK (win.px_per_sec() > Rat{MAX_PX_WIDTH} /MAX_TIMESPAN);
787 CHECK (win.px_per_sec() < Rat{MAX_PX_WIDTH+1}/MAX_TIMESPAN);
789 CHECK (_raw(win.overallSpan().duration()) == 614891469123651720);
790 CHECK (_raw(win.visible().duration()) == 614891469123651720);
791 CHECK (win.overallSpan().end() ==
TimeValue{ 307445734561825860});
792 CHECK (win.visible().end() ==
TimeValue{ 307445734561825860});
793 CHECK (win.visible().start() ==
TimeValue{-307445734561825860});
796 CHECK (MAX_PX_WIDTH / _FSecs(win.visible().duration()) == 2500000000_r/15372286728091293);
797 CHECK (MAX_PX_WIDTH * 1000000_r/614891469123651720 == 2500000000_r/15372286728091293);
798 CHECK (win.px_per_sec() * _FSecs(win.visible().duration()) < 0);
799 CHECK (rational_cast<float>(win.px_per_sec())
800 * rational_cast<float>(_FSecs(win.visible().duration())) == 100000.031f);
801 CHECK (rational_cast<float>(MAX_PX_WIDTH*1000000_r/614891469123651720) == 1.62630329e-07f);
802 CHECK (rational_cast<float>(win.px_per_sec()) == 1.62630386e-07f);
803 CHECK (win.px_per_sec() == 89407_r/549755813888);
806 win.setMetric (bruteZoom);
807 CHECK (_raw(win.overallSpan().duration()) == 614891469123651720);
808 CHECK (_raw(win.visible().duration()) == 614891469123651720);
809 CHECK (win.px_per_sec() == 89407_r/549755813888);
810 CHECK (MAX_PX_WIDTH /(614891469123651720_r/
Time::SCALE) == 2500000000_r/15372286728091293);
811 CHECK (2500000000_r/15372286728091293 < 89407_r/549755813888);
812 CHECK (win.pxWidth() == MAX_PX_WIDTH);
824 CHECK (win.visible().duration() ==
TimeValue(280));
825 CHECK (win.visible().start() ==
TimeValue(307445734561825580));
826 CHECK (win.visible().end() ==
TimeValue(307445734561825860));
827 CHECK (win.visible().end() ==
Time::MAX);
828 CHECK (win.visible() == win.overallSpan());
830 CHECK (win.px_per_sec() == 13975000_r/7);
831 CHECK (win.pxWidth() == 559);
835 win.setVisiblePos (anchorPos);
836 CHECK (win.visible().duration() ==
TimeValue(280));
837 CHECK (win.px_per_sec() == 13975000_r/7);
838 CHECK (win.pxWidth() == 559);
839 CHECK (win.visible().start() >
Time::MIN);
840 CHECK (win.visible().start() == anchorPos);
841 CHECK (win.visible().end() > anchorPos);
842 CHECK (win.visible().start() ==
TimeValue(-288230376151711744));
843 CHECK (win.visible().end() ==
TimeValue(-288230376151711464));
844 CHECK (win.overallSpan().start() == win.visible().start());
845 CHECK (win.overallSpan().end() ==
Time::MAX);
848 win.calibrateExtension (560);
849 CHECK (win.visible().duration() ==
TimeValue(280));
850 CHECK (win.px_per_sec() == 2000000_r/1);
854 win.setVisibleDuration(targetDur);
856 CHECK (win.visible().duration() == targetDur);
858 CHECK (win.visible().start() ==
Time::MIN);
859 CHECK (win.visible().start() <
Time::MAX);
860 CHECK (win.visible().end() ==
TimeValue(307445734538825860));
862 CHECK (win.px_per_sec() == 2003_r/2199023255552);
863 CHECK (win.pxWidth() == 560);
866 win.setVisiblePos (Rat{std::numeric_limits<int64_t>::max()-23});
867 CHECK (win.visible().duration() == targetDur);
868 CHECK (win.px_per_sec() == 2003_r/2199023255552);
869 CHECK (win.pxWidth() == 560);
870 CHECK (win.visible().end() ==
Time::MAX);
871 CHECK (win.visible().start() >
Time::MIN);
872 CHECK (win.visible().start() ==
TimeValue(-307445734538825860));
875 win.calibrateExtension (561);
876 CHECK (win.visible().duration() > targetDur);
878 CHECK (win.visible().end() ==
Time::MAX);
879 CHECK (win.visible().start() ==
Time::MIN);
880 CHECK (win.px_per_sec() == 2007_r/2199023255552);
881 CHECK (win.pxWidth() == 561);
885 CHECK (win.visible().end() ==
Time::MAX);
887 CHECK (win.px_per_sec() == 2007_r/2199023255552);
888 CHECK (win.pxWidth() == 561);
891 CHECK (win.visible().duration() ==
TimeValue(281));
893 CHECK (win.px_per_sec() == 561000000_r/281);
894 CHECK (win.visible().end() ==
Time::MAX);
895 CHECK (win.pxWidth() == 561);
906 CHECK (win.visible().duration() ==
TimeValue(1));
908 win.nudgeVisiblePos (-2);
912 CHECK (win.visible().end() ==
Time::MAX);
914 CHECK (win.visible().duration() ==
TimeValue(1));
915 CHECK (win.overallSpan().duration() ==
TimeValue(2));
916 CHECK (win.px_per_sec() == 1000000);
917 CHECK (win.pxWidth() == 1);
919 win.nudgeVisiblePos (std::numeric_limits<int64_t>::min());
921 CHECK (win.visible().duration() ==
TimeValue(1));
922 CHECK (win.visible().start() ==
Time::MIN);
924 CHECK (win.px_per_sec() == 1000000);
925 CHECK (win.pxWidth() == 1);
927 win.calibrateExtension (460);
930 CHECK (win.visible().start() ==
Time::MIN);
931 CHECK (win.visible().end() ==
TimeValue(-1));
933 win.nudgeVisiblePos (+2);
935 CHECK (win.visible().start() ==
TimeValue(-1));
936 win.nudgeVisiblePos (-1);
937 CHECK (win.visible().start() ==
TimeValue(-153722867280912930));
938 CHECK (win.visible().end() ==
TimeValue(+153722867280912929));
940 win.nudgeVisiblePos (+1000);
941 CHECK (ilogb(500.0 * _raw(
Time::MAX)) == 67);
942 CHECK (win.visible().start() ==
TimeValue(+1));
943 CHECK (win.visible().end() ==
Time::MAX);
944 CHECK (win.pxWidth() == 460);
955 CHECK (win.overallSpan().end() ==
Time::MAX);
956 CHECK (win.visible().duration() == LIM_HAZARD * 1000);
957 CHECK (win.visible().start()+win.visible().end() ==
Time::ZERO);
958 CHECK (win.px_per_sec() == 1_r/(LIM_HAZARD*1000)*
Time::SCALE);
959 CHECK (win.px_per_sec() == 125_r/137438953472);
960 CHECK (win.pxWidth() == 1);
962 win.nudgeVisiblePos (+1);
964 CHECK (win.visible().end() == LIM_HAZARD*1000);
965 CHECK (win.px_per_sec() == 125_r/137438953472);
966 CHECK (win.pxWidth() == 1);
968 win.nudgeMetric (-1);
969 CHECK (win.px_per_sec() == 125_r/137438953472);
970 win.nudgeMetric (+1);
971 CHECK (win.px_per_sec() == 125_r/68719476736);
972 CHECK (win.visible().start() ==
TimeValue(274877908523000));
973 CHECK (win.visible().end() ==
TimeValue(824633722411000));
974 CHECK (win.visible().duration() == LIM_HAZARD * 1000 / 2);
975 CHECK (win.pxWidth() == 1);
978 CHECK (win.visible().end() ==
Time::MAX);
979 CHECK (win.visible().duration() == LIM_HAZARD * 1000 / 2);
980 CHECK (win.px_per_sec() == 2_r/(LIM_HAZARD*1000)*
Time::SCALE);
981 CHECK (win.pxWidth() == 1);
984 ,FSecs{LIM_HAZARD, 1001}});
985 CHECK (win.visible().end() ==
Time::MAX);
986 CHECK (win.visible().duration() ==
Duration(FSecs{LIM_HAZARD, 1001}));
987 CHECK (win.visible().duration() ==
TimeValue(1098413214561438));
988 CHECK ( FSecs(LIM_HAZARD, 1000) > FSecs(LIM_HAZARD, 1001));
989 CHECK (win.px_per_sec() == 2003_r/2199023255552);
990 CHECK (win.pxWidth() == 1);
1002 CHECK (win.overallSpan().duration() == win.visible().duration());
1003 CHECK (win.visible().duration() ==
TimeValue(1));
1004 CHECK (win.visible().start() ==
Time::MIN);
1007 CHECK (win.px_per_sec() == 1000000);
1008 CHECK (win.pxWidth() == 1);
1010 win.setOverallDuration (
Duration{FSecs(1)});
1011 win.calibrateExtension (2);
1012 CHECK (win.visible().duration() ==
TimeValue(2));
1013 CHECK (win.px_per_sec() == 1000000);
1017 CHECK (win.px_per_sec() == 2000000);
1018 CHECK (win.visible().start() ==
Time::MIN);
1020 CHECK (win.pxWidth() == 2);
1022 win.nudgeVisiblePos (+1);
1025 CHECK (win.visible().duration() ==
TimeValue(1));
1028 win.calibrateExtension (3);
1029 CHECK (win.visible().duration() ==
TimeValue(2));
1033 CHECK (win.pxWidth() == 3);
1036 CHECK (win.px_per_sec() == 3000000_r/17);
1038 CHECK (win.px_per_sec() == 187500);
1040 CHECK (win.px_per_sec() == 200000);
1044 win.nudgeMetric (-1);
1045 CHECK (win.px_per_sec() == 100000);
1046 CHECK (win.visible().duration() ==
TimeValue(30));
1047 win.nudgeMetric (+2);
1048 CHECK (win.px_per_sec() == 375000);
1049 CHECK (win.visible().duration() ==
TimeValue(8));
1050 win.nudgeMetric (+1);
1051 CHECK (win.px_per_sec() == 750000);
1052 CHECK (win.visible().duration() ==
TimeValue(4));
1056 CHECK (win.px_per_sec() == 1000000);
1057 CHECK (win.visible().duration() ==
TimeValue(3));
1061 win.nudgeVisiblePos (-5);
1064 CHECK (win.visible().duration() ==
TimeValue(3));
1066 win.calibrateExtension (MAX_PX_WIDTH);
1067 CHECK (win.pxWidth() == 100000);
1068 CHECK (win.visible().duration() ==
TimeValue(100000));
1075 CHECK (win.visible().duration() ==
TimeValue(50000));
1077 CHECK (win.pxWidth() == 100000);