+ // test_samplerate(UINT64_C(18446744073709551615), "18446744073.709551615 GHz");
+ // test_samplerate(SR_GHZ(UINT64_C(18446744073)), "18446744073 GHz");
+}
+END_TEST
+
+START_TEST(test_hz_period)
+{
+ test_period(1, 1, "1 s");
+ test_period(1, 5, "200 ms");
+ test_period(1, 72, "13.889 ms");
+ test_period(1, 388, "2.577 ms");
+ test_period(10, 1000, "10 ms");
+
+ /* Again, but now using SR_HZ(). */
+ test_period(1, SR_HZ(1), "1 s");
+ test_period(1, SR_HZ(5), "200 ms");
+ test_period(1, SR_HZ(72), "13.889 ms");
+ test_period(1, SR_HZ(388), "2.577 ms");
+ test_period(10, SR_HZ(100), "100 ms");
+}
+END_TEST
+
+START_TEST(test_ghz_period)
+{
+ test_period(1, UINT64_C(1000000000), "1 ns");
+ test_period(1, UINT64_C(5000000000), "200 ps");
+ test_period(1, UINT64_C(72000000000), "13.889 ps");
+ test_period(1, UINT64_C(388000000000), "2.577 ps");
+ test_period(10, UINT64_C(1000000000000), "10 ps");
+ test_period(200, UINT64_C(1000000000000), "200 ps");
+
+ /* Again, but now using SR_GHZ(). */
+ test_period(1, SR_GHZ(1), "1 ns");
+ test_period(1, SR_GHZ(5), "200 ps");
+ test_period(1, SR_GHZ(72), "13.889 ps");
+ test_period(1, SR_GHZ(388), "2.577 ps");
+ test_period(10, SR_GHZ(1), "10 ns");
+ test_period(200, SR_GHZ(1000), "200 ps");
+}
+END_TEST
+
+START_TEST(test_volt)
+{
+ test_voltage(34, 1, "34 V");
+ test_voltage(34, 2, "17 V");
+ test_voltage(1, 1, "1 V");
+ test_voltage(1, 5, "0.2 V");
+ test_voltage(200, 1000, "200 mV");
+ test_voltage(1, 72, "0.0138889 V");
+ test_voltage(1, 388, "0.00257732 V");
+ test_voltage(10, 1000, "10 mV");
+}
+END_TEST
+
+START_TEST(test_integral)
+{
+ test_rational("1", (struct sr_rational){1, 1});
+ test_rational("2", (struct sr_rational){2, 1});
+ test_rational("10", (struct sr_rational){10, 1});
+ test_rational("-255", (struct sr_rational){-255, 1});
+}
+END_TEST
+
+START_TEST(test_fractional)
+{
+ test_rational("0.1", (struct sr_rational){1, 10});
+ test_rational("1.0", (struct sr_rational){10, 10});
+ test_rational("1.2", (struct sr_rational){12, 10});
+ test_rational("12.34", (struct sr_rational){1234, 100});
+ test_rational("-12.34", (struct sr_rational){-1234, 100});
+ test_rational("10.00", (struct sr_rational){1000, 100});
+ test_rational(".1", (struct sr_rational){1, 10});
+ test_rational("+0.1", (struct sr_rational){1, 10});
+ test_rational("+.1", (struct sr_rational){1, 10});
+ test_rational("-0.1", (struct sr_rational){-1, 10});
+ test_rational("-.1", (struct sr_rational){-1, 10});
+ test_rational(".1", (struct sr_rational){1, 10});
+ test_rational(".123", (struct sr_rational){123, 1000});
+ test_rational("1.", (struct sr_rational){1, 1});
+ test_rational("123.", (struct sr_rational){123, 1});
+ test_rational("-.1", (struct sr_rational){-1, 10});
+ test_rational(" .1", (struct sr_rational){1, 10});
+ test_rational("+.1", (struct sr_rational){1, 10});
+ test_rational_fail(".");
+ test_rational_fail(".e");
+ test_rational_fail(".e1");
+}
+END_TEST
+
+START_TEST(test_exponent)
+{
+ test_rational("1e0", (struct sr_rational){1, 1});
+ test_rational("1E0", (struct sr_rational){1, 1});
+ test_rational("1E1", (struct sr_rational){10, 1});
+ test_rational("1e-1", (struct sr_rational){1, 10});
+ test_rational("-1.234e-0", (struct sr_rational){-1234, 1000});
+ test_rational("-1.234e3", (struct sr_rational){-1234, 1});
+ test_rational("-1.234e-3", (struct sr_rational){-1234, 1000000});
+ test_rational("0.001e3", (struct sr_rational){1, 1});
+ test_rational("0.001e0", (struct sr_rational){1, 1000});
+ test_rational("0.001e-3", (struct sr_rational){1, 1000000});
+ test_rational("43.737E-3", (struct sr_rational){43737, 1000000});
+ test_rational("-0.1e-2", (struct sr_rational){-1, 1000});
+ test_rational("-.1e-2", (struct sr_rational){-1, 1000});
+ test_rational("-.0e-2", (struct sr_rational){0, 1000});
+ test_rational("+.0e-2", (struct sr_rational){0, 1000});