Android Open Source - AudioBook Player Controller Test






From Project

Back to project page AudioBook.

License

The source code is released under:

Creative Commons Legal Code Attribution-NonCommercial 3.0 Unported CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT C...

If you think the Android project AudioBook listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 *  This work is licensed under the Creative Commons Attribution-NonCommercial-
 *  NoDerivs 3.0 Unported License. To view a copy of this license, visit
 *  http://creativecommons.org/licenses/by-nc-nd/3.0/ or send a letter to 
 *  Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 
 *  94041, USA./*from   ww  w.j a v a2s.c o m*/
 * 
 *  Use of this work is permitted only in accordance with license rights granted.
 *  Materials provided "AS IS"; no representations or warranties provided.
 * 
 *  Copyright ? 2012 Marcus Parkkinen, Aki K?kel?, Fredrik ?hs.
 **/

package edu.chalmers.dat255.audiobookplayer.ctrl;

import java.util.LinkedList;
import java.util.List;

import junit.framework.TestCase;
import edu.chalmers.dat255.audiobookplayer.model.Book;
import edu.chalmers.dat255.audiobookplayer.model.Bookshelf;
import edu.chalmers.dat255.audiobookplayer.model.Track;

/**
 * Test case for PlayerController (MediaPlayer wrapper class).
 * 
 * NOTE:
 * 
 * Waiting for the thread of the test object to react is not implemented
 * currently, meaning that tests are not complete for the following test
 * methods:
 * 
 * testStart, testResume, testIsPlaying.
 * 
 * These test methods rely on MediaPlayer.isPlaying() method.
 * 
 * testStartTimer().
 * 
 * This test method relies on checking that the thread is alive.
 * 
 * These methods are currently not implemented in a way that makes test runs
 * consistent, and the assertions have therefore been removed.
 * 
 * @author Aki K?kel?
 * @version 0.3
 * 
 */
public class PlayerControllerTest extends TestCase {

  // the controller to be tested
  private PlayerController pc;

  // create a bookshelf to have something to mutate
  private Bookshelf bs;

  // some hard-coded fields of objects at test
  private static final int TIME = 1212923;
  private static final String PATH = "/mnt/sdcard/game.mp3";
  private static final String BOOKNAME = "Lord of the Rings";
  private static final String AUTHOR = "Tolkien";

  // the 2:nd track counted from zero
  private static final int TRACK_INDEX = 1;

  /**
   * Tests the constructor.
   * 
   * @param name
   */
  public PlayerControllerTest(String name) {
    super(name);
  }

  /*
   * (non-Javadoc)
   * 
   * @see junit.framework.TestCase#setUp()
   */
  @Override
  protected void setUp() {
    try {
      super.setUp();
    } catch (Exception e) {
      // catch exceptions from super.setUp() and fail
      fail("setUp failed + " + e.getMessage());
    }

    // re-create the bookshelf and player for each test
    bs = new Bookshelf();

    // put some content into the bookshelf
    Track t0 = new Track(PATH, TIME);
    Track t1 = new Track(PATH, TIME);
    Track t2 = new Track(PATH, TIME);

    List<Track> tracks = new LinkedList<Track>();
    tracks.add(t0);
    tracks.add(t1);
    tracks.add(t2);

    Book b1 = new Book(tracks, BOOKNAME, AUTHOR);
    bs.addBook(b1);

    pc = new PlayerController(bs);

    // set a track index for testing purposes
    bs.setSelectedTrackIndex(TRACK_INDEX);

  }

  /*
   * (non-Javadoc)
   * 
   * @see junit.framework.TestCase#tearDown()
   */
  protected void tearDown() throws Exception {
    super.tearDown();

    // stop the audio player and updater
    pc.stop();
  }

  /**
   * Constructor.
   * 
   * Test method for
   * {@link edu.chalmers.dat255.audiobookplayer.ctrl.PlayerController#PlayerController(edu.chalmers.dat255.audiobookplayer.model.Bookshelf)}
   * .
   */
  public final void testPlayerController() {
    // ensure that the player and bookshelf are both instantiated
    assertNotNull(bs);
    assertNotNull(pc);
  }

  /**
   * Test method for
   * {@link edu.chalmers.dat255.audiobookplayer.ctrl.PlayerController#stopTimer()}
   * .
   */
  public final void testStopTimer() {
    // start the timer
    pc.startTimer();

    // stop it and ensure that pc is no longer playing
    pc.stopTimer();
    assertFalse(pc.isStarted());

    // check that we have interrupted the thread (by calling stopTimer)
    assertTrue(pc.getTrackTimeUpdateThread().isInterrupted());
  }

  /**
   * Test method for
   * {@link edu.chalmers.dat255.audiobookplayer.ctrl.PlayerController#startTimer()}
   * .
   */
  public final void testStartTimer() {
    // start the timer and make sure pc is started
    pc.start();
    assertTrue(pc.isStarted());

    // check that we have started the thread (by calling start)
    // See the note in the class description.

  }

  /**
   * Test method for
   * {@link edu.chalmers.dat255.audiobookplayer.ctrl.PlayerController#stop()}.
   */
  public final void testStop() {
    pc.start();
    pc.stop();

    // it should not be started nor playing
    assertFalse(pc.isPlaying());
    assertFalse(pc.isStarted());
  }

  /**
   * Test method for
   * {@link edu.chalmers.dat255.audiobookplayer.ctrl.PlayerController#start()}
   * .
   */
  public final void testStart() {
    pc.start();

    // it should be started
    assertTrue(pc.isStarted());

  }

