test-sndfile-metadata-set.py
上传用户:shw771010
上传日期:2022-01-05
资源大小:991k
文件大小:6k
源码类别:

Audio

开发平台:

Unix_Linux

  1. #!/usr/bin/python
  2. # Copyright (C) 2008 Erik de Castro Lopo <erikd@mega-nerd.com>
  3. #
  4. # All rights reserved.
  5. #
  6. # Redistribution and use in source and binary forms, with or without
  7. # modification, are permitted provided that the following conditions are
  8. # met:
  9. #
  10. #     * Redistributions of source code must retain the above copyright
  11. #       notice, this list of conditions and the following disclaimer.
  12. #     * Redistributions in binary form must reproduce the above copyright
  13. #       notice, this list of conditions and the following disclaimer in
  14. #       the documentation and/or other materials provided with the
  15. #       distribution.
  16. #     * Neither the author nor the names of any contributors may be used
  17. #       to endorse or promote products derived from this software without
  18. #       specific prior written permission.
  19. #
  20. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  21. # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
  22. # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  23. # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  24. # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  25. # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  26. # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  27. # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  28. # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  29. # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  30. # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  31. # Simple test script for the sndfile-metadata-set program.
  32. import commands, os, sys
  33. import time, datetime
  34. def print_test_name (name):
  35. print "    %-30s :" % name,
  36. def assert_info (filename, arg, value):
  37. cmd = "./sndfile-metadata-get %s %s" % (arg, filename)
  38. status, output = commands.getstatusoutput (cmd)
  39. if status:
  40. print "nnError : command '%s' should not have failed." % cmd
  41. sys.exit (1)
  42. if output.find (value) < 0:
  43. print "nnError : not able to find '%s'." % value
  44. print output
  45. sys.exit (1)
  46. return
  47. def check_executable (name):
  48. if not (os.path.isfile (name)):
  49. print "nnError : Can't find executable '%s'. Have you run make?" % name
  50. sys.exit (1)
  51. def test_empty_fail ():
  52. print_test_name ("Empty fail test")
  53. cmd = "./sndfile-metadata-set --bext-description Alpha sine.wav"
  54. status, output = commands.getstatusoutput (cmd)
  55. if not status:
  56. print "nnError : command '%s' should have failed." % cmd
  57. sys.exit (1)
  58. print "ok"
  59. def test_copy ():
  60. print_test_name ("Copy test")
  61. cmd = "./sndfile-metadata-set --bext-description "First Try" sine.wav output.wav"
  62. status, output = commands.getstatusoutput (cmd)
  63. if status:
  64. print "nnError : command '%s' should not have failed." % cmd
  65. sys.exit (1)
  66. assert_info ("output.wav", "--bext-description", "First Try")
  67. print "ok"
  68. def test_update (tests):
  69. print_test_name ("Update test")
  70. for arg, value in tests:
  71. cmd = "./sndfile-metadata-set %s "%s" output.wav" % (arg, value)
  72. status, output = commands.getstatusoutput (cmd)
  73. if status:
  74. print "nnError : command '%s' should not have failed." % cmd
  75. sys.exit (1)
  76. assert_info ("output.wav", arg, value)
  77. print "ok"
  78. def test_post_mod (tests):
  79. print_test_name ("Post mod test")
  80. for arg, value in tests:
  81. assert_info ("output.wav", arg, value)
  82. print "ok"
  83. def test_auto_date ():
  84. print_test_name ("Auto date test")
  85. cmd = "./sndfile-metadata-set --bext-auto-time-date sine.wav date-time.wav"
  86. status, output = commands.getstatusoutput (cmd)
  87. if status:
  88. print "nnError : command '%s' should not have failed." % cmd
  89. sys.exit (1)
  90. target = datetime.date.today ().__str__ ()
  91. assert_info ("date-time.wav", "--bext-orig-date", target)
  92. print "ok"
  93. #-------------------------------------------------------------------------------
  94. def test_coding_history ():
  95. print_test_name ("Coding history test")
  96. cmd = "./sndfile-metadata-set --bext-coding-hist "alpha beta" output.wav"
  97. status, output = commands.getstatusoutput (cmd)
  98. if status:
  99. print "nnError : command '%s' should not have failed." % cmd
  100. sys.exit (1)
  101. cmd = "./sndfile-metadata-get --bext-coding-hist output.wav"
  102. status, output = commands.getstatusoutput (cmd)
  103. if status:
  104. print "nnError : command '%s' should not have failed." % cmd
  105. sys.exit (1)
  106. print "ok"
  107. #-------------------------------------------------------------------------------
  108. def test_rewrite ():
  109. print_test_name ("Rewrite test")
  110. cmd = "./sndfile-metadata-set --bext-originator "Really, really long string" output.wav"
  111. status, output = commands.getstatusoutput (cmd)
  112. if status:
  113. print "nnError : command '%s' should not have failed." % cmd
  114. sys.exit (1)
  115. cmd = "./sndfile-metadata-set --bext-originator "Short" output.wav"
  116. status, output = commands.getstatusoutput (cmd)
  117. if status:
  118. print "nnError : command '%s' should not have failed." % cmd
  119. sys.exit (1)
  120. cmd = "./sndfile-metadata-get --bext-originator output.wav"
  121. status, output = commands.getstatusoutput (cmd)
  122. if status:
  123. print "nnError : command '%s' should not have failed." % cmd
  124. sys.exit (1)
  125. if output.find ("really long") > 0:
  126. print "nnError : output '%s' should not contain 'really long'." % output
  127. sys.exit (1)
  128. print "ok"
  129. #===============================================================================
  130. test_dir = "programs"
  131. if os.path.isdir (test_dir):
  132. os.chdir (test_dir)
  133. for f in [ "sndfile-metadata-set", "sndfile-metadata-get", "../examples/make_sine" ]:
  134. check_executable (f)
  135. os.system ("../examples/make_sine")
  136. if not os.path.isfile ("sine.wav"):
  137. print "nnError : Can't file file 'sine.wav'."
  138. sys.exit (1)
  139. print ""
  140. test_empty_fail ()
  141. test_copy ()
  142. tests = [
  143. ("--bext-description", "Alpha"), ("--bext-originator", "Beta"), ("--bext-orig-ref", "Charlie"),
  144. ("--bext-umid", "Delta"), ("--bext-orig-date", "2001-10-01"),  ("--bext-orig-time", "01:02:03"),
  145. ("--str-title", "Echo"), ("--str-artist", "Fox trot")
  146. ]
  147. test_auto_date ()
  148. test_update (tests)
  149. test_post_mod (tests)
  150. test_update ([ ("--str-artist", "Fox") ])
  151. # This never worked.
  152. # test_coding_history ()
  153. test_rewrite ()
  154. print ""
  155. sys.exit (0)