@Override public int compareTo(PicassoFutureTask other) { Picasso.Priority p1 = hunter.getPriority(); Picasso.Priority p2 = other.hunter.getPriority(); // High-priority requests are "lesser" so they are sorted to the front. // Equal priorities are sorted by sequence number to provide FIFO ordering. return (p1 == p2 ? hunter.sequence - other.hunter.sequence : p2.ordinal() - p1.ordinal()); } }
@Test public void getPriorityWithSingleRequest() { Action action = mockAction(URI_KEY_1, URI_1, HIGH); NetworkRequestHandler requestHandler = new NetworkRequestHandler(UNUSED_CALL_FACTORY, stats); BitmapHunter hunter = forRequest(mockPicasso(requestHandler), dispatcher, cache, stats, action); assertThat(hunter.getAction()).isEqualTo(action); assertThat(hunter.getActions()).isNull(); assertThat(hunter.getPriority()).isEqualTo(HIGH); }
@Test public void getPriorityAfterDetach() { Action action1 = mockAction(URI_KEY_1, URI_1, NORMAL); Action action2 = mockAction(URI_KEY_1, URI_1, HIGH); NetworkRequestHandler requestHandler = new NetworkRequestHandler(UNUSED_CALL_FACTORY, stats); BitmapHunter hunter = forRequest(mockPicasso(requestHandler), dispatcher, cache, stats, action1); hunter.attach(action2); assertThat(hunter.getAction()).isEqualTo(action1); assertThat(hunter.getActions()).containsExactly(action2); assertThat(hunter.getPriority()).isEqualTo(HIGH); hunter.detach(action2); assertThat(hunter.getAction()).isEqualTo(action1); assertThat(hunter.getActions()).isEmpty(); assertThat(hunter.getPriority()).isEqualTo(NORMAL); }
@Test public void getPriorityWithNoRequests() { Action action = mockAction(URI_KEY_1, URI_1); NetworkRequestHandler requestHandler = new NetworkRequestHandler(UNUSED_CALL_FACTORY, stats); BitmapHunter hunter = forRequest(mockPicasso(requestHandler), dispatcher, cache, stats, action); hunter.detach(action); assertThat(hunter.getAction()).isNull(); assertThat(hunter.getActions()).isNull(); assertThat(hunter.getPriority()).isEqualTo(LOW); }
@Test public void getPriorityWithMultipleRequests() { Action action1 = mockAction(URI_KEY_1, URI_1, NORMAL); Action action2 = mockAction(URI_KEY_1, URI_1, HIGH); NetworkRequestHandler requestHandler = new NetworkRequestHandler(UNUSED_CALL_FACTORY, stats); BitmapHunter hunter = forRequest(mockPicasso(requestHandler), dispatcher, cache, stats, action1); hunter.attach(action2); assertThat(hunter.getAction()).isEqualTo(action1); assertThat(hunter.getActions()).containsExactly(action2); assertThat(hunter.getPriority()).isEqualTo(HIGH); }