1 /* 2 * [The "BSD license"] 3 * Copyright (c) 2010 Terence Parr 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 3. The name of the author may not be used to endorse or promote products 15 * derived from this software without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 package org.antlr.test; 29 30 import org.antlr.runtime.misc.FastQueue; 31 import org.junit.Test; 32 33 import java.util.NoSuchElementException; 34 35 import static org.junit.Assert.assertEquals; 36 37 public class TestFastQueue { testQueueNoRemove()38 @Test public void testQueueNoRemove() throws Exception { 39 FastQueue<String> q = new FastQueue<String>(); 40 q.add("a"); 41 q.add("b"); 42 q.add("c"); 43 q.add("d"); 44 q.add("e"); 45 String expecting = "a b c d e"; 46 String found = q.toString(); 47 assertEquals(expecting, found); 48 } 49 testQueueThenRemoveAll()50 @Test public void testQueueThenRemoveAll() throws Exception { 51 FastQueue<String> q = new FastQueue<String>(); 52 q.add("a"); 53 q.add("b"); 54 q.add("c"); 55 q.add("d"); 56 q.add("e"); 57 StringBuffer buf = new StringBuffer(); 58 while ( q.size()>0 ) { 59 String o = q.remove(); 60 buf.append(o); 61 if ( q.size()>0 ) buf.append(" "); 62 } 63 assertEquals("queue should be empty", 0, q.size()); 64 String expecting = "a b c d e"; 65 String found = buf.toString(); 66 assertEquals(expecting, found); 67 } 68 testQueueThenRemoveOneByOne()69 @Test public void testQueueThenRemoveOneByOne() throws Exception { 70 StringBuffer buf = new StringBuffer(); 71 FastQueue<String> q = new FastQueue<String>(); 72 q.add("a"); 73 buf.append(q.remove()); 74 q.add("b"); 75 buf.append(q.remove()); 76 q.add("c"); 77 buf.append(q.remove()); 78 q.add("d"); 79 buf.append(q.remove()); 80 q.add("e"); 81 buf.append(q.remove()); 82 assertEquals("queue should be empty", 0, q.size()); 83 String expecting = "abcde"; 84 String found = buf.toString(); 85 assertEquals(expecting, found); 86 } 87 88 // E r r o r s 89 testGetFromEmptyQueue()90 @Test public void testGetFromEmptyQueue() throws Exception { 91 FastQueue<String> q = new FastQueue<String>(); 92 String msg = null; 93 try { q.remove(); } 94 catch (NoSuchElementException nsee) { 95 msg = nsee.getMessage(); 96 } 97 String expecting = "queue index 0 > last index -1"; 98 String found = msg; 99 assertEquals(expecting, found); 100 } 101 testGetFromEmptyQueueAfterSomeAdds()102 @Test public void testGetFromEmptyQueueAfterSomeAdds() throws Exception { 103 FastQueue<String> q = new FastQueue<String>(); 104 q.add("a"); 105 q.add("b"); 106 q.remove(); 107 q.remove(); 108 String msg = null; 109 try { q.remove(); } 110 catch (NoSuchElementException nsee) { 111 msg = nsee.getMessage(); 112 } 113 String expecting = "queue index 0 > last index -1"; 114 String found = msg; 115 assertEquals(expecting, found); 116 } 117 testGetFromEmptyQueueAfterClear()118 @Test public void testGetFromEmptyQueueAfterClear() throws Exception { 119 FastQueue<String> q = new FastQueue<String>(); 120 q.add("a"); 121 q.add("b"); 122 q.clear(); 123 String msg = null; 124 try { q.remove(); } 125 catch (NoSuchElementException nsee) { 126 msg = nsee.getMessage(); 127 } 128 String expecting = "queue index 0 > last index -1"; 129 String found = msg; 130 assertEquals(expecting, found); 131 } 132 } 133