Hi Leutz,
Habe folgendes Problem, ich muss für die uni einen Mediaplayer Programmieren
es ist das Letzte testat. Drei tests laufen schon aber drei halt auch nicht.
Der test ButtonLayout,Buttons und testConstructor funktionieren nicht.
die fehlermeldung lautet:
java.lang.RuntimeException: java.lang.RuntimeException: Unknown suffix for AudioFile: " "
Hier mein Quellcode:
[JAVA=42]package studiplayer.ui;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;
import studiplayer.audio.AudioFile;
import studiplayer.audio.NotPlayableException;
import studiplayer.audio.PlayList;
@SuppressWarnings("serial")
public class Player extends JFrame implements ActionListener {
private PlayList playList = null;
public static String DEFAULT_PLAYLIST = "playlists/DefaultPlayList.m3u";
private final String initTime = "00:00";
private final String preTitle = "Current song: ";
private JLabel songDescription = new JLabel();
private JLabel playTime = new JLabel();
private JButton bplay = new JButton(new ImageIcon("icons/play.png"));
private JButton bpause = new JButton(new ImageIcon("icons/pause.png"));
private JButton bstop = new JButton(new ImageIcon("icons/stop.png"));
private volatile boolean stopped = true;
private PlayListEditor playListEditor;
private boolean editorVisible;
public void setEnabled(boolean b) {
if(b ==true){
bplay.setEnabled(true);
bpause.setEnabled(true);
bstop.setEnabled(true);
}
if(b==false){
bplay.setEnabled(false);
bpause.setEnabled(false);
bstop.setEnabled(false);
}
}
public Player(PlayList pl) {
playList = pl;
playListEditor = new PlayListEditor(this, this.playList);
editorVisible = false;
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
setTitle("Studiplayer: empty play list");
if (!playList.isEmpty()) {
setTitle(preTitle + playList.getCurrentAudioFile().toString());
}
JPanel buttons = new JPanel();
bplay.setActionCommand("AC_PLAY");
bplay.addActionListener(this);
buttons.add(bplay);
bpause.setActionCommand("AC_PAUSE");
bpause.addActionListener(this);
buttons.add(bpause);
bstop.setActionCommand("AC_STOP");
bstop.addActionListener(this);
buttons.add(bstop);
JButton bnext = new JButton(new ImageIcon("icons/next.png"));
bnext.setActionCommand("AC_NEXT");
bnext.addActionListener(this);
buttons.add(bnext);
JButton bpl = new JButton(new ImageIcon("icons/pl_editor.png"));
bpl.setActionCommand("AC_LIST");
bpl.addActionListener(this);
buttons.add(bpl);
add(buttons, BorderLayout.CENTER);
add(buttons, BorderLayout.CENTER);
bnext.setEnabled(true);
bpl.setEnabled(true);
add(songDescription, BorderLayout.NORTH);
add(playTime, BorderLayout.WEST);
updateSongInfo(playList.getCurrentAudioFile());
pack();
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
AudioFile af;
String cmd = e.getActionCommand();
if(cmd.equals("AC_PLAY")){
playCurrentSong();
af = playList.getCurrentAudioFile();
System.out.println("Playing"+af.toString());
System.out.println("Filename is"+af.getFilename());
System.out.println("Current index is" + playList.getCurrent());
}else if(cmd.equals("AC_PAUSE")){
stopCurrentSong();
af = playList.getCurrentAudioFile();
System.out.println("Playing"+af.toString());
System.out.println("Filename is"+af.getFilename());
System.out.println("Current index is" + playList.getCurrent());
}else if(cmd.equals("AC_STOP")){
stopCurrentSong();
System.out.println("");
af = playList.getCurrentAudioFile();
System.out.println("Playing"+af.toString());
System.out.println("Filename is"+af.getFilename());
System.out.println("Current index is" + playList.getCurrent());
}else if(cmd.equals("AC_NEXT")){
af = playList.getCurrentAudioFile();
System.out.println("Playing"+af.toString());
System.out.println("Filename is"+af.getFilename());
System.out.println("Current index is" + playList.getCurrent());
System.out.println("Switching to next audio file");
if(!stopped){
stopCurrentSong();
}
playList.changeCurrent();
playCurrentSong();
af = playList.getCurrentAudioFile();
if(af !=null){
System.out.println("Switched to next audio file");
}else{
System.out.println("PlayList is empty");
}
System.out.println("");
}else if(cmd.equals("AC_PL")){
af = playList.getCurrentAudioFile();
System.out.println("Playing"+af.toString());
System.out.println("Filename is"+af.getFilename());
System.out.println("Current index is" + playList.getCurrent());
}else if(cmd.equals("AC_EDITOR"));
if(editorVisible){
editorVisible =false;
}else{
editorVisible=true;
}
playListEditor.setVisible(editorVisible);
}
private void updateSongInfo(AudioFile af) {
if (af != null) {
setTitle(preTitle + af.toString());
songDescription.setText(af.toString());
playTime.setText(initTime);
} else {
setTitle("Studiplayer: empty play list");
songDescription.setText("no current song");
playTime.setText("--:--");
}
}
private void playCurrentSong() {
updateSongInfo(playList.getCurrentAudioFile());
System.out.println("Playing: "
+ playList.getCurrentAudioFile().toString());
System.out.println("Filename: "
+ playList.getCurrentAudioFile().getFilename());
System.out.println("Index: " + playList.getCurrent());
System.out.println("");
stopped = false;
if (playList.getCurrentAudioFile() != null) {
(new TimerThread()).start();
(new PlayerThread()).start();
}
}
private void stopCurrentSong() {
System.out.println("Stopped: "
+ playList.getCurrentAudioFile().toString());
System.out.println("Filename: "
+ playList.getCurrentAudioFile().getFilename());
System.out.println("Index: " + playList.getCurrent());
System.out.println("");
stopped = true;
playList.getCurrentAudioFile().stop();
updateSongInfo(playList.getCurrentAudioFile());
}
private class TimerThread extends Thread {
public void run() {
while (!stopped && !playList.isEmpty()) {
playTime.setText(playList.getCurrentAudioFile()
.getFormattedPosition());
try {
sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
private class PlayerThread extends Thread {
public void run() {
while (!stopped && !playList.isEmpty()) {
try {
playList.getCurrentAudioFile().play();
} catch (NotPlayableException e) {
e.printStackTrace();
}
if (!stopped) {
playList.changeCurrent();
updateSongInfo(playList.getCurrentAudioFile());
}
}
}
}
public static void main(String[] pathname) {
PlayList pl = new PlayList();
if (pathname.length == 1) {
try {
pl.loadFromM3U(pathname[0]);
} catch (Exception e) {
e.printStackTrace();
}
} else {
try {
pl.loadFromM3U(DEFAULT_PLAYLIST);
} catch (Exception e) {
e.printStackTrace();
}
}
new Player(pl);
}
}
[/code]
Könnt ihr mir helfen?
Der Test ist dieser hier:
[JAVA=42] public void testButtons() {
// Now, start testing
String eventSequence = "Aktionen: <start>";
Player player = null;
PlayList pl = new PlayList("playlists/playList2.m3u");
player = new Player(pl);
HashMap<String, JButton> buttonList = fillButtonList(player);
JButton play = buttonList.get(PLAY);
JButton pause = buttonList.get(PAUSE);
JButton stop = buttonList.get(STOP);
JButton next = buttonList.get(NEXT);
assertTrue(eventSequence + " Play nicht aktiviert", play.isEnabled());
assertFalse(eventSequence + " Pause aktiviert", pause.isEnabled());
assertFalse(eventSequence + " Stop aktiviert", stop.isEnabled());
assertTrue(eventSequence + " Next nicht aktiviert", next.isEnabled());
// Press Start
eventSequence += "<play1>";
player.actionPerformed(new ActionEvent(player, 0, play
.getActionCommand()));
assertFalse(eventSequence + " Play aktiviert", play.isEnabled());
assertTrue(eventSequence + " Pause nicht aktiviert", pause.isEnabled());
assertTrue(eventSequence + " Stop nicht aktiviert", stop.isEnabled());
assertTrue(eventSequence + " Next nicht aktiviert", next.isEnabled());
// Press Pause
mySleep(1000L);
eventSequence += "<pause>";
player.actionPerformed(new ActionEvent(player, 0, pause
.getActionCommand()));
assertFalse(eventSequence + " Play aktiviert", play.isEnabled());
assertTrue(eventSequence + " Pause nicht aktiviert", pause.isEnabled());
assertTrue(eventSequence + " Stop nicht aktiviert", stop.isEnabled());
assertTrue(eventSequence + " Next nicht aktiviert", next.isEnabled());
// Press play again (nothing should happen)
mySleep(1000L);
eventSequence += "<play2>";
player.actionPerformed(new ActionEvent(player, 0, play
.getActionCommand()));
assertFalse(eventSequence + " Play aktiviert", play.isEnabled());
assertTrue(eventSequence + " Pause nicht aktiviert", pause.isEnabled());
assertTrue(eventSequence + " Stop nicht aktiviert", stop.isEnabled());
assertTrue(eventSequence + " Next nicht aktiviert", next.isEnabled());
// Press Stop
mySleep(1000L);
eventSequence += "<stop1>";
player.actionPerformed(new ActionEvent(player, 0, stop
.getActionCommand()));
mySleep(1000L);
assertTrue(eventSequence + " Play nicht aktiviert", play.isEnabled());
assertFalse(eventSequence + " Pause aktiviert", pause.isEnabled());
assertFalse(eventSequence + " Stop aktiviert", stop.isEnabled());
assertTrue(eventSequence + " Next nicht aktiviert", next.isEnabled());
// Here, we are stopped
try {
Field fieldPlayTime = clazz.getDeclaredField("playTime");
fieldPlayTime.setAccessible(true);
JLabel ptime = (JLabel) fieldPlayTime.get(player);
assertEquals(eventSequence + " Stop setzt playTime nicht zurueck",
"00:00", ptime.getText());
Field fieldPlaylist = clazz.getDeclaredField("playList");
fieldPlaylist.setAccessible(true);
pl = (PlayList) fieldPlaylist.get(player);
AudioFile currentSong = pl.getCurrentAudioFile();
assertNotNull(eventSequence + " currentSong nicht gesetzt",
currentSong);
/* too fragile
assertEquals(eventSequence + " currentSong falsch",
"Wellenmeister - " + "TANOM Part I: Awakening - "
+ "TheAbsoluteNecessityOfMeaning - 05:55",
currentSong.toString());
*/
} catch (NoSuchFieldException e) {
fail("Attribut existiert nicht " + e);
} catch (IllegalAccessException e) {
fail(e.toString());
}
// Press Next and start playing
mySleep(1000L);
eventSequence += "<next1>";
player.actionPerformed(new ActionEvent(player, 0, next
.getActionCommand()));
// Press Play (nothing should happen)
mySleep(1000L);
eventSequence += "<play3>";
player.actionPerformed(new ActionEvent(player, 0, play
.getActionCommand()));
// Next (this changes the song)
mySleep(1000L);
eventSequence += "<next2>";
player.actionPerformed(new ActionEvent(player, 0, next
.getActionCommand()));
mySleep(1000L);
try {
Field fieldPlaylist = clazz.getDeclaredField("playList");
fieldPlaylist.setAccessible(true);
pl = (PlayList) fieldPlaylist.get(player);
AudioFile currentSong = pl.getCurrentAudioFile();
Field fieldPlayTime = clazz.getDeclaredField("playTime");
fieldPlayTime.setAccessible(true);
JLabel playTime = (JLabel) fieldPlayTime.get(player);
assertNotNull(eventSequence + " currentSong nicht gesetzt",
currentSong);
/* too fragile
assertEquals(eventSequence + " currentSong falsch",
"wellenmeister - tranquility - 02:21",
currentSong.toString());
*/
String pos1 = playTime.getText();
mySleep(2000L);
String pos2 = playTime.getText();
// Press stop
eventSequence += "<stop2>";
player.actionPerformed(new ActionEvent(player, 0, stop
.getActionCommand()));
mySleep(2000L);
assertTrue(eventSequence + " Abspielzeit nicht aktualisiert",
pos1.compareTo(pos2) < 0);
} catch (NoSuchFieldException e) {
fail("Attribut existiert nicht " + e);
} catch (IllegalAccessException e) {
fail(e.toString());
}
studiplayer.basic.BasicPlayer.stop();
player.dispose();
}
public void testButtonLayout() {
Player player = null;
PlayList pl = new PlayList("playlists/playList2.m3u");
player = new Player(pl);
HashMap<String, JButton> buttonList = fillButtonList(player);
assertEquals("Anzahl Buttons falsch", 5, buttonList.size());
String cmdString = "@";
for (Map.Entry<String, JButton> entry : buttonList.entrySet()) {
JButton button = entry.getValue();
String cmd = button.getActionCommand();
assertFalse("Kein Action Command gesetzt", "".equals(cmd));
assertTrue("Zweimal gleiches Action Command",
cmdString.indexOf("@" + cmd + "@") < 0);
cmdString += cmd + "@";
}
assertNotNull("Kein Button fuer Abspielen", buttonList.get(PLAY));
assertNotNull("Kein Button fuer Pausieren", buttonList.get(PAUSE));
assertNotNull("Kein Button fuer Anhalten", buttonList.get(STOP));
assertNotNull("Kein Button fuer Ueberspringen", buttonList.get(NEXT));
assertNotNull("Kein Button fuer PlayList-Editor",
buttonList.get(EDITOR));
assertNull("Fehlendes oder falsches Icon zu Button",
buttonList.get(UNKNOWN));
player.dispose();
}
public void testConstructor() {
try {
Player player = new Player(new PlayList());
Field fieldPlayList = clazz.getDeclaredField("playList");
fieldPlayList.setAccessible(true);
PlayList pl1 = (PlayList) fieldPlayList.get(player);
assertEquals("PlayList nicht-leer", 0, pl1.size());
player.dispose();
} catch (NoSuchFieldException e) {
fail("Kein playList-Attribut");
} catch (IllegalAccessException e) {
fail(e.toString());
}
try {
PlayList pl = new PlayList("playlists/playList2.m3u");
Player player = new Player(pl);
Field fieldPlayList = clazz.getDeclaredField("playList");
fieldPlayList.setAccessible(true);
PlayList pl2 = (PlayList) fieldPlayList.get(player);
assertEquals("Anzahl Lieder in PlayList", 8, pl2.size());
Field fieldPlayListEditor = clazz
.getDeclaredField("playListEditor");
fieldPlayListEditor.setAccessible(true);
PlayListEditor ple = (PlayListEditor) fieldPlayListEditor
.get(player);
assertNotNull("PlayListEditor nicht erzeugt", ple);
AudioFile currentSong = pl2.getCurrentAudioFile();
assertNotNull("currentSong nicht gesetzt", currentSong);
assertEquals("currentSong falsch", "Wellenmeister - "
+ "TANOM Part I: Awakening - "
+ "TheAbsoluteNecessityOfMeaning - 05:55",
currentSong.toString());
Field fieldSongDescription = clazz
.getDeclaredField("songDescription");
fieldSongDescription.setAccessible(true);
JLabel songDescription = (JLabel) fieldSongDescription.get(player);
assertEquals("songDescription falsch", currentSong.toString(),
songDescription.getText());
// FABR: title only needs to contain the getTitle() string
assertTrue("Titel falsch",
player.getTitle().indexOf(currentSong.toString()) > 0);
player.dispose();
} catch (NoSuchFieldException e) {
fail("Kein playList-Attribut");
} catch (IllegalAccessException e) {
fail(e.toString());
}
}
[/code]
Ne ahnung woran das Liegen könnte?
Habe folgendes Problem, ich muss für die uni einen Mediaplayer Programmieren
es ist das Letzte testat. Drei tests laufen schon aber drei halt auch nicht.
Der test ButtonLayout,Buttons und testConstructor funktionieren nicht.
die fehlermeldung lautet:
java.lang.RuntimeException: java.lang.RuntimeException: Unknown suffix for AudioFile: " "
Hier mein Quellcode:
[JAVA=42]package studiplayer.ui;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;
import studiplayer.audio.AudioFile;
import studiplayer.audio.NotPlayableException;
import studiplayer.audio.PlayList;
@SuppressWarnings("serial")
public class Player extends JFrame implements ActionListener {
private PlayList playList = null;
public static String DEFAULT_PLAYLIST = "playlists/DefaultPlayList.m3u";
private final String initTime = "00:00";
private final String preTitle = "Current song: ";
private JLabel songDescription = new JLabel();
private JLabel playTime = new JLabel();
private JButton bplay = new JButton(new ImageIcon("icons/play.png"));
private JButton bpause = new JButton(new ImageIcon("icons/pause.png"));
private JButton bstop = new JButton(new ImageIcon("icons/stop.png"));
private volatile boolean stopped = true;
private PlayListEditor playListEditor;
private boolean editorVisible;
public void setEnabled(boolean b) {
if(b ==true){
bplay.setEnabled(true);
bpause.setEnabled(true);
bstop.setEnabled(true);
}
if(b==false){
bplay.setEnabled(false);
bpause.setEnabled(false);
bstop.setEnabled(false);
}
}
public Player(PlayList pl) {
playList = pl;
playListEditor = new PlayListEditor(this, this.playList);
editorVisible = false;
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
setTitle("Studiplayer: empty play list");
if (!playList.isEmpty()) {
setTitle(preTitle + playList.getCurrentAudioFile().toString());
}
JPanel buttons = new JPanel();
bplay.setActionCommand("AC_PLAY");
bplay.addActionListener(this);
buttons.add(bplay);
bpause.setActionCommand("AC_PAUSE");
bpause.addActionListener(this);
buttons.add(bpause);
bstop.setActionCommand("AC_STOP");
bstop.addActionListener(this);
buttons.add(bstop);
JButton bnext = new JButton(new ImageIcon("icons/next.png"));
bnext.setActionCommand("AC_NEXT");
bnext.addActionListener(this);
buttons.add(bnext);
JButton bpl = new JButton(new ImageIcon("icons/pl_editor.png"));
bpl.setActionCommand("AC_LIST");
bpl.addActionListener(this);
buttons.add(bpl);
add(buttons, BorderLayout.CENTER);
add(buttons, BorderLayout.CENTER);
bnext.setEnabled(true);
bpl.setEnabled(true);
add(songDescription, BorderLayout.NORTH);
add(playTime, BorderLayout.WEST);
updateSongInfo(playList.getCurrentAudioFile());
pack();
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
AudioFile af;
String cmd = e.getActionCommand();
if(cmd.equals("AC_PLAY")){
playCurrentSong();
af = playList.getCurrentAudioFile();
System.out.println("Playing"+af.toString());
System.out.println("Filename is"+af.getFilename());
System.out.println("Current index is" + playList.getCurrent());
}else if(cmd.equals("AC_PAUSE")){
stopCurrentSong();
af = playList.getCurrentAudioFile();
System.out.println("Playing"+af.toString());
System.out.println("Filename is"+af.getFilename());
System.out.println("Current index is" + playList.getCurrent());
}else if(cmd.equals("AC_STOP")){
stopCurrentSong();
System.out.println("");
af = playList.getCurrentAudioFile();
System.out.println("Playing"+af.toString());
System.out.println("Filename is"+af.getFilename());
System.out.println("Current index is" + playList.getCurrent());
}else if(cmd.equals("AC_NEXT")){
af = playList.getCurrentAudioFile();
System.out.println("Playing"+af.toString());
System.out.println("Filename is"+af.getFilename());
System.out.println("Current index is" + playList.getCurrent());
System.out.println("Switching to next audio file");
if(!stopped){
stopCurrentSong();
}
playList.changeCurrent();
playCurrentSong();
af = playList.getCurrentAudioFile();
if(af !=null){
System.out.println("Switched to next audio file");
}else{
System.out.println("PlayList is empty");
}
System.out.println("");
}else if(cmd.equals("AC_PL")){
af = playList.getCurrentAudioFile();
System.out.println("Playing"+af.toString());
System.out.println("Filename is"+af.getFilename());
System.out.println("Current index is" + playList.getCurrent());
}else if(cmd.equals("AC_EDITOR"));
if(editorVisible){
editorVisible =false;
}else{
editorVisible=true;
}
playListEditor.setVisible(editorVisible);
}
private void updateSongInfo(AudioFile af) {
if (af != null) {
setTitle(preTitle + af.toString());
songDescription.setText(af.toString());
playTime.setText(initTime);
} else {
setTitle("Studiplayer: empty play list");
songDescription.setText("no current song");
playTime.setText("--:--");
}
}
private void playCurrentSong() {
updateSongInfo(playList.getCurrentAudioFile());
System.out.println("Playing: "
+ playList.getCurrentAudioFile().toString());
System.out.println("Filename: "
+ playList.getCurrentAudioFile().getFilename());
System.out.println("Index: " + playList.getCurrent());
System.out.println("");
stopped = false;
if (playList.getCurrentAudioFile() != null) {
(new TimerThread()).start();
(new PlayerThread()).start();
}
}
private void stopCurrentSong() {
System.out.println("Stopped: "
+ playList.getCurrentAudioFile().toString());
System.out.println("Filename: "
+ playList.getCurrentAudioFile().getFilename());
System.out.println("Index: " + playList.getCurrent());
System.out.println("");
stopped = true;
playList.getCurrentAudioFile().stop();
updateSongInfo(playList.getCurrentAudioFile());
}
private class TimerThread extends Thread {
public void run() {
while (!stopped && !playList.isEmpty()) {
playTime.setText(playList.getCurrentAudioFile()
.getFormattedPosition());
try {
sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
private class PlayerThread extends Thread {
public void run() {
while (!stopped && !playList.isEmpty()) {
try {
playList.getCurrentAudioFile().play();
} catch (NotPlayableException e) {
e.printStackTrace();
}
if (!stopped) {
playList.changeCurrent();
updateSongInfo(playList.getCurrentAudioFile());
}
}
}
}
public static void main(String[] pathname) {
PlayList pl = new PlayList();
if (pathname.length == 1) {
try {
pl.loadFromM3U(pathname[0]);
} catch (Exception e) {
e.printStackTrace();
}
} else {
try {
pl.loadFromM3U(DEFAULT_PLAYLIST);
} catch (Exception e) {
e.printStackTrace();
}
}
new Player(pl);
}
}
[/code]
Könnt ihr mir helfen?
Der Test ist dieser hier:
[JAVA=42] public void testButtons() {
// Now, start testing
String eventSequence = "Aktionen: <start>";
Player player = null;
PlayList pl = new PlayList("playlists/playList2.m3u");
player = new Player(pl);
HashMap<String, JButton> buttonList = fillButtonList(player);
JButton play = buttonList.get(PLAY);
JButton pause = buttonList.get(PAUSE);
JButton stop = buttonList.get(STOP);
JButton next = buttonList.get(NEXT);
assertTrue(eventSequence + " Play nicht aktiviert", play.isEnabled());
assertFalse(eventSequence + " Pause aktiviert", pause.isEnabled());
assertFalse(eventSequence + " Stop aktiviert", stop.isEnabled());
assertTrue(eventSequence + " Next nicht aktiviert", next.isEnabled());
// Press Start
eventSequence += "<play1>";
player.actionPerformed(new ActionEvent(player, 0, play
.getActionCommand()));
assertFalse(eventSequence + " Play aktiviert", play.isEnabled());
assertTrue(eventSequence + " Pause nicht aktiviert", pause.isEnabled());
assertTrue(eventSequence + " Stop nicht aktiviert", stop.isEnabled());
assertTrue(eventSequence + " Next nicht aktiviert", next.isEnabled());
// Press Pause
mySleep(1000L);
eventSequence += "<pause>";
player.actionPerformed(new ActionEvent(player, 0, pause
.getActionCommand()));
assertFalse(eventSequence + " Play aktiviert", play.isEnabled());
assertTrue(eventSequence + " Pause nicht aktiviert", pause.isEnabled());
assertTrue(eventSequence + " Stop nicht aktiviert", stop.isEnabled());
assertTrue(eventSequence + " Next nicht aktiviert", next.isEnabled());
// Press play again (nothing should happen)
mySleep(1000L);
eventSequence += "<play2>";
player.actionPerformed(new ActionEvent(player, 0, play
.getActionCommand()));
assertFalse(eventSequence + " Play aktiviert", play.isEnabled());
assertTrue(eventSequence + " Pause nicht aktiviert", pause.isEnabled());
assertTrue(eventSequence + " Stop nicht aktiviert", stop.isEnabled());
assertTrue(eventSequence + " Next nicht aktiviert", next.isEnabled());
// Press Stop
mySleep(1000L);
eventSequence += "<stop1>";
player.actionPerformed(new ActionEvent(player, 0, stop
.getActionCommand()));
mySleep(1000L);
assertTrue(eventSequence + " Play nicht aktiviert", play.isEnabled());
assertFalse(eventSequence + " Pause aktiviert", pause.isEnabled());
assertFalse(eventSequence + " Stop aktiviert", stop.isEnabled());
assertTrue(eventSequence + " Next nicht aktiviert", next.isEnabled());
// Here, we are stopped
try {
Field fieldPlayTime = clazz.getDeclaredField("playTime");
fieldPlayTime.setAccessible(true);
JLabel ptime = (JLabel) fieldPlayTime.get(player);
assertEquals(eventSequence + " Stop setzt playTime nicht zurueck",
"00:00", ptime.getText());
Field fieldPlaylist = clazz.getDeclaredField("playList");
fieldPlaylist.setAccessible(true);
pl = (PlayList) fieldPlaylist.get(player);
AudioFile currentSong = pl.getCurrentAudioFile();
assertNotNull(eventSequence + " currentSong nicht gesetzt",
currentSong);
/* too fragile
assertEquals(eventSequence + " currentSong falsch",
"Wellenmeister - " + "TANOM Part I: Awakening - "
+ "TheAbsoluteNecessityOfMeaning - 05:55",
currentSong.toString());
*/
} catch (NoSuchFieldException e) {
fail("Attribut existiert nicht " + e);
} catch (IllegalAccessException e) {
fail(e.toString());
}
// Press Next and start playing
mySleep(1000L);
eventSequence += "<next1>";
player.actionPerformed(new ActionEvent(player, 0, next
.getActionCommand()));
// Press Play (nothing should happen)
mySleep(1000L);
eventSequence += "<play3>";
player.actionPerformed(new ActionEvent(player, 0, play
.getActionCommand()));
// Next (this changes the song)
mySleep(1000L);
eventSequence += "<next2>";
player.actionPerformed(new ActionEvent(player, 0, next
.getActionCommand()));
mySleep(1000L);
try {
Field fieldPlaylist = clazz.getDeclaredField("playList");
fieldPlaylist.setAccessible(true);
pl = (PlayList) fieldPlaylist.get(player);
AudioFile currentSong = pl.getCurrentAudioFile();
Field fieldPlayTime = clazz.getDeclaredField("playTime");
fieldPlayTime.setAccessible(true);
JLabel playTime = (JLabel) fieldPlayTime.get(player);
assertNotNull(eventSequence + " currentSong nicht gesetzt",
currentSong);
/* too fragile
assertEquals(eventSequence + " currentSong falsch",
"wellenmeister - tranquility - 02:21",
currentSong.toString());
*/
String pos1 = playTime.getText();
mySleep(2000L);
String pos2 = playTime.getText();
// Press stop
eventSequence += "<stop2>";
player.actionPerformed(new ActionEvent(player, 0, stop
.getActionCommand()));
mySleep(2000L);
assertTrue(eventSequence + " Abspielzeit nicht aktualisiert",
pos1.compareTo(pos2) < 0);
} catch (NoSuchFieldException e) {
fail("Attribut existiert nicht " + e);
} catch (IllegalAccessException e) {
fail(e.toString());
}
studiplayer.basic.BasicPlayer.stop();
player.dispose();
}
public void testButtonLayout() {
Player player = null;
PlayList pl = new PlayList("playlists/playList2.m3u");
player = new Player(pl);
HashMap<String, JButton> buttonList = fillButtonList(player);
assertEquals("Anzahl Buttons falsch", 5, buttonList.size());
String cmdString = "@";
for (Map.Entry<String, JButton> entry : buttonList.entrySet()) {
JButton button = entry.getValue();
String cmd = button.getActionCommand();
assertFalse("Kein Action Command gesetzt", "".equals(cmd));
assertTrue("Zweimal gleiches Action Command",
cmdString.indexOf("@" + cmd + "@") < 0);
cmdString += cmd + "@";
}
assertNotNull("Kein Button fuer Abspielen", buttonList.get(PLAY));
assertNotNull("Kein Button fuer Pausieren", buttonList.get(PAUSE));
assertNotNull("Kein Button fuer Anhalten", buttonList.get(STOP));
assertNotNull("Kein Button fuer Ueberspringen", buttonList.get(NEXT));
assertNotNull("Kein Button fuer PlayList-Editor",
buttonList.get(EDITOR));
assertNull("Fehlendes oder falsches Icon zu Button",
buttonList.get(UNKNOWN));
player.dispose();
}
public void testConstructor() {
try {
Player player = new Player(new PlayList());
Field fieldPlayList = clazz.getDeclaredField("playList");
fieldPlayList.setAccessible(true);
PlayList pl1 = (PlayList) fieldPlayList.get(player);
assertEquals("PlayList nicht-leer", 0, pl1.size());
player.dispose();
} catch (NoSuchFieldException e) {
fail("Kein playList-Attribut");
} catch (IllegalAccessException e) {
fail(e.toString());
}
try {
PlayList pl = new PlayList("playlists/playList2.m3u");
Player player = new Player(pl);
Field fieldPlayList = clazz.getDeclaredField("playList");
fieldPlayList.setAccessible(true);
PlayList pl2 = (PlayList) fieldPlayList.get(player);
assertEquals("Anzahl Lieder in PlayList", 8, pl2.size());
Field fieldPlayListEditor = clazz
.getDeclaredField("playListEditor");
fieldPlayListEditor.setAccessible(true);
PlayListEditor ple = (PlayListEditor) fieldPlayListEditor
.get(player);
assertNotNull("PlayListEditor nicht erzeugt", ple);
AudioFile currentSong = pl2.getCurrentAudioFile();
assertNotNull("currentSong nicht gesetzt", currentSong);
assertEquals("currentSong falsch", "Wellenmeister - "
+ "TANOM Part I: Awakening - "
+ "TheAbsoluteNecessityOfMeaning - 05:55",
currentSong.toString());
Field fieldSongDescription = clazz
.getDeclaredField("songDescription");
fieldSongDescription.setAccessible(true);
JLabel songDescription = (JLabel) fieldSongDescription.get(player);
assertEquals("songDescription falsch", currentSong.toString(),
songDescription.getText());
// FABR: title only needs to contain the getTitle() string
assertTrue("Titel falsch",
player.getTitle().indexOf(currentSong.toString()) > 0);
player.dispose();
} catch (NoSuchFieldException e) {
fail("Kein playList-Attribut");
} catch (IllegalAccessException e) {
fail(e.toString());
}
}
[/code]
Ne ahnung woran das Liegen könnte?
Zuletzt bearbeitet von einem Moderator: