comparison base/test/TestScaleTickIntervals.h @ 1460:9528c73aa98c horizontal-scale

Simpler & more consistent log scale tick calculation
author Chris Cannam
date Wed, 02 May 2018 15:42:36 +0100
parents 3a128665fa6f
children 2b2b58ae8b59
comparison
equal deleted inserted replaced
1459:3a128665fa6f 1460:9528c73aa98c
426 void linear_1_1_10() 426 void linear_1_1_10()
427 { 427 {
428 // pathological range 428 // pathological range
429 auto ticks = ScaleTickIntervals::linear({ 1, 1, 10 }); 429 auto ticks = ScaleTickIntervals::linear({ 1, 1, 10 });
430 ScaleTickIntervals::Ticks expected { 430 ScaleTickIntervals::Ticks expected {
431 { 1.0, "1.0" } 431 { 1.0, "1" }
432 }; 432 };
433 compareTicks(ticks, expected); 433 compareTicks(ticks, expected);
434 } 434 }
435 435
436 void linear_0_0_10() 436 void linear_0_0_10()
496 void log_1_10_2() 496 void log_1_10_2()
497 { 497 {
498 auto ticks = ScaleTickIntervals::logarithmic({ 1, 10, 2 }); 498 auto ticks = ScaleTickIntervals::logarithmic({ 1, 10, 2 });
499 ScaleTickIntervals::Ticks expected { 499 ScaleTickIntervals::Ticks expected {
500 { 1.0, "1.0" }, 500 { 1.0, "1.0" },
501 { pow(10.0, 0.5), "3.2" }, 501 { 3.2, "3.2" },
502 { 10.0, "10.0" }, 502 { 10.0, "10" },
503 }; 503 };
504 compareTicks(ticks, expected); 504 compareTicks(ticks, expected);
505 } 505 }
506 506
507 void log_0_10_2() 507 void log_0_10_2()
516 516
517 void log_pi_avogadro_7() 517 void log_pi_avogadro_7()
518 { 518 {
519 auto ticks = ScaleTickIntervals::logarithmic({ M_PI, 6.022140857e23, 7 }); 519 auto ticks = ScaleTickIntervals::logarithmic({ M_PI, 6.022140857e23, 7 });
520 ScaleTickIntervals::Ticks expected { 520 ScaleTickIntervals::Ticks expected {
521 { 1000, "1000.0" }, 521 { 1000, "1000" },
522 { 1e+06, "1e+06" }, 522 { 1e+06, "1e+06" },
523 { 1e+09, "1e+09" }, 523 { 1e+09, "1e+09" },
524 { 1e+12, "1e+12" }, 524 { 1e+12, "1e+12" },
525 { 1e+15, "1e+15" }, 525 { 1e+15, "1e+15" },
526 { 1e+18, "1e+18" }, 526 { 1e+18, "1e+18" },
531 531
532 void log_0p465_778_10() 532 void log_0p465_778_10()
533 { 533 {
534 auto ticks = ScaleTickIntervals::logarithmic({ 0.465, 778.08, 10 }); 534 auto ticks = ScaleTickIntervals::logarithmic({ 0.465, 778.08, 10 });
535 ScaleTickIntervals::Ticks expected { 535 ScaleTickIntervals::Ticks expected {
536 { 0.5, "0.5" }, 536 { 0.5, "0.50" },
537 { 1, "1.0" }, 537 { 1, "1.0" },
538 { 2, "2.0" }, 538 { 2, "2.0" },
539 { 4, "4.0" }, 539 { 4, "4.0" },
540 { 8, "8.0" }, 540 { 8, "8.0" },
541 { 16, "16.0" }, 541 { 16, "16" },
542 { 32, "32.0" }, 542 { 32, "32" },
543 { 64, "64.0" }, 543 { 64, "64" },
544 { 128, "128.0" }, 544 { 130, "130" },
545 { 256, "256.0" }, 545 { 260, "260" },
546 { 512, "512.0" }, 546 { 510, "510" },
547 }; 547 };
548 compareTicks(ticks, expected); 548 compareTicks(ticks, expected);
549 } 549 }
550 550
551 void log_1_10k_10() 551 void log_1_10k_10()
552 { 552 {
553 auto ticks = ScaleTickIntervals::logarithmic({ 1.0, 10000.0, 10 }); 553 auto ticks = ScaleTickIntervals::logarithmic({ 1.0, 10000.0, 10 });
554 ScaleTickIntervals::Ticks expected { 554 ScaleTickIntervals::Ticks expected {
555 { 1.0, "1.0" }, 555 { 1.0, "1.0" },
556 { 2.5, "2.5" }, 556 { 2.5, "2.5" },
557 { 6.0, "6.0" }, 557 { 6.3, "6.3" },
558 { 16.0, "16.0" }, 558 { 16.0, "16" },
559 { 40.0, "40.0" }, 559 { 40.0, "40" },
560 { 100.0, "100.0" }, 560 { 100.0, "100" },
561 { 250.0, "250.0" }, 561 { 250.0, "250" },
562 { 600.0, "600.0" }, 562 { 630.0, "630" },
563 { 1600.0, "1600.0" }, 563 { 1600.0, "1600" },
564 { 4000.0, "4000.0" }, 564 { 4000.0, "4000" },
565 { 10000.0, "1e+04" }, 565 { 10000.0, "1e+04" },
566 }; 566 };
567 compareTicks(ticks, expected, true); 567 compareTicks(ticks, expected, true);
568 } 568 }
569 569
585 void log_80_800k_10() 585 void log_80_800k_10()
586 { 586 {
587 auto ticks = ScaleTickIntervals::logarithmic({ 80.0, 800000.0, 10 }); 587 auto ticks = ScaleTickIntervals::logarithmic({ 80.0, 800000.0, 10 });
588 ScaleTickIntervals::Ticks expected { 588 ScaleTickIntervals::Ticks expected {
589 { 100, "100" }, 589 { 100, "100" },
590 { 251, "251" }, 590 { 250, "250" },
591 { 631, "631" }, 591 { 630, "630" },
592 { 1580, "1580" }, 592 { 1600, "1600" },
593 { 3980, "3980" }, 593 { 4000, "4000" },
594 { 10000, "10000" }, 594 { 10000, "1e+04" },
595 { 25100, "2.5e+04" }, 595 { 25000, "2.5e+04" },
596 { 63100, "6.3e+04" }, 596 { 63000, "6.3e+04" },
597 { 160000, "1.6e+05" }, 597 { 160000, "1.6e+05" },
598 { 400000, "4e+05" }, 598 { 400000, "4e+05" },
599 }; 599 };
600 compareTicks(ticks, expected, true); 600 compareTicks(ticks, expected, true);
601 } 601 }