Be a lot smarter about whether this test passes: instead of assuming
authorGreg Ward <gward@python.net>
Sun, 23 Jul 2006 02:25:53 +0000 (02:25 +0000)
committerGreg Ward <gward@python.net>
Sun, 23 Jul 2006 02:25:53 +0000 (02:25 +0000)
that a 2.93 sec audio file will always take 3.1 sec (as it did on the
hardware I had when I first wrote the test), expect that it will take
2.93 sec +/- 10%, and only fail if it's outside of that range.
Compute the expected

Lib/test/output/test_ossaudiodev
Lib/test/test_ossaudiodev.py

index 9f55afa4cb3309ba49bc3f3f50a15354170a5ffc..f0df5d2f6a7e636a46b99cc5421f23d9328dc4ca 100644 (file)
@@ -1,3 +1,2 @@
 test_ossaudiodev
-playing test sound file...
-elapsed time: 3.1 sec
+playing test sound file (expected running time: 2.93 sec)
index 8810516e8db8df099de3328e5af2920976e62108..9f64406d1ec9dbed7166e94ff7b6ee5e7e1f607f 100644 (file)
@@ -69,14 +69,25 @@ def play_sound_file(data, rate, ssize, nchannels):
         except TypeError:
             pass
 
+    # Compute expected running time of sound sample (in seconds).
+    expected_time = float(len(data)) / (ssize/8) / nchannels / rate
+
     # set parameters based on .au file headers
     dsp.setparameters(AFMT_S16_NE, nchannels, rate)
+    print ("playing test sound file (expected running time: %.2f sec)"
+           % expected_time)
     t1 = time.time()
-    print "playing test sound file..."
     dsp.write(data)
     dsp.close()
     t2 = time.time()
-    print "elapsed time: %.1f sec" % (t2-t1)
+    elapsed_time = t2 - t1
+
+    percent_diff = (abs(elapsed_time - expected_time) / expected_time) * 100
+    #print ("actual running time was %.2f sec (%.1f%% difference)"
+    #       % (elapsed_time, percent_diff))
+    assert percent_diff <= 10.0, \
+           ("elapsed time (%.2f sec) > 10%% off of expected time (%.2f sec)"
+            % (elapsed_time, expected_time))
 
 def test_setparameters(dsp):
     # Two configurations for testing: