Mercurial > hg > svcore
diff base/test/TestScaleTickIntervals.h @ 1450:a12fd0456f0c streaming-csv-writer
Merge from default branch
author | Chris Cannam |
---|---|
date | Tue, 17 Apr 2018 10:35:42 +0100 |
parents | 48e9f538e6e9 |
children | 3a128665fa6f |
line wrap: on
line diff
--- a/base/test/TestScaleTickIntervals.h Tue Apr 17 10:03:51 2018 +0100 +++ b/base/test/TestScaleTickIntervals.h Tue Apr 17 10:35:42 2018 +0100 @@ -30,295 +30,295 @@ Q_OBJECT void printDiff(vector<ScaleTickIntervals::Tick> ticks, - vector<ScaleTickIntervals::Tick> expected) { + vector<ScaleTickIntervals::Tick> expected) { - cerr << "Have " << ticks.size() << " ticks, expected " - << expected.size() << endl; - for (int i = 0; i < int(ticks.size()); ++i) { - cerr << i << ": have " << ticks[i].value << " \"" + SVCERR << "Have " << ticks.size() << " ticks, expected " + << expected.size() << endl; + for (int i = 0; i < int(ticks.size()); ++i) { + SVCERR << i << ": have " << ticks[i].value << " \"" << ticks[i].label << "\", expected "; - if (i < int(expected.size())) { - cerr << expected[i].value << " \"" << expected[i].label - << "\"" << endl; + if (i < int(expected.size())) { + SVCERR << expected[i].value << " \"" << expected[i].label + << "\"" << endl; } else { - cerr << "(n/a)" << endl; - } - } + SVCERR << "(n/a)" << endl; + } + } } void compareTicks(ScaleTickIntervals::Ticks ticks, - ScaleTickIntervals::Ticks expected, + ScaleTickIntervals::Ticks expected, bool fuzzier = false) { double eps = 1e-7; - for (int i = 0; i < int(expected.size()); ++i) { - if (i < int(ticks.size())) { + for (int i = 0; i < int(expected.size()); ++i) { + if (i < int(ticks.size())) { bool pass = true; - if (ticks[i].label != expected[i].label) { + if (ticks[i].label != expected[i].label) { pass = false; } else if (!fuzzier) { - if (fabs(ticks[i].value - expected[i].value) > eps) { + if (fabs(ticks[i].value - expected[i].value) > eps) { pass = false; } } else { - if (fabs(ticks[i].value - expected[i].value) > + if (fabs(ticks[i].value - expected[i].value) > fabs(ticks[i].value) * 1e-5) { pass = false; } } if (!pass) { - printDiff(ticks, expected); + printDiff(ticks, expected); QCOMPARE(ticks[i].label, expected[i].label); QCOMPARE(ticks[i].value, expected[i].value); } - } - } + } + } if (ticks.size() != expected.size()) { printDiff(ticks, expected); } - QCOMPARE(ticks.size(), expected.size()); + QCOMPARE(ticks.size(), expected.size()); } private slots: void linear_0_1_10() { - auto ticks = ScaleTickIntervals::linear({ 0, 1, 10 }); - ScaleTickIntervals::Ticks expected { - { 0.0, "0.0" }, - { 0.1, "0.1" }, - { 0.2, "0.2" }, - { 0.3, "0.3" }, - { 0.4, "0.4" }, - { 0.5, "0.5" }, - { 0.6, "0.6" }, - { 0.7, "0.7" }, - { 0.8, "0.8" }, - { 0.9, "0.9" }, - { 1.0, "1.0" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 0, 1, 10 }); + ScaleTickIntervals::Ticks expected { + { 0.0, "0.0" }, + { 0.1, "0.1" }, + { 0.2, "0.2" }, + { 0.3, "0.3" }, + { 0.4, "0.4" }, + { 0.5, "0.5" }, + { 0.6, "0.6" }, + { 0.7, "0.7" }, + { 0.8, "0.8" }, + { 0.9, "0.9" }, + { 1.0, "1.0" } + }; + compareTicks(ticks, expected); } void linear_0_5_5() { - auto ticks = ScaleTickIntervals::linear({ 0, 5, 5 }); - ScaleTickIntervals::Ticks expected { - { 0, "0" }, - { 1, "1" }, - { 2, "2" }, - { 3, "3" }, - { 4, "4" }, - { 5, "5" }, - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 0, 5, 5 }); + ScaleTickIntervals::Ticks expected { + { 0, "0" }, + { 1, "1" }, + { 2, "2" }, + { 3, "3" }, + { 4, "4" }, + { 5, "5" }, + }; + compareTicks(ticks, expected); } void linear_0_10_5() { - auto ticks = ScaleTickIntervals::linear({ 0, 10, 5 }); - ScaleTickIntervals::Ticks expected { - { 0, "0" }, - { 2, "2" }, - { 4, "4" }, - { 6, "6" }, - { 8, "8" }, - { 10, "10" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 0, 10, 5 }); + ScaleTickIntervals::Ticks expected { + { 0, "0" }, + { 2, "2" }, + { 4, "4" }, + { 6, "6" }, + { 8, "8" }, + { 10, "10" } + }; + compareTicks(ticks, expected); } void linear_10_0_5() { - auto ticks = ScaleTickIntervals::linear({ 10, 0, 5 }); - ScaleTickIntervals::Ticks expected { - { 0, "0" }, - { 2, "2" }, - { 4, "4" }, - { 6, "6" }, - { 8, "8" }, - { 10, "10" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 10, 0, 5 }); + ScaleTickIntervals::Ticks expected { + { 0, "0" }, + { 2, "2" }, + { 4, "4" }, + { 6, "6" }, + { 8, "8" }, + { 10, "10" } + }; + compareTicks(ticks, expected); } void linear_m10_0_5() { - auto ticks = ScaleTickIntervals::linear({ -10, 0, 5 }); - ScaleTickIntervals::Ticks expected { - { -10, "-10" }, - { -8, "-8" }, - { -6, "-6" }, - { -4, "-4" }, - { -2, "-2" }, - { 0, "0" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ -10, 0, 5 }); + ScaleTickIntervals::Ticks expected { + { -10, "-10" }, + { -8, "-8" }, + { -6, "-6" }, + { -4, "-4" }, + { -2, "-2" }, + { 0, "0" } + }; + compareTicks(ticks, expected); } void linear_0_m10_5() { - auto ticks = ScaleTickIntervals::linear({ 0, -10, 5 }); - ScaleTickIntervals::Ticks expected { - { -10, "-10" }, - { -8, "-8" }, - { -6, "-6" }, - { -4, "-4" }, - { -2, "-2" }, - { 0, "0" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 0, -10, 5 }); + ScaleTickIntervals::Ticks expected { + { -10, "-10" }, + { -8, "-8" }, + { -6, "-6" }, + { -4, "-4" }, + { -2, "-2" }, + { 0, "0" } + }; + compareTicks(ticks, expected); } void linear_0_0p1_5() { - auto ticks = ScaleTickIntervals::linear({ 0, 0.1, 5 }); - ScaleTickIntervals::Ticks expected { - { 0.00, "0.00" }, - { 0.02, "0.02" }, - { 0.04, "0.04" }, - { 0.06, "0.06" }, - { 0.08, "0.08" }, - { 0.10, "0.10" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 0, 0.1, 5 }); + ScaleTickIntervals::Ticks expected { + { 0.00, "0.00" }, + { 0.02, "0.02" }, + { 0.04, "0.04" }, + { 0.06, "0.06" }, + { 0.08, "0.08" }, + { 0.10, "0.10" } + }; + compareTicks(ticks, expected); } void linear_0_0p01_5() { - auto ticks = ScaleTickIntervals::linear({ 0, 0.01, 5 }); - ScaleTickIntervals::Ticks expected { - { 0.000, "0.000" }, - { 0.002, "0.002" }, - { 0.004, "0.004" }, - { 0.006, "0.006" }, - { 0.008, "0.008" }, - { 0.010, "0.010" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 0, 0.01, 5 }); + ScaleTickIntervals::Ticks expected { + { 0.000, "0.000" }, + { 0.002, "0.002" }, + { 0.004, "0.004" }, + { 0.006, "0.006" }, + { 0.008, "0.008" }, + { 0.010, "0.010" } + }; + compareTicks(ticks, expected); } void linear_0_0p005_5() { - auto ticks = ScaleTickIntervals::linear({ 0, 0.005, 5 }); - ScaleTickIntervals::Ticks expected { - { 0.000, "0.000" }, - { 0.001, "0.001" }, - { 0.002, "0.002" }, - { 0.003, "0.003" }, - { 0.004, "0.004" }, - { 0.005, "0.005" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 0, 0.005, 5 }); + ScaleTickIntervals::Ticks expected { + { 0.000, "0.000" }, + { 0.001, "0.001" }, + { 0.002, "0.002" }, + { 0.003, "0.003" }, + { 0.004, "0.004" }, + { 0.005, "0.005" } + }; + compareTicks(ticks, expected); } void linear_0_0p001_5() { - auto ticks = ScaleTickIntervals::linear({ 0, 0.001, 5 }); - ScaleTickIntervals::Ticks expected { - { 0.0000, "0.0e+00" }, - { 0.0002, "2.0e-04" }, - { 0.0004, "4.0e-04" }, - { 0.0006, "6.0e-04" }, - { 0.0008, "8.0e-04" }, - { 0.0010, "1.0e-03" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 0, 0.001, 5 }); + ScaleTickIntervals::Ticks expected { + { 0.0000, "0.0e+00" }, + { 0.0002, "2.0e-04" }, + { 0.0004, "4.0e-04" }, + { 0.0006, "6.0e-04" }, + { 0.0008, "8.0e-04" }, + { 0.0010, "1.0e-03" } + }; + compareTicks(ticks, expected); } void linear_1_1p001_5() { - auto ticks = ScaleTickIntervals::linear({ 1, 1.001, 5 }); - ScaleTickIntervals::Ticks expected { - { 1.0000, "1.0000" }, - { 1.0002, "1.0002" }, - { 1.0004, "1.0004" }, - { 1.0006, "1.0006" }, - { 1.0008, "1.0008" }, - { 1.0010, "1.0010" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 1, 1.001, 5 }); + ScaleTickIntervals::Ticks expected { + { 1.0000, "1.0000" }, + { 1.0002, "1.0002" }, + { 1.0004, "1.0004" }, + { 1.0006, "1.0006" }, + { 1.0008, "1.0008" }, + { 1.0010, "1.0010" } + }; + compareTicks(ticks, expected); } void linear_0p001_1_5() { - auto ticks = ScaleTickIntervals::linear({ 0.001, 1, 5 }); - ScaleTickIntervals::Ticks expected { - { 0.1, "0.1" }, - { 0.3, "0.3" }, - { 0.5, "0.5" }, - { 0.7, "0.7" }, - { 0.9, "0.9" }, - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 0.001, 1, 5 }); + ScaleTickIntervals::Ticks expected { + { 0.1, "0.1" }, + { 0.3, "0.3" }, + { 0.5, "0.5" }, + { 0.7, "0.7" }, + { 0.9, "0.9" }, + }; + compareTicks(ticks, expected); } void linear_10000_10010_5() { - auto ticks = ScaleTickIntervals::linear({ 10000, 10010, 5 }); - ScaleTickIntervals::Ticks expected { - { 10000, "10000" }, - { 10002, "10002" }, - { 10004, "10004" }, - { 10006, "10006" }, - { 10008, "10008" }, - { 10010, "10010" }, - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 10000, 10010, 5 }); + ScaleTickIntervals::Ticks expected { + { 10000, "10000" }, + { 10002, "10002" }, + { 10004, "10004" }, + { 10006, "10006" }, + { 10008, "10008" }, + { 10010, "10010" }, + }; + compareTicks(ticks, expected); } void linear_10000_20000_5() { - auto ticks = ScaleTickIntervals::linear({ 10000, 20000, 5 }); - ScaleTickIntervals::Ticks expected { - { 10000, "10000" }, - { 12000, "12000" }, - { 14000, "14000" }, - { 16000, "16000" }, - { 18000, "18000" }, - { 20000, "20000" }, - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 10000, 20000, 5 }); + ScaleTickIntervals::Ticks expected { + { 10000, "10000" }, + { 12000, "12000" }, + { 14000, "14000" }, + { 16000, "16000" }, + { 18000, "18000" }, + { 20000, "20000" }, + }; + compareTicks(ticks, expected); } void linear_m1_1_10() { - auto ticks = ScaleTickIntervals::linear({ -1, 1, 10 }); - ScaleTickIntervals::Ticks expected { - { -1.0, "-1.0" }, - { -0.8, "-0.8" }, - { -0.6, "-0.6" }, - { -0.4, "-0.4" }, - { -0.2, "-0.2" }, - { 0.0, "0.0" }, - { 0.2, "0.2" }, - { 0.4, "0.4" }, - { 0.6, "0.6" }, - { 0.8, "0.8" }, - { 1.0, "1.0" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ -1, 1, 10 }); + ScaleTickIntervals::Ticks expected { + { -1.0, "-1.0" }, + { -0.8, "-0.8" }, + { -0.6, "-0.6" }, + { -0.4, "-0.4" }, + { -0.2, "-0.2" }, + { 0.0, "0.0" }, + { 0.2, "0.2" }, + { 0.4, "0.4" }, + { 0.6, "0.6" }, + { 0.8, "0.8" }, + { 1.0, "1.0" } + }; + compareTicks(ticks, expected); } void linear_221p23_623p7_57p4() { - auto ticks = ScaleTickIntervals::linear({ 221.23, 623.7, 4 }); + auto ticks = ScaleTickIntervals::linear({ 221.23, 623.7, 4 }); // only 4 ticks, not 5, because none of the rounded tick // values lies on an end value - ScaleTickIntervals::Ticks expected { + ScaleTickIntervals::Ticks expected { { 300, "300" }, { 400, "400" }, { 500, "500" }, { 600, "600" }, - }; - compareTicks(ticks, expected); + }; + compareTicks(ticks, expected); } void linear_sqrt2_pi_7() { - auto ticks = ScaleTickIntervals::linear({ sqrt(2.0), M_PI, 7 }); + auto ticks = ScaleTickIntervals::linear({ sqrt(2.0), M_PI, 7 }); // This would be better in steps of 0.25, but we only round to // integral powers of ten - ScaleTickIntervals::Ticks expected { + ScaleTickIntervals::Ticks expected { { 1.5, "1.5" }, { 1.7, "1.7" }, { 1.9, "1.9" }, @@ -328,14 +328,14 @@ { 2.7, "2.7" }, { 2.9, "2.9" }, { 3.1, "3.1" }, - }; - compareTicks(ticks, expected); + }; + compareTicks(ticks, expected); } void linear_pi_avogadro_7() { - auto ticks = ScaleTickIntervals::linear({ M_PI, 6.022140857e23, 7 }); - ScaleTickIntervals::Ticks expected { + auto ticks = ScaleTickIntervals::linear({ M_PI, 6.022140857e23, 7 }); + ScaleTickIntervals::Ticks expected { // not perfect, but ok-ish { 0, "0.0e+00" }, { 9e+22, "9.0e+22" }, @@ -344,133 +344,133 @@ { 3.6e+23, "3.6e+23" }, { 4.5e+23, "4.5e+23" }, { 5.4e+23, "5.4e+23" }, - }; - compareTicks(ticks, expected); + }; + compareTicks(ticks, expected); } void linear_2_3_1() { - auto ticks = ScaleTickIntervals::linear({ 2, 3, 1 }); - ScaleTickIntervals::Ticks expected { - { 2.0, "2" }, - { 3.0, "3" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 2, 3, 1 }); + ScaleTickIntervals::Ticks expected { + { 2.0, "2" }, + { 3.0, "3" } + }; + compareTicks(ticks, expected); } void linear_2_3_2() { - auto ticks = ScaleTickIntervals::linear({ 2, 3, 2 }); - ScaleTickIntervals::Ticks expected { - { 2.0, "2.0" }, - { 2.5, "2.5" }, - { 3.0, "3.0" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 2, 3, 2 }); + ScaleTickIntervals::Ticks expected { + { 2.0, "2.0" }, + { 2.5, "2.5" }, + { 3.0, "3.0" } + }; + compareTicks(ticks, expected); } void linear_2_3_3() { - auto ticks = ScaleTickIntervals::linear({ 2, 3, 3 }); - ScaleTickIntervals::Ticks expected { - { 2.0, "2.0" }, - { 2.3, "2.3" }, - { 2.6, "2.6" }, - { 2.9, "2.9" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 2, 3, 3 }); + ScaleTickIntervals::Ticks expected { + { 2.0, "2.0" }, + { 2.3, "2.3" }, + { 2.6, "2.6" }, + { 2.9, "2.9" } + }; + compareTicks(ticks, expected); } void linear_2_3_4() { - auto ticks = ScaleTickIntervals::linear({ 2, 3, 4 }); + auto ticks = ScaleTickIntervals::linear({ 2, 3, 4 }); // This would be better in steps of 0.25, but we only round to // integral powers of ten - ScaleTickIntervals::Ticks expected { - { 2.0, "2.0" }, - { 2.3, "2.3" }, - { 2.6, "2.6" }, - { 2.9, "2.9" } - }; - compareTicks(ticks, expected); + ScaleTickIntervals::Ticks expected { + { 2.0, "2.0" }, + { 2.3, "2.3" }, + { 2.6, "2.6" }, + { 2.9, "2.9" } + }; + compareTicks(ticks, expected); } void linear_2_3_5() { - auto ticks = ScaleTickIntervals::linear({ 2, 3, 5 }); - ScaleTickIntervals::Ticks expected { - { 2.0, "2.0" }, - { 2.2, "2.2" }, - { 2.4, "2.4" }, - { 2.6, "2.6" }, - { 2.8, "2.8" }, - { 3.0, "3.0" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 2, 3, 5 }); + ScaleTickIntervals::Ticks expected { + { 2.0, "2.0" }, + { 2.2, "2.2" }, + { 2.4, "2.4" }, + { 2.6, "2.6" }, + { 2.8, "2.8" }, + { 3.0, "3.0" } + }; + compareTicks(ticks, expected); } void linear_2_3_6() { - auto ticks = ScaleTickIntervals::linear({ 2, 3, 6 }); - ScaleTickIntervals::Ticks expected { - { 2.0, "2.0" }, - { 2.2, "2.2" }, - { 2.4, "2.4" }, - { 2.6, "2.6" }, - { 2.8, "2.8" }, - { 3.0, "3.0" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 2, 3, 6 }); + ScaleTickIntervals::Ticks expected { + { 2.0, "2.0" }, + { 2.2, "2.2" }, + { 2.4, "2.4" }, + { 2.6, "2.6" }, + { 2.8, "2.8" }, + { 3.0, "3.0" } + }; + compareTicks(ticks, expected); } void linear_1_1_10() { // pathological range - auto ticks = ScaleTickIntervals::linear({ 1, 1, 10 }); - ScaleTickIntervals::Ticks expected { - { 1.0, "1" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 1, 1, 10 }); + ScaleTickIntervals::Ticks expected { + { 1.0, "1" } + }; + compareTicks(ticks, expected); } void linear_0_0_10() { // pathological range - auto ticks = ScaleTickIntervals::linear({ 0, 0, 10 }); - ScaleTickIntervals::Ticks expected { - { 0.0, "0" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 0, 0, 10 }); + ScaleTickIntervals::Ticks expected { + { 0.0, "0" } + }; + compareTicks(ticks, expected); } void linear_0_1_1() { - auto ticks = ScaleTickIntervals::linear({ 0, 1, 1 }); - ScaleTickIntervals::Ticks expected { - { 0.0, "0" }, - { 1.0, "1" } - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 0, 1, 1 }); + ScaleTickIntervals::Ticks expected { + { 0.0, "0" }, + { 1.0, "1" } + }; + compareTicks(ticks, expected); } void linear_0_1_0() { // senseless input - auto ticks = ScaleTickIntervals::linear({ 0, 1, 0 }); - ScaleTickIntervals::Ticks expected { - { 0.0, "0" }, - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 0, 1, 0 }); + ScaleTickIntervals::Ticks expected { + { 0.0, "0" }, + }; + compareTicks(ticks, expected); } void linear_0_1_m1() { // senseless input - auto ticks = ScaleTickIntervals::linear({ 0, 1, -1 }); - ScaleTickIntervals::Ticks expected { - { 0.0, "0" }, - }; - compareTicks(ticks, expected); + auto ticks = ScaleTickIntervals::linear({ 0, 1, -1 }); + ScaleTickIntervals::Ticks expected { + { 0.0, "0" }, + }; + compareTicks(ticks, expected); } void linear_0p465_778_10() @@ -496,28 +496,28 @@ void log_1_10_2() { auto ticks = ScaleTickIntervals::logarithmic({ 1, 10, 2 }); - ScaleTickIntervals::Ticks expected { + ScaleTickIntervals::Ticks expected { { 1.0, "1.0" }, { pow(10.0, 0.5), "3.2" }, { 10.0, "10.0" }, - }; - compareTicks(ticks, expected); + }; + compareTicks(ticks, expected); } void log_0_10_2() { auto ticks = ScaleTickIntervals::logarithmic({ 0, 10, 2 }); - ScaleTickIntervals::Ticks expected { + ScaleTickIntervals::Ticks expected { { 1e-6, "1e-06" }, { 1, "1" }, - }; - compareTicks(ticks, expected); + }; + compareTicks(ticks, expected); } void log_pi_avogadro_7() { - auto ticks = ScaleTickIntervals::logarithmic({ M_PI, 6.022140857e23, 7 }); - ScaleTickIntervals::Ticks expected { + auto ticks = ScaleTickIntervals::logarithmic({ M_PI, 6.022140857e23, 7 }); + ScaleTickIntervals::Ticks expected { { 1000, "1e+03" }, { 1e+06, "1e+06" }, { 1e+09, "1e+09" }, @@ -525,8 +525,8 @@ { 1e+15, "1e+15" }, { 1e+18, "1e+18" }, { 1e+21, "1e+21" }, - }; - compareTicks(ticks, expected, true); + }; + compareTicks(ticks, expected, true); } void log_0p465_778_10()