package net.floodlightcontroller.debugevent; import java.util.ArrayList; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import net.floodlightcontroller.test.FloodlightTestCase; public class CircularBufferTest extends FloodlightTestCase { CircularBuffer<String> cb; protected static Logger log = LoggerFactory.getLogger(CircularBufferTest.class); @Test public void testCircularNature() { cb = new CircularBuffer<String>(2); cb.add("String 1"); assertEquals(1, cb.size()); cb.add("String 2"); assertEquals(2, cb.size()); cb.add("String 3"); assertEquals(2, cb.size()); for (String s : cb) { assertEquals(false, s.contains("1")); } } class Elems { String str; Boolean boo; public Elems(String s,boolean b) { this.str = s; this.boo = b; } } @Test public void testAdd() { CircularBuffer<Elems> eb = new CircularBuffer<Elems>(2); Elems theone = new Elems("String 1", false); Elems ret1 = eb.add(theone); assertEquals(null, ret1); Elems ret2 = eb.add(new Elems("String 2", true)); assertEquals(null, ret2); Elems ret3 = eb.add(new Elems("String 3", true)); // We want to see if what is returned is a reference to the original object // 'theone'. So we use '==' to compare the references assertEquals(true, ret3 == theone); log.info("{} {}", ret3, theone); } @Test public void testAddAll() { CircularBuffer<Elems> eb = new CircularBuffer<Elems>(2); Elems one = new Elems("String 1", false); eb.add(one); ArrayList<Elems> elist = new ArrayList<Elems>(); Elems two = new Elems("String 2", true); elist.add(two); Elems three = new Elems("String 3", true); elist.add(three); Elems four = new Elems("String 4", true); elist.add(four); ArrayList<Elems> retlist = eb.addAll(elist, 2); assertEquals(null, retlist.get(0)); assertEquals(true, retlist.get(1) == one); assertEquals(true, retlist.get(2) == four); ArrayList<Elems> retlist2 = eb.addAll(retlist, 3); assertEquals(null, retlist2.get(0)); assertEquals(true, retlist2.get(1) == two); assertEquals(true, retlist2.get(2) == three); ArrayList<Elems> retlist3 = eb.addAll(retlist2, 4); assertEquals(retlist3, retlist2); } }