  /**
   * Test method for
   * {@link edu.chalmers.dat255.audiobookplayer.ctrl.PlayerController#pause()}
   * .
   */
  public final void testPause() {
    // pause and start
    pc.start();
    pc.pause();

    // it SHOULD be started
    assertTrue(pc.isStarted());

    // it should NOT be playing audio
    assertFalse(pc.isPlaying());
  }

  /**
   * Test method for
   * {@link edu.chalmers.dat255.audiobookplayer.ctrl.PlayerController#resume()}
   * .
   */
  public final void testResume() {
    // start pc
    pc.start();

    // pause it so that we can resume
    // pause is tested by another test method
    pc.pause();

    pc.resume();
    // resumed means that pc is both started and playing
    // (see javadoc for the difference between the two).

    // it should still be started
    assertTrue(pc.isStarted());

  }

  /**
   * Test method for
   * {@link edu.chalmers.dat255.audiobookplayer.ctrl.PlayerController#previousTrack()}
   * .
   */
  public final void testPreviousTrack() {
    // since we have 3 tracks, it should simply go from index 1 to index 0
    pc.previousTrack();
    assertTrue(pc.getBs().getSelectedTrackIndex() == TRACK_INDEX - 1);
  }

  /**
   * Test method for
   * {@link edu.chalmers.dat255.audiobookplayer.ctrl.PlayerController#nextTrack()}
   * .
   */
  public final void testNextTrack() {
    // since we have 3 tracks, it should simply go from index 1 to index 2
    pc.nextTrack();
    assertTrue(pc.getBs().getSelectedTrackIndex() == TRACK_INDEX + 1);
  }

  /**
   * Test method for
   * {@link edu.chalmers.dat255.audiobookplayer.ctrl.PlayerController#isStarted()}
   * .
   */
  public final void testIsStarted() {
    // should not be started initially
    assertFalse(pc.isStarted());

    // start pc and check again
    pc.start();
    assertTrue(pc.isStarted());

    // pause and make sure it is still started
    pc.pause();
    assertTrue(pc.isStarted());
  }

  /**
   * Test method for
   * {@link edu.chalmers.dat255.audiobookplayer.ctrl.PlayerController#isPlaying()}
   * .
   */
  public final void testIsPlaying() {
    // should not be playing initially
    assertFalse(pc.isPlaying());

    // start pc and check again
    pc.start();

  }

}




Java Source Code List

edu.chalmers.dat255.audiobookplayer.constants.Constants.java
edu.chalmers.dat255.audiobookplayer.constants.PlaybackStatus.java
edu.chalmers.dat255.audiobookplayer.ctrl.BookshelfControllerTest.java
edu.chalmers.dat255.audiobookplayer.ctrl.BookshelfController.java
edu.chalmers.dat255.audiobookplayer.ctrl.PlayerControllerTest.java
edu.chalmers.dat255.audiobookplayer.ctrl.PlayerController.java
edu.chalmers.dat255.audiobookplayer.instrumentation.AllTests.java
edu.chalmers.dat255.audiobookplayer.interfaces.IBookUpdates.java
edu.chalmers.dat255.audiobookplayer.interfaces.IBookshelfEvents.java
edu.chalmers.dat255.audiobookplayer.interfaces.IBookshelfGUIEvents.java
edu.chalmers.dat255.audiobookplayer.interfaces.IPlayerEvents.java
edu.chalmers.dat255.audiobookplayer.interfaces.ITrackUpdates.java
edu.chalmers.dat255.audiobookplayer.model.BookTest.java
edu.chalmers.dat255.audiobookplayer.model.Book.java
edu.chalmers.dat255.audiobookplayer.model.BookshelfTest.java
edu.chalmers.dat255.audiobookplayer.model.Bookshelf.java
edu.chalmers.dat255.audiobookplayer.model.TagTest.java
edu.chalmers.dat255.audiobookplayer.model.Tag.java
edu.chalmers.dat255.audiobookplayer.model.TrackTest.java
edu.chalmers.dat255.audiobookplayer.model.Track.java
edu.chalmers.dat255.audiobookplayer.util.BookCreatorTest.java
edu.chalmers.dat255.audiobookplayer.util.BookCreator.java
edu.chalmers.dat255.audiobookplayer.util.BookshelfHandlerTest.java
edu.chalmers.dat255.audiobookplayer.util.BookshelfHandler.java
edu.chalmers.dat255.audiobookplayer.util.FileParserTest.java
edu.chalmers.dat255.audiobookplayer.util.FileParser.java
edu.chalmers.dat255.audiobookplayer.util.JsonParserTest.java
edu.chalmers.dat255.audiobookplayer.util.JsonParser.java
edu.chalmers.dat255.audiobookplayer.util.TextFormatterTest.java
edu.chalmers.dat255.audiobookplayer.util.TextFormatter.java
edu.chalmers.dat255.audiobookplayer.util.TrackCreatorTest.java
edu.chalmers.dat255.audiobookplayer.util.TrackCreator.java
edu.chalmers.dat255.audiobookplayer.view.BookshelfFragment.java
edu.chalmers.dat255.audiobookplayer.view.BrowserActivityTest.java
edu.chalmers.dat255.audiobookplayer.view.BrowserActivity.java
edu.chalmers.dat255.audiobookplayer.view.MainActivity.java
edu.chalmers.dat255.audiobookplayer.view.PlayerFragment.java
edu.chalmers.dat255.audiobookplayer.view.ViewPagerAdapter.java