blob: 068f52ea4436f936dc27938dc74bd79f6bceb67d [file] [log] [blame]
tome3489412014-08-29 02:30:38 -07001package org.onlab.graph;
2
tome3489412014-08-29 02:30:38 -07003import com.google.common.collect.Ordering;
4import com.google.common.testing.EqualsTester;
5import org.junit.Test;
6
7import java.util.ArrayList;
8import java.util.Comparator;
tome3489412014-08-29 02:30:38 -07009
tom144de692014-08-29 11:38:44 -070010import static com.google.common.collect.ImmutableList.of;
tome3489412014-08-29 02:30:38 -070011import static org.junit.Assert.*;
12
13/**
14 * Heap data structure tests.
15 */
16public class HeapTest {
17
18 private ArrayList<Integer> data =
tom144de692014-08-29 11:38:44 -070019 new ArrayList<>(of(6, 4, 5, 9, 8, 3, 2, 1, 7, 0));
tome3489412014-08-29 02:30:38 -070020
tom144de692014-08-29 11:38:44 -070021 private static final Comparator<Integer> MIN = Ordering.natural().reverse();
22 private static final Comparator<Integer> MAX = Ordering.natural();
tome3489412014-08-29 02:30:38 -070023
24 @Test
25 public void equality() {
26 new EqualsTester()
tom144de692014-08-29 11:38:44 -070027 .addEqualityGroup(new Heap<>(data, MIN),
28 new Heap<>(data, MIN))
29 .addEqualityGroup(new Heap<>(data, MAX))
tome3489412014-08-29 02:30:38 -070030 .testEquals();
31 }
32
33 @Test
tom144de692014-08-29 11:38:44 -070034 public void empty() {
35 Heap<Integer> h = new Heap<>(new ArrayList<Integer>(), MIN);
36 assertTrue("should be empty", h.isEmpty());
37 assertEquals("incorrect size", 0, h.size());
38 assertNull("no item expected", h.extreme());
39 assertNull("no item expected", h.extractExtreme());
40 }
41
42 @Test
43 public void insert() {
44 Heap<Integer> h = new Heap<>(data, MIN);
tome3489412014-08-29 02:30:38 -070045 assertEquals("incorrect size", 10, h.size());
tom144de692014-08-29 11:38:44 -070046 h.insert(3);
47 assertEquals("incorrect size", 11, h.size());
48 }
49
50 @Test
51 public void minQueue() {
52 Heap<Integer> h = new Heap<>(data, MIN);
tome3489412014-08-29 02:30:38 -070053 assertFalse("should not be empty", h.isEmpty());
tom144de692014-08-29 11:38:44 -070054 assertEquals("incorrect size", 10, h.size());
tome3489412014-08-29 02:30:38 -070055 assertEquals("incorrect extreme", (Integer) 0, h.extreme());
56
57 for (int i = 0, n = h.size(); i < n; i++) {
58 assertEquals("incorrect element", (Integer) i, h.extractExtreme());
59 }
60 assertTrue("should be empty", h.isEmpty());
61 }
62
63 @Test
tom144de692014-08-29 11:38:44 -070064 public void maxQueue() {
65 Heap<Integer> h = new Heap<>(data, MAX);
tome3489412014-08-29 02:30:38 -070066 assertFalse("should not be empty", h.isEmpty());
tom144de692014-08-29 11:38:44 -070067 assertEquals("incorrect size", 10, h.size());
tome3489412014-08-29 02:30:38 -070068 assertEquals("incorrect extreme", (Integer) 9, h.extreme());
69
70 for (int i = h.size(); i > 0; i--) {
71 assertEquals("incorrect element", (Integer) (i - 1), h.extractExtreme());
72 }
73 assertTrue("should be empty", h.isEmpty());
74 }
75
76 @Test
tome3489412014-08-29 02:30:38 -070077 public void iterator() {
tom144de692014-08-29 11:38:44 -070078 Heap<Integer> h = new Heap<>(data, MIN);
79 assertTrue("should have next element", h.iterator().hasNext());
tome3489412014-08-29 02:30:38 -070080 }
81
82}