/** * 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. * * 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.util; import junit.framework.TestCase; import edu.chalmers.dat255.audiobookplayer.constants.Constants; /** * @author Aki K�kel� * @version 0.1 * */ public class TextFormatterTest extends TestCase { // Conversions private static final int MSECS_IN_SECOND = 1000; private static final int SECS_IN_MINUTE = 60; private static final int MINS_IN_HOUR = 60; private static final int HOURS_IN_DAY = 24; // The 'magic numbers' // has to be between 0 and 9 private static final int ONE_DIGIT = 3; // has to be between 10 and 23 (24 hours = 1 day) // values of 25 and up will cause the int to roll over to zero. private static final int TWO_DIGITS = 23; private static final int NO_OF_TRACKS = 25; // "limit" // Converting to milliseconds (ms) private static final int SECONDS = MSECS_IN_SECOND; private static final int MINUTES = MSECS_IN_SECOND * SECS_IN_MINUTE; private static final int HOURS = MSECS_IN_SECOND * SECS_IN_MINUTE * MINS_IN_HOUR; private static final int DAYS = MSECS_IN_SECOND * SECS_IN_MINUTE * MINS_IN_HOUR * HOURS_IN_DAY; private static final String NOT_EQUAL = "!="; /** * Test method for * {@link edu.chalmers.dat255.audiobookplayer.util.TextFormatter#formatTimeFromMillis(int)} * . */ public final void testFormatTimeFromMillis() { // the expected result String expected; // the result String result; // test zero expected = "00:00"; result = TextFormatter.formatTimeFromMillis(0); assertTrue("zeroes" + "[" + expected + NOT_EQUAL + result + "]", expected.equals(result)); // test single-digit seconds expected = "00:0" + ONE_DIGIT; result = TextFormatter.formatTimeFromMillis(ONE_DIGIT * SECONDS); assertTrue("single-digit seconds" + "[" + expected + NOT_EQUAL + result + "]", expected.equals(result)); // test double-digit seconds expected = "00:" + TWO_DIGITS; result = TextFormatter.formatTimeFromMillis(TWO_DIGITS * SECONDS); assertTrue("double-digit seconds" + "[" + expected + NOT_EQUAL + result + "]", expected.equals(result)); // test single-digit minutes expected = "0" + ONE_DIGIT + ":00"; result = TextFormatter.formatTimeFromMillis(ONE_DIGIT * MINUTES); assertTrue("single-digit minutes" + "[" + expected + NOT_EQUAL + result + "]", expected.equals(result)); // test double-digit minutes expected = TWO_DIGITS + ":00"; result = TextFormatter.formatTimeFromMillis(TWO_DIGITS * MINUTES); assertTrue("double-digit minutes" + "[" + expected + NOT_EQUAL + result + "]", expected.equals(result)); // test single-digit hour expected = ONE_DIGIT + ":00:00"; result = TextFormatter.formatTimeFromMillis(ONE_DIGIT * HOURS); assertTrue("single-digit hour" + "[" + expected + NOT_EQUAL + result + "]", expected.equals(result)); // test double-digit hour expected = TWO_DIGITS + ":00:00"; result = TextFormatter.formatTimeFromMillis(TWO_DIGITS * HOURS); assertTrue("double-digit hour" + "[" + expected + NOT_EQUAL + result + "]", expected.equals(result)); // test single-digit day expected = ONE_DIGIT + ":00:00:00"; result = TextFormatter.formatTimeFromMillis(ONE_DIGIT * DAYS); assertTrue("single-digit day" + "[" + expected + NOT_EQUAL + result + "]", expected.equals(result)); // test double-digit day expected = TWO_DIGITS + ":00:00:00"; result = TextFormatter.formatTimeFromMillis(TWO_DIGITS * DAYS); assertTrue("double-digit day" + "[" + expected + NOT_EQUAL + result + "]", expected.equals(result)); /* * Combinations */ // test only 2-digit hours and 2-digit seconds expected = TWO_DIGITS + ":00:" + TWO_DIGITS; result = TextFormatter.formatTimeFromMillis(TWO_DIGITS * HOURS + TWO_DIGITS * SECONDS); assertTrue("2-digit hours and 2-digit seconds" + "[" + expected + NOT_EQUAL + result + "]", expected.equals(result)); // test seconds >= 60 expected = TWO_DIGITS + ":00"; result = TextFormatter.formatTimeFromMillis(TWO_DIGITS * SECS_IN_MINUTE * SECONDS); assertTrue("seconds >= 60" + "[" + expected + NOT_EQUAL + result + "]", expected.equals(result)); // test minutes >= 60 and < 600 (10 hours) expected = ONE_DIGIT + ":00:00"; result = TextFormatter.formatTimeFromMillis(ONE_DIGIT * MINS_IN_HOUR * MINUTES); assertTrue("minutes >= 60 and < 600 (10 hours)" + "[" + expected + NOT_EQUAL + result + "]", expected.equals(result)); // test a large amount of days (NOTE: max 24 days with integers) expected = TWO_DIGITS + ":00:00:00"; result = TextFormatter.formatTimeFromMillis(TWO_DIGITS * DAYS); assertTrue("large amount of days" + "[" + expected + NOT_EQUAL + result + "]", expected.equals(result)); } /** * Test method for * {@link edu.chalmers.dat255.audiobookplayer.util.TextFormatter#formatCounter(int, int)} * . */ public final void testFormatCounter() { // the expected result String expected; // the result String result; /* * The following two tests should work as intended. * * Note that the formatter's first parameter is an index, and the other * a number (index + 1). */ // test 0 expected = "1/" + NO_OF_TRACKS; result = TextFormatter.formatCounter(0, NO_OF_TRACKS); assertTrue("zero" + "[" + expected + NOT_EQUAL + result + "]", expected.equals(result)); // test position = limit expected = NO_OF_TRACKS + "/" + NO_OF_TRACKS; result = TextFormatter.formatCounter(NO_OF_TRACKS - 1, NO_OF_TRACKS); assertTrue("position = limit" + "[" + expected + NOT_EQUAL + result + "]", expected.equals(result)); /* * The following three should return special case messages. */ // test with "-1"; no selection expected = "" + NO_OF_TRACKS; result = TextFormatter.formatCounter(Constants.Value.NO_TRACK_SELECTED, NO_OF_TRACKS); assertTrue("no selection" + "[" + expected + NOT_EQUAL + result + "]", expected.equals(result)); // test limit = 0 expected = Constants.Message.NO_TRACKS_FOUND; result = TextFormatter.formatCounter(0, 0); assertTrue("limit = 0" + "[" + expected + NOT_EQUAL + result + "]", expected.equals(result)); // test position > limit expected = Constants.Message.TRACK_INDEX_ERROR; result = TextFormatter.formatCounter(NO_OF_TRACKS + 1, NO_OF_TRACKS); assertTrue("position > limit" + "[" + expected + NOT_EQUAL + result + "]", expected.equals(result)); } }