| /* |
| * Copyright 2008 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 com.google.gwt.emultest.java.util; |
| |
| import com.google.gwt.junit.client.GWTTestCase; |
| |
| import java.util.ArrayList; |
| import java.util.Collection; |
| import java.util.NoSuchElementException; |
| import java.util.PriorityQueue; |
| |
| /** |
| * Test PriorityQueue. |
| */ |
| public class PriorityQueueTest extends GWTTestCase { |
| |
| @Override |
| public String getModuleName() { |
| return "com.google.gwt.emultest.EmulSuite"; |
| } |
| |
| public void testBasic() { |
| PriorityQueue<Integer> pq = new PriorityQueue<Integer>(); |
| assertEquals(0, pq.size()); |
| assertTrue(pq.isEmpty()); |
| assertNull(pq.peek()); |
| try { |
| pq.remove(); |
| fail("Expected exception"); |
| } catch (NoSuchElementException e) { |
| // expected |
| } |
| pq.add(14); |
| assertEquals(1, pq.size()); |
| assertFalse(pq.isEmpty()); |
| assertEquals(14, pq.peek().intValue()); |
| pq.add(5); |
| assertEquals(2, pq.size()); |
| assertFalse(pq.isEmpty()); |
| assertEquals(5, pq.peek().intValue()); |
| pq.add(7); |
| assertEquals(3, pq.size()); |
| assertFalse(pq.isEmpty()); |
| assertEquals(5, pq.peek().intValue()); |
| pq.add(3); |
| assertEquals(4, pq.size()); |
| assertFalse(pq.isEmpty()); |
| assertEquals(3, pq.peek().intValue()); |
| assertEquals(3, pq.remove().intValue()); |
| assertEquals(5, pq.remove().intValue()); |
| assertEquals(7, pq.remove().intValue()); |
| assertEquals(14, pq.remove().intValue()); |
| assertTrue(pq.isEmpty()); |
| } |
| |
| public void testCollectionMethods() { |
| PriorityQueue<Integer> pq = buildPQ(3, 4, 21, 5, 23, 31, 22); |
| ArrayList<Integer> src = new ArrayList<Integer>(); |
| addArray(src, 21, 3, 31, 5); |
| assertTrue(pq.containsAll(src)); |
| assertTrue(pq.contains(4)); |
| assertTrue(pq.contains(21)); |
| assertEquals(3, pq.peek().intValue()); |
| pq.remove(21); |
| assertEquals(6, pq.size()); |
| assertTrue(pq.contains(4)); |
| assertFalse(pq.contains(21)); |
| pq.remove(5); |
| assertFalse(pq.contains(5)); |
| pq.remove(3); |
| assertFalse(pq.contains(3)); |
| assertEquals(4, pq.remove().intValue()); |
| assertEquals(22, pq.remove().intValue()); |
| assertEquals(23, pq.remove().intValue()); |
| assertEquals(31, pq.remove().intValue()); |
| assertTrue(pq.isEmpty()); |
| addArray(pq, 3, 4, 21, 5, 23, 31, 22); |
| src.add(99); |
| assertTrue(pq.retainAll(src)); |
| assertFalse(pq.retainAll(src)); |
| assertEquals(4, pq.size()); |
| assertEquals(3, pq.remove().intValue()); |
| assertEquals(5, pq.remove().intValue()); |
| assertEquals(21, pq.remove().intValue()); |
| assertEquals(31, pq.remove().intValue()); |
| assertTrue(pq.isEmpty()); |
| } |
| |
| public void testFromCollection() { |
| ArrayList<Integer> src = new ArrayList<Integer>(); |
| addArray(src, 13, 3, 7, 5); |
| PriorityQueue<Integer> pq = new PriorityQueue<Integer>(src); |
| assertEquals(4, pq.size()); |
| assertEquals(3, pq.remove().intValue()); |
| assertEquals(5, pq.remove().intValue()); |
| assertEquals(7, pq.remove().intValue()); |
| assertEquals(13, pq.remove().intValue()); |
| assertTrue(pq.isEmpty()); |
| } |
| |
| public void testPollRemove() { |
| PriorityQueue<Integer> pq = new PriorityQueue<Integer>(); |
| try { |
| pq.remove(); |
| fail("Expected NoSuchElementException"); |
| } catch (NoSuchElementException e) { |
| // expected |
| } |
| assertNull(pq.poll()); |
| } |
| |
| private void addArray(Collection<Integer> col, int... values) { |
| for (int val : values) { |
| col.add(val); |
| } |
| } |
| |
| private PriorityQueue<Integer> buildPQ(int... values) { |
| PriorityQueue<Integer> pq = new PriorityQueue<Integer>(); |
| addArray(pq, values); |
| return pq; |
| } |
| } |