1 /*
2  * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.
8  *
9  * This code is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12  * version 2 for more details (a copy is included in the LICENSE file that
13  * accompanied this code).
14  *
15  * You should have received a copy of the GNU General Public License version
16  * 2 along with this work; if not, write to the Free Software Foundation,
17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18  *
19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20  * or visit www.oracle.com if you need additional information or have any
21  * questions.
22  */
23 
24 /* @test
25    @summary Test ModelByteBuffer getInputStream method
26    @modules java.desktop/com.sun.media.sound
27 */
28 
29 import java.io.File;
30 import java.io.FileOutputStream;
31 import java.io.InputStream;
32 import java.nio.file.Files;
33 import java.nio.file.Paths;
34 
35 import javax.sound.sampled.*;
36 
37 import com.sun.media.sound.*;
38 
39 public class GetInputStream {
40 
41     static float[] testarray;
42     static byte[] test_byte_array;
43     static File test_file;
44     static AudioFormat format = new AudioFormat(44100, 16, 1, true, false);
45 
setUp()46     static void setUp() throws Exception {
47         testarray = new float[1024];
48         for (int i = 0; i < 1024; i++) {
49             double ii = i / 1024.0;
50             ii = ii * ii;
51             testarray[i] = (float)Math.sin(10*ii*2*Math.PI);
52             testarray[i] += (float)Math.sin(1.731 + 2*ii*2*Math.PI);
53             testarray[i] += (float)Math.sin(0.231 + 6.3*ii*2*Math.PI);
54             testarray[i] *= 0.3;
55         }
56         test_byte_array = new byte[testarray.length*2];
57         AudioFloatConverter.getConverter(format).toByteArray(testarray, test_byte_array);
58         test_file = File.createTempFile("test", ".raw");
59         try (FileOutputStream fos = new FileOutputStream(test_file)) {
60             fos.write(test_byte_array);
61         }
62     }
63 
tearDown()64     static void tearDown() throws Exception {
65         Files.delete(Paths.get(test_file.getAbsolutePath()));
66     }
67 
main(String[] args)68     public static void main(String[] args) throws Exception {
69         try
70         {
71             setUp();
72 
73             for (int i = 0; i < 2; i++) {
74                 ModelByteBuffer buff;
75                 if(i == 0)
76                     buff = new ModelByteBuffer(test_file);
77                 else
78                     buff = new ModelByteBuffer(test_byte_array);
79 
80                 byte[] b = new byte[test_byte_array.length];
81                 try (InputStream is = buff.getInputStream()) {
82                     is.read(b);
83                 }
84                 for (int j = 0; j < b.length; j++)
85                     if(b[i] != test_byte_array[i])
86                          throw new RuntimeException("Byte array compare fails!");
87             }
88         }
89         finally
90         {
91             tearDown();
92         }
93     }
94 
95 }
96