Android Open Source - AudioBook Bookshelf 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  .  ja v a  2s . com*/
 * 
 *  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 android.test.AndroidTestCase;
import edu.chalmers.dat255.audiobookplayer.model.Book;
import edu.chalmers.dat255.audiobookplayer.model.Bookshelf;
import edu.chalmers.dat255.audiobookplayer.model.Track;

/**
 * Test case for BookshelfController.
 * <p>
 * Tests selecting a track and book at the same time (no other features are
 * implemented).
 * <p>
 * Ignores testing methods which only relay the calls directly to the model.
 * 
 * @author Aki K?kel?
 * @version 0.2
 * 
 */
public class BookshelfControllerTest extends AndroidTestCase {

  // BookshelfController - the test object
  private BookshelfController bookshelfController;

  // Books
  private static final String TITLE0 = "title0";
  private static final String TITLE1 = "title1";
  private static final String TITLE2 = "title2";

  // Constant values; 'magic numbers'

  // indices to test selecting.
  private static final int LEGAL_BOOK_INDEX = 2;
  private static final int LEGAL_TRACK_INDEX = 2;

  // since we will be testing with 3 books, 3 is an illegal index (0-2 are
  // legal)
  private static final int ILLEGAL_BOOK_INDEX = 3;

  // since we will be testing with 3 tracks, 3 is an illegal index (0-2 are
  // legal)
  private static final int ILLEGAL_TRACK_INDEX = 3;

  private static final String PATH0 = "p0";
  private static final String PATH1 = "p1";
  private static final String PATH2 = "p2";

  private static final int DURATION0 = 5000;
  private static final int DURATION1 = 6000;
  private static final int DURATION2 = 7000;

  /*
   * (non-Javadoc)
   * 
   * @see android.test.AndroidTestCase#setUp()
   */
  @Override
  protected void setUp() {
    try {
      super.setUp();
    } catch (Exception e) {
      // catch exceptions from super.setUp() and fail
      fail("setUp failed + " + e.getMessage());
    }
    // NOTE: do not change these values; the tests depend on them

    // Create tracks
    Track t0 = new Track(PATH0, DURATION0);
    Track t1 = new Track(PATH1, DURATION1);
    Track t2 = new Track(PATH2, DURATION2);

    // Put them in a list
    List<Track> tracks = new LinkedList<Track>();
    tracks.add(t0);
    tracks.add(t1);
    tracks.add(t2);

    // Create books
    Book b0 = new Book(tracks, TITLE0);
    Book b1 = new Book(tracks, TITLE1);
    Book b2 = new Book(tracks, TITLE2);

    // Create a new bookshelf to create the controller with
    Bookshelf bookshelf = new Bookshelf();

    // Add books to the bookshelf (to add to the allowed indices)
    bookshelf.addBook(b0);
    bookshelf.addBook(b1);
    bookshelf.addBook(b2);

    // Create a new controller with the bookshelf
    bookshelfController = new BookshelfController(bookshelf);

  }

  /**
   * Tests selecting track and book.
   */
  public void testSetSelectedTrack() {

    // ensure that the first book and track are selected (index 0) as
    // intended
    assertTrue(bookshelfController.getSelectedBookIndex() == 0);
    assertTrue(bookshelfController.getSelectedTrackIndex() == 0);

    // select a book and track at legal indices
    bookshelfController.setSelectedTrack(LEGAL_BOOK_INDEX,
        LEGAL_TRACK_INDEX);

    // ensure that the indices are changed properly
    assertTrue(indicesAreUnchanged());

    /*
     * ensure that nothing is changed if the indices are out of bounds for
     * either the track or the book, or both.
     */

    // setting to illegal book index, illegal track index
    bookshelfController.setSelectedTrack(ILLEGAL_BOOK_INDEX,
        ILLEGAL_TRACK_INDEX);
    // ensure that nothing changed.
    assertTrue(indicesAreUnchanged());

    // setting to illegal book index, legal track index
    bookshelfController.setSelectedTrack(ILLEGAL_BOOK_INDEX,
        LEGAL_TRACK_INDEX);
    // ensure that nothing changed.
    assertTrue(indicesAreUnchanged());

    // setting to legal book index, illegal track index
    bookshelfController.setSelectedTrack(LEGAL_BOOK_INDEX,
        ILLEGAL_TRACK_INDEX);
    // ensure that nothing changed.
    assertTrue(indicesAreUnchanged());

  }

  /**
   * @return True if the selected book and selected track indices are the
   *         legal ones specified in BookshelfControllerTest (i.e. changed).
   */
  private boolean indicesAreUnchanged() {
    return bookshelfController.getSelectedBookIndex() == LEGAL_BOOK_INDEX
        && bookshelfController.getSelectedTrackIndex() == LEGAL_TRACK_INDEX;
  }

}




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