Add native QCustomPlot renderer and shared plot adapters
This commit is contained in:
@@ -30,6 +30,26 @@ class SpectrumTests(unittest.TestCase):
|
||||
times = [i / fs for i in range(n)]
|
||||
return times, [amplitude * sum(math.sin(2 * math.pi * f * t) for f in frequencies) for t in times]
|
||||
|
||||
def test_large_fft_above_previous_limit(self):
|
||||
times, values = self.sample(n=65536, fs=65536, frequencies=(50,))
|
||||
spectrum = self.core.analyze(times, values, max_size=65536)
|
||||
self.assertEqual(spectrum.size, 65536)
|
||||
self.assertAlmostEqual(self.core.dominant_peak(spectrum).frequency_hz, 50., delta=.01)
|
||||
self.assertEqual(self.core.analyze(times[:1024], values[:1024], max_size=2097152).size, 1024)
|
||||
|
||||
def test_full_record_resolves_50_hz_at_high_sample_rate(self):
|
||||
times, values = self.sample(n=50000, fs=500000, frequencies=(50,), amplitude=.02)
|
||||
spectrum = self.core.analyze(times, values, max_size=4096, full_record=True)
|
||||
peak = self.core.dominant_peak(spectrum)
|
||||
self.assertAlmostEqual(spectrum.sample_rate / spectrum.size, 10., places=5)
|
||||
self.assertAlmostEqual(peak.frequency_hz, 50., delta=.2)
|
||||
self.assertAlmostEqual(peak.amplitude, .02, delta=.0002)
|
||||
self.assertEqual(len(times), 50000)
|
||||
broken = list(times)
|
||||
broken[100] = broken[99]
|
||||
with self.assertRaises(ValueError):
|
||||
self.core.analyze(broken, values, full_record=True)
|
||||
|
||||
def test_fft_matches_independent_direct_dft(self):
|
||||
times, _ = self.sample(32)
|
||||
values = [math.sin(i * 1.37) + 0.1 * i for i in range(32)]
|
||||
@@ -120,7 +140,7 @@ class SpectrumTests(unittest.TestCase):
|
||||
for n in (0, 1, 15):
|
||||
with self.assertRaisesRegex(ValueError, "16 samples"):
|
||||
self.core.analyze(times[:n], values[:n])
|
||||
for size in (0, 15, 1000, 32768):
|
||||
for size in (0, 15, 1000, 4194304):
|
||||
with self.assertRaises(ValueError):
|
||||
self.core.analyze(times, values, max_size=size)
|
||||
with self.assertRaises(ValueError):
|
||||
|
||||
Reference in New Issue
Block a user