Mercurial > hg > pulseaudio
changeset 81:543d5b1cef67
2008-08-15 Omair Majid <omajid@redhat.com>
* src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLine.java:
fixed support for LineListeners
* unittests/org/classpath/icedtea/pulseaudio/PulseAudioClipTest.java:
added a test that attempts to open() a clip and fails
* unittests/org/classpath/icedtea/pulseaudio/PulseAudioMixerTest.java:
marked testSourceLinesOpenAndClose() to be ignored for now
* unittests/org/classpath/icedtea/pulseaudio/PulseAudioTargetDatLineTest.java:
new file. a few tests for PulseAudioTargetDataLine
author | Omair Majid <omajid@redhat.com> |
---|---|
date | Fri, 15 Aug 2008 15:46:53 -0400 |
parents | 6462973e76b1 |
children | 10aa02b5a832 d3ed87d80d16 |
files | src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLine.java unittests/org/classpath/icedtea/pulseaudio/PulseAudioClipTest.java unittests/org/classpath/icedtea/pulseaudio/PulseAudioMixerTest.java unittests/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLineTest.java |
diffstat | 4 files changed, 122 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLine.java Fri Aug 15 15:19:43 2008 -0400 +++ b/src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLine.java Fri Aug 15 15:46:53 2008 -0400 @@ -62,7 +62,7 @@ private AudioFormat currentFormat = null; private AudioFormat defaultFormat = null; - private List<LineListener> lineListeners; + private List<LineListener> lineListeners = new LinkedList<LineListener>(); private List<StreamListener> streamListeners = new ArrayList<StreamListener>(); @@ -72,8 +72,6 @@ private EventLoop eventLoop = null; - protected ArrayList<LineListener> listeners; - private Semaphore semaphore = new Semaphore(0); @SuppressWarnings("unused") @@ -274,11 +272,11 @@ } public void addLineListener(LineListener listener) { - listeners.add(listener); + lineListeners.add(listener); } public void removeLineListener(LineListener listener) { - listeners.remove(listener); + lineListeners.remove(listener); } public boolean isOpen() {
--- a/unittests/org/classpath/icedtea/pulseaudio/PulseAudioClipTest.java Fri Aug 15 15:19:43 2008 -0400 +++ b/unittests/org/classpath/icedtea/pulseaudio/PulseAudioClipTest.java Fri Aug 15 15:46:53 2008 -0400 @@ -47,6 +47,7 @@ import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.Mixer; import javax.sound.sampled.UnsupportedAudioFileException; +import javax.sound.sampled.DataLine.Info; import junit.framework.JUnit4TestAdapter; @@ -113,6 +114,13 @@ } + @Test (expected=IllegalArgumentException.class) + public void testOpenWrongUse() throws LineUnavailableException { + Clip clip = (Clip) mixer.getLine(new Line.Info(Clip.class)); + clip.open(); + + } + @After public void tearDown() {
--- a/unittests/org/classpath/icedtea/pulseaudio/PulseAudioMixerTest.java Fri Aug 15 15:19:43 2008 -0400 +++ b/unittests/org/classpath/icedtea/pulseaudio/PulseAudioMixerTest.java Fri Aug 15 15:46:53 2008 -0400 @@ -54,6 +54,7 @@ import org.junit.After; import org.junit.Assert; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; public class PulseAudioMixerTest { @@ -169,7 +170,7 @@ selectedMixer.close(); } - @Test + @Test @Ignore public void testSourceLinesOpenAndClose() throws LineUnavailableException { System.out.println("This test checks if source lines open and close"); selectedMixer.open();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/unittests/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLineTest.java Fri Aug 15 15:46:53 2008 -0400 @@ -0,0 +1,109 @@ +package org.classpath.icedtea.pulseaudio; + +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.Line; +import javax.sound.sampled.LineEvent; +import javax.sound.sampled.LineListener; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.Mixer; +import javax.sound.sampled.TargetDataLine; + +import junit.framework.JUnit4TestAdapter; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +public class PulseAudioTargetDataLineTest { + + public static junit.framework.Test suite() { + return new JUnit4TestAdapter(PulseAudioTargetDataLineTest.class); + } + + private Mixer mixer; + private TargetDataLine targetDataLine; + + @Before + public void setUp() throws LineUnavailableException { + Mixer.Info[] mixerInfos = AudioSystem.getMixerInfo(); + Mixer.Info wantedMixerInfo = null; + for (Mixer.Info mixerInfo : mixerInfos) { + if (mixerInfo.getName().contains("PulseAudio")) { + wantedMixerInfo = mixerInfo; + } + } + Assert.assertNotNull(wantedMixerInfo); + mixer = AudioSystem.getMixer(wantedMixerInfo); + Assert.assertNotNull(mixer); + mixer.open(); + + } + + @Test + public void testOpenClose() throws LineUnavailableException { + targetDataLine = (TargetDataLine) mixer.getLine(new Line.Info( + TargetDataLine.class)); + Assert.assertNotNull(targetDataLine); + targetDataLine.open(); + targetDataLine.close(); + } + + @Test + public void testOpenEvents() throws LineUnavailableException { + targetDataLine = (TargetDataLine) mixer.getLine(new Line.Info( + TargetDataLine.class)); + Assert.assertNotNull(targetDataLine); + + LineListener openListener = new LineListener() { + private int calledCount = 0; + + @Override + public void update(LineEvent event) { + Assert.assertEquals(LineEvent.Type.OPEN, event.getType()); + calledCount++; + Assert.assertEquals(1, calledCount); + } + + }; + + targetDataLine.addLineListener(openListener); + targetDataLine.open(); + targetDataLine.removeLineListener(openListener); + targetDataLine.close(); + + } + + @Test + public void testCloseEvents() throws LineUnavailableException { + targetDataLine = (TargetDataLine) mixer.getLine(new Line.Info( + TargetDataLine.class)); + Assert.assertNotNull(targetDataLine); + + LineListener closeListener = new LineListener() { + private int calledCount = 0; + + @Override + public void update(LineEvent event) { + Assert.assertEquals(LineEvent.Type.CLOSE, event.getType()); + calledCount++; + Assert.assertEquals(1, calledCount); + } + + }; + + + targetDataLine.open(); + targetDataLine.addLineListener(closeListener); + targetDataLine.close(); + targetDataLine.removeLineListener(closeListener); + + } + + + @After + public void tearDown() { + mixer.close(); + } + +}