Home | History | Annotate | Download | only in slf4j
      1 /**
      2  * Copyright (c) 2004-2011 QOS.ch
      3  * All rights reserved.
      4  *
      5  * Permission is hereby granted, free  of charge, to any person obtaining
      6  * a  copy  of this  software  and  associated  documentation files  (the
      7  * "Software"), to  deal in  the Software without  restriction, including
      8  * without limitation  the rights to  use, copy, modify,  merge, publish,
      9  * distribute,  sublicense, and/or sell  copies of  the Software,  and to
     10  * permit persons to whom the Software  is furnished to do so, subject to
     11  * the following conditions:
     12  *
     13  * The  above  copyright  notice  and  this permission  notice  shall  be
     14  * included in all copies or substantial portions of the Software.
     15  *
     16  * THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
     17  * EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
     18  * MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
     19  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
     20  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
     21  * OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
     22  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     23  *
     24  */
     25 package org.slf4j;
     26 
     27 import java.util.Iterator;
     28 
     29 import junit.framework.TestCase;
     30 
     31 import org.slf4j.helpers.BasicMarkerFactory;
     32 
     33 /**
     34  * Unit test BasicMarker
     35  *
     36  * @author Ceki Gülcü
     37  * @author Joern Huxhorn
     38  */
     39 public class BasicMarkerTest extends TestCase {
     40     static final String BLUE_STR = "BLUE";
     41     static final String RED_STR = "RED";
     42     static final String GREEN_STR = "GREEN";
     43     static final String COMP_STR = "COMP";
     44     static final String MULTI_COMP_STR = "MULTI_COMP";
     45     static final String PARENT_MARKER_STR = "PARENT_MARKER";
     46     static final String CHILD_MARKER_STR = "CHILD_MARKER";
     47     static final String NOT_CONTAINED_MARKER_STR = "NOT_CONTAINED";
     48 
     49     final IMarkerFactory factory;
     50     final Marker blue;
     51     final Marker red;
     52     final Marker green;
     53     final Marker comp;
     54     final Marker multiComp;
     55 
     56     short diff = Differentiator.getDiffentiator();
     57 
     58     public BasicMarkerTest() {
     59         factory = new BasicMarkerFactory();
     60 
     61         blue = factory.getMarker(BLUE_STR);
     62         red = factory.getMarker(RED_STR);
     63         green = factory.getMarker(GREEN_STR);
     64         comp = factory.getMarker(COMP_STR);
     65         comp.add(blue);
     66 
     67         multiComp = factory.getMarker(MULTI_COMP_STR);
     68         multiComp.add(green);
     69         multiComp.add(comp);
     70     }
     71 
     72     public void testPrimitive() {
     73         assertEquals(BLUE_STR, blue.getName());
     74         assertTrue(blue.contains(blue));
     75 
     76         Marker blue2 = factory.getMarker(BLUE_STR);
     77         assertEquals(BLUE_STR, blue2.getName());
     78         assertEquals(blue, blue2);
     79         assertTrue(blue.contains(blue2));
     80         assertTrue(blue2.contains(blue));
     81     }
     82 
     83     public void testPrimitiveByName() {
     84         assertTrue(blue.contains(BLUE_STR));
     85     }
     86 
     87     public void testComposite() {
     88         assertTrue(comp.contains(comp));
     89         assertTrue(comp.contains(blue));
     90     }
     91 
     92     public void testCompositeByName() {
     93         assertTrue(comp.contains(COMP_STR));
     94         assertTrue(comp.contains(BLUE_STR));
     95     }
     96 
     97     public void testMultiComposite() {
     98         assertTrue(multiComp.contains(comp));
     99         assertTrue(multiComp.contains(blue));
    100         assertTrue(multiComp.contains(green));
    101         assertFalse(multiComp.contains(red));
    102     }
    103 
    104     public void testMultiCompositeByName() {
    105         assertTrue(multiComp.contains(COMP_STR));
    106         assertTrue(multiComp.contains(BLUE_STR));
    107         assertTrue(multiComp.contains(GREEN_STR));
    108         assertFalse(multiComp.contains(RED_STR));
    109     }
    110 
    111     public void testMultiAdd() {
    112         Marker parent = factory.getMarker(PARENT_MARKER_STR);
    113         Marker child = factory.getMarker(CHILD_MARKER_STR);
    114         for (int i = 0; i < 10; i++) {
    115             parent.add(child);
    116         }
    117 
    118         // check that the child was added once and only once
    119         Iterator<Marker> iterator = parent.iterator();
    120         assertTrue(iterator.hasNext());
    121         assertEquals(CHILD_MARKER_STR, iterator.next().toString());
    122         assertFalse(iterator.hasNext());
    123     }
    124 
    125     public void testAddRemove() {
    126         final String NEW_PREFIX = "NEW_";
    127         Marker parent = factory.getMarker(NEW_PREFIX + PARENT_MARKER_STR);
    128         Marker child = factory.getMarker(NEW_PREFIX + CHILD_MARKER_STR);
    129         assertFalse(parent.contains(child));
    130         assertFalse(parent.contains(NEW_PREFIX + CHILD_MARKER_STR));
    131         assertFalse(parent.remove(child));
    132 
    133         parent.add(child);
    134 
    135         assertTrue(parent.contains(child));
    136         assertTrue(parent.contains(NEW_PREFIX + CHILD_MARKER_STR));
    137 
    138         assertTrue(parent.remove(child));
    139 
    140         assertFalse(parent.contains(child));
    141         assertFalse(parent.contains(NEW_PREFIX + CHILD_MARKER_STR));
    142         assertFalse(parent.remove(child));
    143     }
    144 
    145     public void testSelfRecursion() {
    146         final String diffPrefix = "NEW_" + diff;
    147         final String PARENT_NAME = diffPrefix + PARENT_MARKER_STR;
    148         final String NOT_CONTAINED_NAME = diffPrefix + NOT_CONTAINED_MARKER_STR;
    149         Marker parent = factory.getMarker(PARENT_NAME);
    150         Marker notContained = factory.getMarker(NOT_CONTAINED_NAME);
    151         parent.add(parent);
    152         assertTrue(parent.contains(parent));
    153         assertTrue(parent.contains(PARENT_NAME));
    154         assertFalse(parent.contains(notContained));
    155         assertFalse(parent.contains(NOT_CONTAINED_MARKER_STR));
    156     }
    157 
    158     public void testIndirectRecursion() {
    159         final String diffPrefix = "NEW_" + diff;
    160         final String PARENT_NAME = diffPrefix + PARENT_MARKER_STR;
    161         final String CHILD_NAME = diffPrefix + CHILD_MARKER_STR;
    162         final String NOT_CONTAINED_NAME = diffPrefix + NOT_CONTAINED_MARKER_STR;
    163 
    164         Marker parent = factory.getMarker(PARENT_NAME);
    165         Marker child = factory.getMarker(CHILD_NAME);
    166         Marker notContained = factory.getMarker(NOT_CONTAINED_NAME);
    167 
    168         parent.add(child);
    169         child.add(parent);
    170         assertTrue(parent.contains(parent));
    171         assertTrue(parent.contains(child));
    172         assertTrue(parent.contains(PARENT_NAME));
    173         assertTrue(parent.contains(CHILD_NAME));
    174         assertFalse(parent.contains(notContained));
    175         assertFalse(parent.contains(NOT_CONTAINED_MARKER_STR));
    176     }
    177 
    178     public void testHomonyms() {
    179         final String diffPrefix = "homonym" + diff;
    180         final String PARENT_NAME = diffPrefix + PARENT_MARKER_STR;
    181         final String CHILD_NAME = diffPrefix + CHILD_MARKER_STR;
    182         Marker parent = factory.getMarker(PARENT_NAME);
    183         Marker child = factory.getMarker(CHILD_NAME);
    184         parent.add(child);
    185 
    186         IMarkerFactory otherFactory = new BasicMarkerFactory();
    187         Marker otherParent = otherFactory.getMarker(PARENT_NAME);
    188         Marker otherChild = otherFactory.getMarker(CHILD_NAME);
    189 
    190         assertTrue(parent.contains(otherParent));
    191         assertTrue(parent.contains(otherChild));
    192 
    193         assertTrue(parent.remove(otherChild));
    194     }
    195 
    196 }
    197