// Copyright 2010 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package org.npr.android.news;
import android.app.Activity;
import android.content.Intent;
import android.test.ActivityInstrumentationTestCase2;
import org.npr.android.util.StationCache;
import org.npr.api.Station;
import org.npr.api.Station.AudioStream;
import org.npr.api.Station.Podcast;
import org.npr.api.Station.StationBuilder;
import java.util.ArrayList;
import java.util.LinkedList;
/**
* Unit test for the StationDetailsActivity
*
* @author jeremywadsack
*/
public class StationDetailsActivityTest extends
ActivityInstrumentationTestCase2<StationDetailsActivity> {
public StationDetailsActivityTest() {
super("org.npr.android.news", StationDetailsActivity.class);
}
public void testShouldSupportEmptyStationRecordsOnLaunch() {
Station station = new StationBuilder("0")
.withAudioStreams(new LinkedList<AudioStream>())
.withPodcasts(new LinkedList<Podcast>())
.build();
ArrayList<Station> list = new ArrayList<Station>();
list.add(station);
StationCache.addAll(list);
Intent intent = new Intent().putExtra(Constants.EXTRA_STATION_ID, "0");
setActivityIntent(intent);
Activity activity = getActivity();
assertNotNull(activity);
}
public void testShouldSupportStationRecordsWithLongLabelsOnLaunch() {
LinkedList<AudioStream> streams = new LinkedList<AudioStream>();
streams.add(new AudioStream(LONG_URL, LONG_STRING));
LinkedList<Podcast> podcasts = new LinkedList<Podcast>();
podcasts.add(new Podcast(LONG_URL, LONG_STRING));
Station station = new StationBuilder("0")
.withBand(LONG_STRING)
.withFrequency(LONG_STRING)
.withImage(LONG_URL)
.withMarketCity(LONG_STRING)
.withName(LONG_STRING)
.withTagline(LONG_STRING)
.withAudioStreams(streams)
.withPodcasts(podcasts)
.build();
ArrayList<Station> list = new ArrayList<Station>();
list.add(station);
StationCache.addAll(list);
Intent intent = new Intent().putExtra(Constants.EXTRA_STATION_ID, "0");
setActivityIntent(intent);
Activity activity = getActivity();
assertNotNull(activity);
}
private static final String SHORT_STRING = "ABCD";
private static final String INVALID_URL = "ABCD";
public void testShouldGracefullyIgnoreInvalidUrlsInStationRecordsOnLaunch() {
LinkedList<AudioStream> streams = new LinkedList<AudioStream>();
streams.add(new AudioStream(INVALID_URL, SHORT_STRING));
LinkedList<Podcast> podcasts = new LinkedList<Podcast>();
podcasts.add(new Podcast(INVALID_URL, SHORT_STRING));
Station station = new StationBuilder("0")
.withImage(INVALID_URL)
.withName(SHORT_STRING)
.withTagline(SHORT_STRING)
.withAudioStreams(streams)
.withPodcasts(podcasts)
.build();
ArrayList<Station> list = new ArrayList<Station>();
list.add(station);
StationCache.addAll(list);
Intent intent = new Intent().putExtra(Constants.EXTRA_STATION_ID, "0");
setActivityIntent(intent);
Activity activity = getActivity();
assertNotNull(activity);
}
private static final String LONG_URL = "http://example.com/Lorem/ipsum/dol" +
"or/sit/amet,/consectetur/adipiscing/elit./Nunc/congue/justo/a/ipsum/p" +
"retium/ultrices./Vestibulum/a/elit/quam,/at/rutrum/est./Aliquam/erat/" +
"volutpat./Nunc/consectetur/pulvinar/elit/et/ultrices./Ut/congue/fring" +
"illa/tempus./Pellentesque/et/orci/id/dui/fermentum/luctus./Etiam/moll" +
"is/rhoncus/ante,/nec/varius/ligula/dignissim/sit/amet./Sed/quis/neque" +
"/quis/tellus/dapibus/mollis./Quisque/vel/sagittis/ipsum./Sed/accumsan" +
"/tristique/ante/sed/mattis./Sed/suscipit,/eros/non/semper/sollicitudi" +
"n,/felis/sapien/consectetur/purus,/sed/venenatis/diam/dolor/cursus/ne" +
"que./Cum/sociis/natoque/penatibus/et/magnis/dis/parturient/montes,/na" +
"scetur/ridiculus/mus.";
private static final String LONG_STRING = "Lorem ipsum dolor sit amet, con" +
"sectetur adipiscing elit. Nunc congue justo a ipsum pretium ultrices." +
" Vestibulum a elit quam, at rutrum est. Aliquam erat volutpat. Nunc c" +
"onsectetur pulvinar elit et ultrices. Ut congue fringilla tempus. Pel" +
"lentesque et orci id dui fermentum luctus. Etiam mollis rhoncus ante," +
" nec varius ligula dignissim sit amet. Sed quis neque quis tellus dap" +
"ibus mollis. Quisque vel sagittis ipsum. Sed accumsan tristique ante " +
"sed mattis. Sed suscipit, eros non semper sollicitudin, felis sapien " +
"consectetur purus, sed venenatis diam dolor cursus neque. Cum sociis " +
"natoque penatibus et magnis dis parturient montes, nascetur ridiculus" +
" mus.";
}