Help why are all these test failings? Then help explain why! This is the test file that
Fantastic news! We've Found the answer you've been seeking!
Question:
Help why are all these test failings? Then help explain why!
This is the test file that keeps failing!
package hw4; import static org.junit.Assert.*; import java.util.NoSuchElementException; import org.junit.Rule; import org.junit.Test; import org.junit.rules.Timeout; public class HW4Test { @Rule public Timeout globalTimeout = Timeout.seconds(10); Price p101 = new Price(1, 1); Price p202 = new Price(2, 2); Price p303 = new Price(3, 3); Price p404 = new Price(4, 4); Price p505 = new Price(5, 5); @Test public void test05Exception() { PriceQueue pq = new PriceQueue(); try { pq.dequeue(); fail(); } catch (NoSuchElementException e) { } assertTrue(pq.enqueue(p101)); assertEquals(p101, pq.dequeue()); try { pq.dequeue(); fail(); } catch (NoSuchElementException e) { } pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.delete(p101)); try { pq.dequeue(); fail(); } catch (NoSuchElementException e) { } } @Test public void test05EnqDeqDel() { PriceQueue pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertFalse(pq.isEmpty()); assertEquals(1, pq.size()); assertEquals(p101, pq.dequeue()); assertTrue(pq.isEmpty()); assertEquals(0, pq.size()); assertFalse(pq.delete(p101)); assertFalse(pq.delete(p202)); } @Test public void test05EnqDelDeq() { PriceQueue pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertFalse(pq.isEmpty()); assertEquals(1, pq.size()); assertFalse(pq.delete(p202)); assertTrue(pq.delete(p101)); assertTrue(pq.isEmpty()); assertEquals(0, pq.size()); try { pq.dequeue(); fail(); } catch (NoSuchElementException e) { } assertFalse(pq.delete(p101)); } @Test public void test05Enq1Enq2Del2Deq() { PriceQueue pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertFalse(pq.isEmpty()); assertEquals(2, pq.size()); assertTrue(pq.delete(p202)); assertFalse(pq.isEmpty()); assertEquals(1, pq.size()); assertEquals(p101, pq.dequeue()); assertEquals(0, pq.size()); assertFalse(pq.delete(p101)); assertFalse(pq.delete(p202)); } @Test public void test05Enq1Enq2Del1Deq() { PriceQueue pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertFalse(pq.isEmpty()); assertEquals(2, pq.size()); assertTrue(pq.delete(p101)); assertFalse(pq.isEmpty()); assertEquals(1, pq.size()); assertEquals(p202, pq.dequeue()); assertEquals(0, pq.size()); assertFalse(pq.delete(p101)); assertFalse(pq.delete(p202)); } @Test public void test05EnqDeqEnqDeq() { PriceQueue pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertEquals(p101, pq.dequeue()); assertTrue(pq.enqueue(p202)); assertEquals(p202, pq.dequeue()); } @Test public void test05EnqDeqEnqDel() { PriceQueue pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertEquals(p101, pq.dequeue()); assertTrue(pq.enqueue(p202)); assertTrue(pq.delete(p202)); } @Test public void test05EnqDelEnqDel() { PriceQueue pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.delete(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.delete(p202)); } @Test public void test05EnqDelEnqDeq() { PriceQueue pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.delete(p101)); assertTrue(pq.enqueue(p202)); assertEquals(p202, pq.dequeue()); } @Test public void test05DeqThenDeleteInOrder() { PriceQueue pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertEquals(5, pq.size()); assertEquals(p101, pq.dequeue()); assertEquals(p202, pq.dequeue()); assertEquals(p303, pq.dequeue()); assertEquals(p404, pq.dequeue()); assertEquals(p505, pq.dequeue()); assertEquals(0, pq.size()); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertEquals(5, pq.size()); assertTrue(pq.delete(p101)); assertTrue(pq.delete(p202)); assertTrue(pq.delete(p303)); assertTrue(pq.delete(p404)); assertTrue(pq.delete(p505)); assertEquals(0, pq.size()); } @Test public void test05DeqThenDeleteReverseOrder() { PriceQueue pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertEquals(5, pq.size()); assertEquals(p101, pq.dequeue()); assertEquals(p202, pq.dequeue()); assertEquals(p303, pq.dequeue()); assertEquals(p404, pq.dequeue()); assertEquals(p505, pq.dequeue()); assertEquals(0, pq.size()); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertEquals(5, pq.size()); assertTrue(pq.delete(p505)); assertTrue(pq.delete(p404)); assertTrue(pq.delete(p303)); assertTrue(pq.delete(p202)); assertTrue(pq.delete(p101)); assertEquals(0, pq.size()); } @Test public void test05DelInOrderThenDeq() { PriceQueue pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertEquals(5, pq.size()); assertTrue(pq.delete(p101)); assertTrue(pq.delete(p202)); assertTrue(pq.delete(p303)); assertTrue(pq.delete(p404)); assertTrue(pq.delete(p505)); assertEquals(0, pq.size()); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertEquals(5, pq.size()); assertEquals(p101, pq.dequeue()); assertEquals(p202, pq.dequeue()); assertEquals(p303, pq.dequeue()); assertEquals(p404, pq.dequeue()); assertEquals(p505, pq.dequeue()); assertEquals(0, pq.size()); } @Test public void test05DelReverseOrderThenDeq() { PriceQueue pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertEquals(5, pq.size()); assertTrue(pq.delete(p505)); assertTrue(pq.delete(p404)); assertTrue(pq.delete(p303)); assertTrue(pq.delete(p202)); assertTrue(pq.delete(p101)); assertEquals(0, pq.size()); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertEquals(5, pq.size()); assertEquals(p101, pq.dequeue()); assertEquals(p202, pq.dequeue()); assertEquals(p303, pq.dequeue()); assertEquals(p404, pq.dequeue()); assertEquals(p505, pq.dequeue()); assertEquals(0, pq.size()); } @Test public void test05DeleteMiddleInOrder() { PriceQueue pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertTrue(pq.delete(p202)); assertTrue(pq.delete(p303)); assertTrue(pq.delete(p404)); assertEquals(p101, pq.dequeue()); assertEquals(p505, pq.dequeue()); pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertTrue(pq.delete(p202)); assertTrue(pq.delete(p303)); assertTrue(pq.delete(p404)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertEquals(p101, pq.dequeue()); assertEquals(p505, pq.dequeue()); assertEquals(p202, pq.dequeue()); assertEquals(p303, pq.dequeue()); } @Test public void test05DeleteMiddleRevOrder() { PriceQueue pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertTrue(pq.delete(p404)); assertTrue(pq.delete(p303)); assertTrue(pq.delete(p202)); assertEquals(p101, pq.dequeue()); assertEquals(p505, pq.dequeue()); pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertTrue(pq.delete(p404)); assertTrue(pq.delete(p303)); assertTrue(pq.delete(p202)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertEquals(p101, pq.dequeue()); assertEquals(p505, pq.dequeue()); assertEquals(p202, pq.dequeue()); assertEquals(p303, pq.dequeue()); } @Test public void test05DeleteFrontInOrder() { PriceQueue pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertTrue(pq.delete(p101)); assertTrue(pq.delete(p202)); assertTrue(pq.delete(p303)); assertEquals(p404, pq.dequeue()); assertEquals(p505, pq.dequeue()); pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertTrue(pq.delete(p101)); assertTrue(pq.delete(p202)); assertTrue(pq.delete(p303)); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertEquals(p404, pq.dequeue()); assertEquals(p505, pq.dequeue()); assertEquals(p101, pq.dequeue()); assertEquals(p202, pq.dequeue()); } @Test public void test05DeleteFrontRevOrder() { PriceQueue pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertTrue(pq.delete(p303)); assertTrue(pq.delete(p202)); assertTrue(pq.delete(p101)); assertEquals(p404, pq.dequeue()); assertEquals(p505, pq.dequeue()); pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertTrue(pq.delete(p303)); assertTrue(pq.delete(p202)); assertTrue(pq.delete(p101)); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertEquals(p404, pq.dequeue()); assertEquals(p505, pq.dequeue()); assertEquals(p101, pq.dequeue()); assertEquals(p202, pq.dequeue()); } @Test public void test05DeleteBackInOrder() { PriceQueue pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertTrue(pq.delete(p303)); assertTrue(pq.delete(p404)); assertTrue(pq.delete(p505)); assertEquals(p101, pq.dequeue()); assertEquals(p202, pq.dequeue()); pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertTrue(pq.delete(p303)); assertTrue(pq.delete(p404)); assertTrue(pq.delete(p505)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertEquals(p101, pq.dequeue()); assertEquals(p202, pq.dequeue()); assertEquals(p303, pq.dequeue()); assertEquals(p404, pq.dequeue()); } @Test public void test05DeleteBackRevOrder() { PriceQueue pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertTrue(pq.delete(p505)); assertTrue(pq.delete(p404)); assertTrue(pq.delete(p303)); assertEquals(p101, pq.dequeue()); assertEquals(p202, pq.dequeue()); pq = new PriceQueue(); assertTrue(pq.enqueue(p101)); assertTrue(pq.enqueue(p202)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertTrue(pq.enqueue(p505)); assertTrue(pq.delete(p505)); assertTrue(pq.delete(p404)); assertTrue(pq.delete(p303)); assertTrue(pq.enqueue(p303)); assertTrue(pq.enqueue(p404)); assertEquals(p101, pq.dequeue()); assertEquals(p202, pq.dequeue()); assertEquals(p303, pq.dequeue()); assertEquals(p404, pq.dequeue()); } @Test public void test05Duplicates() { PriceQueue pq = new PriceQueue(); for (int i = 0; i < 5; i++) assertTrue(pq.enqueue(new Price(i, i))); for (int i = 5; i < 10; i++) { assertFalse(pq.enqueue(new Price(4, 4))); assertTrue(pq.enqueue(new Price(i, i))); } } @Test public void testTiming() { final int SIZE = 1000000; Price[] prices = new Price[SIZE * 2]; for (int i = 0; i < SIZE * 2; i++) prices[i] = new Price(i / 100, i % 100); PriceQueue pq = new PriceQueue(); for (int i = 0; i < SIZE; i++) pq.enqueue(prices[i]); long start1 = System.currentTimeMillis(); for (int i = SIZE / 2; i < SIZE; i++) { pq.delete(prices[i]); pq.enqueue(prices[i]); } long finish1 = System.currentTimeMillis(); long time1 = finish1 - start1; System.out.println("time1 = " + time1); pq = new PriceQueue(); for (int i = 0; i < 2 * SIZE; i++) pq.enqueue(prices[i]); long start2 = System.currentTimeMillis(); for (int i = (3 * SIZE) / 2; i < 2 * SIZE; i++) { pq.delete(prices[i]); pq.enqueue(prices[i]); } long finish2 = System.currentTimeMillis(); long time2 = finish2 - start2; assertFalse(time2 > time1 * 1.5); System.out.println("time2 = " + time2); } }
PriceQueue.java package hw4; import java.util.Iterator; import java.util.NoSuchElementException; import java.util.TreeMap; /** * A Price Queue maintains a sequence of Prices in sorted order. All Prices are * unique. You may not change the Price class in any way. * * A PriceQueue can be created by passing in an iterator over a sequence of * Prices. The PriceQueue will then sort the Prices and remove any duplicates. * * You have to implement the methods of this class. */ public class PriceQueue implements Iterable { private Node first; private Node last; private TreeMap map; private int n; /** * Constructor that takes an iterator over a sequence of Prices and creates a * PriceQueue that contains those Prices in sorted order. Duplicates are * removed. */ public PriceQueue(Iterator prices) { first = null; last = null; map = new TreeMap<>(); n = 0; while (prices.hasNext()) { Price p = prices.next(); if (map.containsKey(p)) { Node node = map.get(p); node.count++; } else { Node node = new Node(p); node.next = first; first = node; map.put(p, node); n++; } } } /** * Return the number of Prices in the Price Queue. This operation must take * constant time. */ public int size() { return n; } /** * Add a new Price p to the Price Queue. This operation must take logarithmic * time. */ public void enqueue(Price p) { if (map.containsKey(p)) { Node node = map.get(p); node.count++; } else { Node node = new Node(p); node.next = first; first = node; map.put(p, node); n++; } } /** * Remove a Price p from the Price Queue. This operation must take logarithmic * time. If there is more than one occurrence of p in the Price Queue, then you * must remove only one of them. */ public void delete(Price p) { if (map.containsKey(p)) { Node node = map.get(p); node.count--; if (node.count == 0) { n--; map.remove(p); } } } /** * Return the Price with the highest priority in the Price Queue. This * operation must take logarithmic time. */ public Price max() { if (first == null) { throw new NoSuchElementException(); } else { return first.p; } } /** * Return the Price with the lowest priority in the Price Queue. This operation * must take logarithmic time. */ public Price min() { if (last == null) { throw new NoSuchElementException(); } else { return last.p; } } /** * Return the number of occurrences of a given Price p in the Price Queue. This * operation must take logarithmic time. */ public int count(Price p) { if (map.containsKey(p)) { return map.get(p).count; } else { return 0; } } /** * Return an iterator over all the Prices in the Price Queue in sorted order. * This operation must take constant time. */ public Iterator iterator() { return new Iterator() { private Node current = first; public boolean hasNext() { return current != null; } public Price next() { if (!hasNext()) throw new NoSuchElementException(); Price p = current.p; current = current.next; return p; } }; } /** * This method is used in JUnit tests. DO NOT REMOVE OR CHANGE THIS METHOD. */ public TreeMap getTreeMap() { return map; } private class Node { private Price p; private Node next; private int count; Node(Price p) { this.p = p; this.next = null; this.count = 1; } } } Price.java package hw4; import java.math.BigDecimal; /** * This class represents a stock price. All Prices are unique and immutable. You * may not change the Price class in any way. */ public final class Price implements Comparable { private final int ticker; private final BigDecimal price; private final int time; /** * Construct a new StockPrice with the given attributes. * * @param ticker the ticker symbol of the stock * @param price the stock price * @param time the time of this price */ public Price(int ticker, BigDecimal price, int time) { this.ticker = ticker; this.price = price; this.time = time; } /** * Return the ticker symbol of this price. * * @return the ticker symbol of this price */ public int getTicker() { return ticker; } /** * Return the stock price as a BigDecimal. * * @return the stock price as a BigDecimal */ public BigDecimal getPrice() { return price; } /** * Return the time of this price. * * @return the time of this price */ public int getTime() { return time; } /** * Compare this price to another price by comparing their times. * * @param that the other price * @return 0 if this time is the same as that time. -1 if this time is before that * time. 1 if this time is after that time. */ @Override public int compareTo(Price that) { if (this.time == that.time) return 0; if (this.time < that.time) return -1; if (this.time > that.time) return 1; return 0; } /** * Compare this price to another price by comparing their times. * * @param that the other price * @return true if this time is the same as that time. false otherwise. */ public boolean equals(Price that) { return this.time == that.time; } /** * Return a hash code for this price. * * @return a hash code for this price. */ @Override public int hashCode() { return time; } /** * Return a string representation of this price. * * @return a string representation of this price */ @Override public String toString() { return "<" + ticker + ", " + price + ", " + time + ">"; } }
Related Book For
Auditing and Assurance services an integrated approach
ISBN: 978-0132575959
14th Edition
Authors: Alvin a. arens, Randal j. elder, Mark s. Beasley
Posted Date: