blob: f34185e25ec1877038fa25cf580d3c268354bb82 [file] [log] [blame]
Thomas Vachuska24c849c2014-10-27 09:53:05 -07001/*
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07002 * Copyright 2014 Open Networking Laboratory
Thomas Vachuska24c849c2014-10-27 09:53:05 -07003 *
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07004 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
Thomas Vachuska24c849c2014-10-27 09:53:05 -07007 *
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07008 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
Thomas Vachuska24c849c2014-10-27 09:53:05 -070015 */
tome3489412014-08-29 02:30:38 -070016package org.onlab.graph;
17
tome3489412014-08-29 02:30:38 -070018import com.google.common.collect.Ordering;
19import com.google.common.testing.EqualsTester;
20import org.junit.Test;
21
22import java.util.ArrayList;
23import java.util.Comparator;
tome3489412014-08-29 02:30:38 -070024
tom144de692014-08-29 11:38:44 -070025import static com.google.common.collect.ImmutableList.of;
tome3489412014-08-29 02:30:38 -070026import static org.junit.Assert.*;
27
28/**
29 * Heap data structure tests.
30 */
31public class HeapTest {
32
33 private ArrayList<Integer> data =
tom144de692014-08-29 11:38:44 -070034 new ArrayList<>(of(6, 4, 5, 9, 8, 3, 2, 1, 7, 0));
tome3489412014-08-29 02:30:38 -070035
tom144de692014-08-29 11:38:44 -070036 private static final Comparator<Integer> MIN = Ordering.natural().reverse();
37 private static final Comparator<Integer> MAX = Ordering.natural();
tome3489412014-08-29 02:30:38 -070038
39 @Test
40 public void equality() {
41 new EqualsTester()
tom144de692014-08-29 11:38:44 -070042 .addEqualityGroup(new Heap<>(data, MIN),
43 new Heap<>(data, MIN))
44 .addEqualityGroup(new Heap<>(data, MAX))
tome3489412014-08-29 02:30:38 -070045 .testEquals();
46 }
47
48 @Test
tom144de692014-08-29 11:38:44 -070049 public void empty() {
50 Heap<Integer> h = new Heap<>(new ArrayList<Integer>(), MIN);
51 assertTrue("should be empty", h.isEmpty());
52 assertEquals("incorrect size", 0, h.size());
53 assertNull("no item expected", h.extreme());
54 assertNull("no item expected", h.extractExtreme());
55 }
56
57 @Test
58 public void insert() {
59 Heap<Integer> h = new Heap<>(data, MIN);
tome3489412014-08-29 02:30:38 -070060 assertEquals("incorrect size", 10, h.size());
tom144de692014-08-29 11:38:44 -070061 h.insert(3);
62 assertEquals("incorrect size", 11, h.size());
63 }
64
65 @Test
66 public void minQueue() {
67 Heap<Integer> h = new Heap<>(data, MIN);
tome3489412014-08-29 02:30:38 -070068 assertFalse("should not be empty", h.isEmpty());
tom144de692014-08-29 11:38:44 -070069 assertEquals("incorrect size", 10, h.size());
tome3489412014-08-29 02:30:38 -070070 assertEquals("incorrect extreme", (Integer) 0, h.extreme());
71
72 for (int i = 0, n = h.size(); i < n; i++) {
73 assertEquals("incorrect element", (Integer) i, h.extractExtreme());
74 }
75 assertTrue("should be empty", h.isEmpty());
76 }
77
78 @Test
tom144de692014-08-29 11:38:44 -070079 public void maxQueue() {
80 Heap<Integer> h = new Heap<>(data, MAX);
tome3489412014-08-29 02:30:38 -070081 assertFalse("should not be empty", h.isEmpty());
tom144de692014-08-29 11:38:44 -070082 assertEquals("incorrect size", 10, h.size());
tome3489412014-08-29 02:30:38 -070083 assertEquals("incorrect extreme", (Integer) 9, h.extreme());
84
85 for (int i = h.size(); i > 0; i--) {
86 assertEquals("incorrect element", (Integer) (i - 1), h.extractExtreme());
87 }
88 assertTrue("should be empty", h.isEmpty());
89 }
90
91 @Test
tome3489412014-08-29 02:30:38 -070092 public void iterator() {
tom144de692014-08-29 11:38:44 -070093 Heap<Integer> h = new Heap<>(data, MIN);
94 assertTrue("should have next element", h.iterator().hasNext());
tome3489412014-08-29 02:30:38 -070095 }
96
97}