/**
  * Tests release method for entry in acquired state.
  *
  * <p>Entry in state ACQUIRED should be released and its status should be changed to AVAILABLE.
  */
 public void testReleaseAquired() {
   acquire();
   _queueEntry.release();
   assertTrue(
       "Queue entry should be in AVAILABLE state after invoking of release method",
       _queueEntry.isAvailable());
 }
 /**
  * Tests release method for entry in deleted state.
  *
  * <p>Invoking release on deleted entry should not have any effect on its state.
  */
 public void testReleaseDeleted() {
   delete();
   _queueEntry.release();
   assertTrue(
       "Invoking of release on entry in DELETED state should not have any effect",
       _queueEntry.isDeleted());
 }
 /**
  * Tests release method for entry in dequeued state.
  *
  * <p>Invoking release on dequeued entry should not have any effect on its state.
  */
 public void testReleaseDequeued() {
   dequeue();
   _queueEntry.release();
   EntryState state = getState();
   assertEquals(
       "Invoking of release on entry in DEQUEUED state should not have any effect",
       QueueEntry.DEQUEUED_STATE,
       state);
 }
 /** A helper method to put tested entry into dequeue state and assert the sate */
 private void dequeue() {
   acquire();
   _queueEntry.dequeue();
   EntryState state = getState();
   assertEquals(
       "Queue entry should be in DEQUEUED state after invoking of dequeue method",
       QueueEntry.DEQUEUED_STATE,
       state);
 }
  /** Tests if entries in DEQUQUED or DELETED state are not returned by getNext method. */
  public void testGetNext() {
    int numberOfEntries = 5;
    QueueEntryImpl[] entries = new QueueEntryImpl[numberOfEntries];
    SimpleQueueEntryList queueEntryList = new SimpleQueueEntryList(new MockAMQQueue("test"));

    // create test entries
    for (int i = 0; i < numberOfEntries; i++) {
      AMQMessage message = null;
      ;
      try {
        message = new MockAMQMessage(i);
      } catch (AMQException e) {
        fail("Failure to create a mock message:" + e.getMessage());
      }
      QueueEntryImpl entry = (QueueEntryImpl) queueEntryList.add(message);
      entries[i] = entry;
    }

    // test getNext for not acquired entries
    for (int i = 0; i < numberOfEntries; i++) {
      QueueEntryImpl queueEntry = entries[i];
      QueueEntryImpl next = queueEntry.getNext();
      if (i < numberOfEntries - 1) {
        assertEquals("Unexpected entry from QueueEntryImpl#getNext()", entries[i + 1], next);
      } else {
        assertNull("The next entry after the last should be null", next);
      }
    }

    // delete second
    entries[1].acquire();
    entries[1].delete();

    // dequeue third
    entries[2].acquire();
    entries[2].dequeue();

    QueueEntryImpl next = entries[0].getNext();
    assertEquals("expected forth entry", entries[3], next);
    next = next.getNext();
    assertEquals("expected fifth entry", entries[4], next);
    next = next.getNext();
    assertNull("The next entry after the last should be null", next);
  }
 public void testAquire() {
   assertTrue(
       "Queue entry should be in AVAILABLE state before invoking of acquire method",
       _queueEntry.isAvailable());
   acquire();
 }
 /** A helper method to put tested entry into acquired state and assert the sate */
 private void acquire() {
   _queueEntry.acquire(new MockSubscription());
   assertTrue(
       "Queue entry should be in ACQUIRED state after invoking of acquire method",
       _queueEntry.isAcquired());
 }
 /** A helper method to put tested object into deleted state and assert the state */
 private void delete() {
   _queueEntry.delete();
   assertTrue(
       "Queue entry should be in DELETED state after invoking of delete method",
       _queueEntry.isDeleted());
 }