Guest User

Untitled

a guest
Jan 16th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.61 KB | None | 0 0
  1. static class SongAdapterPresenter implements SortedSongSelectionContract.SongAdapterContract.Presenter {
  2.  
  3. private List<Song> songs;
  4. private final Presenter sortedSongSelectionPresenter;
  5. private final SortedSongSelectionContract.SongAdapterContract.Adapter adapter;
  6. private SortedSongSelectionContract.SongAdapterContract.SongView selectedSongView;
  7. private Song selectedSong;
  8.  
  9. SongAdapterPresenter(SortedSongSelectionContract.SongAdapterContract.Adapter adapter, SortedSongSelectionContract.Presenter sortedSongSelectionPresenter) {
  10. this.adapter = adapter;
  11. this.sortedSongSelectionPresenter = sortedSongSelectionPresenter;
  12. }
  13.  
  14. @Override
  15. public int getItemCount() {
  16. return songs != null ? songs.size() : 0;
  17. }
  18.  
  19. @Override
  20. public void onBindView(SortedSongSelectionContract.SongAdapterContract.SongView songView, int position) {
  21. Song song = songs.get(position);
  22.  
  23. songView.setTitle(song.getName());
  24. songView.setArtists(song.getArtists());
  25.  
  26. List<Genre> genres = song.getGenres();
  27. int size = genres.size();
  28. StringBuilder builder = new StringBuilder();
  29. for (int i = 0; i < size; i++) {
  30. builder.append(genres.get(i).getName()).append(",");
  31. }
  32. int length = builder.length();
  33. if (length > 0) {
  34. builder.deleteCharAt(length - 1);
  35. }
  36. songView.setGenres(builder.toString());
  37. songView.showPlayIcon(true);
  38.  
  39. boolean select = isSongEqual(song);
  40. if (select) {
  41. selectedSongView = songView;
  42. }
  43.  
  44. songView.showSelectionUi(select);
  45. }
  46.  
  47. @Override
  48. public void onItemClicked(SortedSongSelectionContract.SongAdapterContract.SongView songView, int position) {
  49. Song song = songs.get(position);
  50.  
  51. if (isSongEqual(song)) {
  52. return;
  53. }
  54.  
  55. deSelect(song);
  56.  
  57. selectedSongView = songView;
  58. selectedSongView.showSelectionUi(true);
  59. selectedSong = songs.get(position);
  60. sortedSongSelectionPresenter.getBus().post(new BusEvents.SongSelected(selectedSong));
  61. }
  62.  
  63. @Override
  64. public void setSongs(List<Song> songs) {
  65. this.songs = songs;
  66. adapter.refresh();
  67. }
  68.  
  69. @Override
  70. public void deSelect(Song song) {
  71. if (!isSongEqual(song)) {
  72. if (selectedSongView != null) {
  73. selectedSongView.showSelectionUi(false);
  74. }
  75. selectedSong = null;
  76. selectedSongView = null;
  77. }
  78. }
  79.  
  80. private boolean isSongEqual(Song song) {
  81. return !(song == null || selectedSong == null) && (song == selectedSong || selectedSong.getId().equals(song.getId()));
  82. }
  83. }
  84. //endregion
  85.  
  86. //region Instance methods
  87. private void processEvent(Object event) {
  88. if (event instanceof BusEvents.SongSelected) {
  89. deSelect(((BusEvents.SongSelected) event).getSong());
  90. }
  91. }
  92. //endregion
  93. }
  94.  
  95. RunWith(PowerMockRunner.class)
  96. @PrepareForTest(Log.class)
  97. public class SongAdapterPresenterTest {
  98.  
  99. private SortedSongSelectionPresenter.SongAdapterPresenter songAdapterPresenter;
  100.  
  101. @Mock
  102. private SortedSongSelectionContract.SongAdapterContract.Adapter adapter;
  103.  
  104. @Mock
  105. private SortedSongSelectionContract.Presenter presenter;
  106.  
  107. @Mock
  108. private SortedSongSelectionContract.SongAdapterContract.SongView songView;
  109.  
  110.  
  111. private Song song;
  112. private List<Song> songList;
  113.  
  114. @Before
  115. public void setUp() {
  116. song = new Song("1", "A", "B");
  117. songList = new ArrayList<>(1);
  118. songList.add(song);
  119. songAdapterPresenter = new SortedSongSelectionPresenter.SongAdapterPresenter(adapter, presenter);
  120. }
  121.  
  122.  
  123. @Test
  124. public void getItemCountWithSongListNotNull_returnSongListSize() {
  125. songAdapterPresenter.setSongs(songList);
  126. Assert.assertEquals(songList.size(), songAdapterPresenter.getItemCount());
  127. }
  128.  
  129. @Test
  130. public void getItemCountWithSongListNull_returnIsZero(){
  131. songAdapterPresenter.setSongs(null);
  132. Assert.assertEquals(0, songAdapterPresenter.getItemCount());
  133. }
  134.  
  135.  
  136. @Test
  137. public void testonBindView() {
  138. songAdapterPresenter.onBindView(songView, 1);
  139. verify(songView).showSelectionUi(true);
  140. }
  141.  
  142. @Test
  143. public void deSelect_SongRemoved(){
  144. songAdapterPresenter.deSelect(song);
  145. verify(songView).showSelectionUi(false);
  146.  
  147. }
  148.  
  149. }
Add Comment
Please, Sign In to add comment