/* * Copyright 2011 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.drools.informer; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import junit.framework.Assert; import org.junit.Test; /** * @author Damon Horrell */ public class GroupTest { @Test public void testSetItems() { Group group = new Group(); group.setItems(new String[] { "a", "b", null, "c" }); assertArrayEquals(new String[] { "a", "b", "c" }, group.getItems()); assertEquals("a,b,c", group.getInternalItemsAsString()); } @Test public void testRemoveItems() { Group group = new Group(); group.setItems(new String[] { "a", "b", "c", "d" }); assertEquals("a,b,c,d", group.getInternalItemsAsString()); group.removeItem(null); assertEquals("a,b,c,d", group.getInternalItemsAsString()); group.removeItem("e"); assertEquals("a,b,c,d", group.getInternalItemsAsString()); group.removeItem("c"); assertEquals("a,b,d", group.getInternalItemsAsString()); group.removeItem("d"); assertEquals("a,b", group.getInternalItemsAsString()); group.removeItem("a"); assertEquals("b", group.getInternalItemsAsString()); group.removeItem("b"); Assert.assertNull(group.getInternalItemsAsString()); } @Test public void testRemoveSimilarItems() { Group group = new Group(); group.setItems(new String[] { "hello", "ell", "o", }); assertEquals("hello,ell,o", group.getInternalItemsAsString()); group.removeItem("ell"); assertEquals("hello,o", group.getInternalItemsAsString()); } @Test public void testAddItem() { Group group = new Group(); group.addItem("a"); assertArrayEquals(new String[] { "a" }, group.getItems()); assertEquals("a", group.getInternalItemsAsString()); group.addItem("b"); assertArrayEquals(new String[] { "a", "b" }, group.getItems()); assertEquals("a,b", group.getInternalItemsAsString()); group.addItem(null); assertArrayEquals(new String[] { "a", "b" }, group.getItems()); assertEquals("a,b", group.getInternalItemsAsString()); group.addItem("c"); assertArrayEquals(new String[] { "a", "b", "c" }, group.getItems()); assertEquals("a,b,c", group.getInternalItemsAsString()); } @Test public void testInsertItemBefore() { Group group = new Group(); group.insertItem("b", "c"); assertArrayEquals(new String[] { "b" }, group.getItems()); assertEquals("b", group.getInternalItemsAsString()); group.insertItem("a", "b"); assertArrayEquals(new String[] { "a", "b" }, group.getItems()); assertEquals("a,b", group.getInternalItemsAsString()); group.insertItem("d", "e"); assertArrayEquals(new String[] { "a", "b", "d" }, group.getItems()); assertEquals("a,b,d", group.getInternalItemsAsString()); group.insertItem("e", null); assertArrayEquals(new String[] { "a", "b", "d", "e" }, group.getItems()); assertEquals("a,b,d,e", group.getInternalItemsAsString()); group.insertItem("c", "d"); assertArrayEquals(new String[] { "a", "b", "c", "d", "e" }, group.getItems()); assertEquals("a,b,c,d,e", group.getInternalItemsAsString()); } @Test public void testInsertItemBeforeSimilarNames() { Group group = new Group(); group.setItems(new String[] { "hello", "ell", "o", }); assertEquals("hello,ell,o", group.getInternalItemsAsString()); group.insertItem("a", "ell"); assertEquals("hello,a,ell,o", group.getInternalItemsAsString()); } @Test public void testInsertDuplicateItemBeforeSimilarNames() { Group group = new Group(); group.setItems(new String[] { "hello", "ell", "o", }); assertEquals("hello,ell,o", group.getInternalItemsAsString()); group.insertItem("o", "ell"); assertEquals("hello,o,ell,o", group.getInternalItemsAsString()); group.insertItem("hello", "a"); assertEquals("hello,o,ell,o,hello", group.getInternalItemsAsString()); } @Test public void testAppendItemAfter() { Group group = new Group(); group.appendItem("a", "c"); assertArrayEquals(new String[] { "a" }, group.getItems()); assertEquals("a", group.getInternalItemsAsString()); group.appendItem("b", "a"); assertEquals("a,b", group.getInternalItemsAsString()); group.appendItem("d", "e"); assertEquals("a,b,d", group.getInternalItemsAsString()); group.appendItem("e", null); assertEquals("a,b,d,e", group.getInternalItemsAsString()); group.appendItem("c", "b"); assertEquals("a,b,c,d,e", group.getInternalItemsAsString()); group.appendItem("f", "e"); assertEquals("a,b,c,d,e,f", group.getInternalItemsAsString()); group.appendItem("z", "a"); assertEquals("a,z,b,c,d,e,f", group.getInternalItemsAsString()); } @Test public void testAddDuplicateItem() { Group group = new Group(); group.setItems(new String[] { "a", "b", "c", "d" }); assertEquals("a,b,c,d", group.getInternalItemsAsString()); group.addItem("b"); assertEquals("a,b,c,d,b", group.getInternalItemsAsString()); // try { // // duplicate entry should fail // group.addItem("a"); // fail(); // } catch (IllegalArgumentException e) { // } } @Test public void testAppendItemAfterSimilarNames() { Group group = new Group(); group.setItems(new String[] { "hello", "ell", "o", }); assertEquals("hello,ell,o", group.getInternalItemsAsString()); group.appendItem("a", "ell"); assertEquals("hello,ell,a,o", group.getInternalItemsAsString()); } @Test public void testAppendDuplicateItemAfterSimilarNames() { Group group = new Group(); group.setItems(new String[] { "hello", "ell", "o", }); assertEquals("hello,ell,o", group.getInternalItemsAsString()); group.appendItem("ell", "o"); assertEquals("hello,ell,o,ell", group.getInternalItemsAsString()); group.appendItem("o", "hello"); assertEquals("hello,o,ell,o,ell", group.getInternalItemsAsString()); group.appendItem("hello", "a"); assertEquals("hello,o,ell,o,ell,hello", group.getInternalItemsAsString()); } @SuppressWarnings("deprecation") @Test public void testSetItemsAsString() { Group group = new Group(); group.setItemsAsString("a,b,c"); assertArrayEquals(new String[] { "a", "b", "c" }, group.getItems()); assertEquals("a,b,c", group.getItemsAsString()); } @Test public void testSetItemsContainingComma() { Group group = new Group(); try { group.setItems(new String[] { "a", "b,", "c" }); fail(); } catch (IllegalArgumentException e) { } } @Test public void testAddItemContainingComma() { Group group = new Group(); try { group.addItem("b,"); fail(); } catch (IllegalArgumentException e) { } } @Test public void testInsertItemContainingComma() { Group group = new Group(); try { group.insertItem("a,", "b"); fail(); } catch (IllegalArgumentException e) { } } @Test public void testSetItemsNull() { Group group = new Group(); group.setItems(null); assertArrayEquals(null, group.getItems()); assertEquals(null, group.getInternalItemsAsString()); } @SuppressWarnings("deprecation") @Test public void testSetItemsAsStringNull() { Group group = new Group(); group.setItemsAsString(null); assertArrayEquals(null, group.getItems()); assertEquals(null, group.getItemsAsString()); } @Test public void testSetEmptyItems() { Group group = new Group(); group.setItems(new String[] { "", null, "" }); assertArrayEquals(null, group.getItems()); assertEquals(null, group.getInternalItemsAsString()); } @SuppressWarnings("deprecation") @Test public void testSetEmptyItemsAsString() { Group group = new Group(); group.setItemsAsString(""); assertArrayEquals(null, group.getItems()); assertEquals(null, group.getItemsAsString()); } @Test public void testAddEmptyItem() { Group group = new Group(); group.addItem(""); group.addItem(null); assertArrayEquals(null, group.getItems()); assertEquals(null, group.getInternalItemsAsString()); } @Test public void testInsertEmptyItem() { Group group = new Group(); group.insertItem(null, null); group.insertItem(null, ""); group.insertItem("", null); group.insertItem("", ""); assertArrayEquals(null, group.getItems()); assertEquals(null, group.getInternalItemsAsString()); } }