-(* Rudimentary testing of the Ocaml libsndfile wrapper. *)
-
-let write_test filename =
- let fmt = Sndfile.format Sndfile.MAJOR_WAV Sndfile.MINOR_PCM_16 in
- let file = Sndfile.openfile ~info:(Sndfile.WRITE, fmt, 2, 44100) filename in
- let writecount = Sndfile.write file [| 0.0 ; 0.0 ; 0.0 ; 0.0 ; 0.0 ; 0.0 ; 0.0 ; 0.5 |] in
- Printf.printf "Wrote %d items.\n" writecount ;
- Sndfile.close file
-
-let read_test filename =
- let file = Sndfile.openfile filename in
- Printf.printf "File contains %Ld frames.\n" (Sndfile.frames file) ;
- let data = Array.create 100 0.0 in
- let readcount = Sndfile.read file data in
- Printf.printf "Read %d items.\n" readcount ;
- Sndfile.close file
-
-let finalize_test filename =
- let sub_open_file =
- let file = Sndfile.openfile filename in
- ignore file
- in
- (* Compact the heap. *)
- Gc.compact () ;
- let pre_stat = Gc.stat () in
- sub_open_file ;
- (* Compact the heap again. *)
- Gc.compact () ;
- (* Compare before and after. *)
- let post_stat = Gc.stat () in
- if pre_stat.Gc.heap_words != post_stat.Gc.heap_words then
- ( Printf.printf "\nFinalize not working : before %d -> after %d\n\n" pre_stat.Gc.heap_words post_stat.Gc.heap_words ;
- exit 1
- )
- else ()
-
-let bad_read_test filename =
- try
- let file = Sndfile.openfile filename in
- ignore file ;
- print_endline "Ooops, this should have failed." ;
- exit 1
- with
- Sndfile.Error (e, s) ->
- if s = "System error." then () else
- ( Printf.printf "Bad error '%s'\n" s ;
- exit 1
- )
-
-
-let _ =
- print_endline "------------------------" ;
- let filename = "a.wav" in
- write_test filename ;
- read_test filename ;
- finalize_test filename ;
- bad_read_test "this_file_does_not_exist.wav" ;
- print_endline "Done : All passed."
-