samples/aserverinfo/test/org/apidesign/aserverinfo/test/MagicalBagFactoryTest.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 15 Nov 2008 08:25:52 +0100
changeset 295 d6fa728fb2ba
child 340 9c1a298e51a9
permissions -rw-r--r--
Tests for magical bag - e.g. overuse of lookup
     1 package org.apidesign.aserverinfo.test;
     2 
     3 import java.net.MalformedURLException;
     4 import java.net.URL;
     5 import org.apidesign.aserverinfo.magicalbagfactory.ServerConnector;
     6 import org.apidesign.aserverinfo.spi.NameProvider;
     7 import org.apidesign.aserverinfo.spi.ResetHandler;
     8 import org.apidesign.aserverinfo.spi.URLProvider;
     9 import org.junit.After;
    10 import org.junit.Before;
    11 import org.junit.Test;
    12 import static org.junit.Assert.*;
    13 import org.openide.util.Exceptions;
    14 import org.openide.util.Lookup;
    15 import org.openide.util.lookup.AbstractLookup;
    16 import org.openide.util.lookup.InstanceContent;
    17 
    18 public class MagicalBagFactoryTest {
    19 
    20     public MagicalBagFactoryTest() {
    21     }
    22 
    23     @Before
    24     public void setUp() {
    25     }
    26 
    27     @After
    28     public void tearDown() {
    29     }
    30 
    31     @Test
    32     public void showUseOfMagicalBagFactory() throws Exception {
    33         Prov provider = new Prov();
    34         ServerConnector inf;
    35 
    36         // BEGIN: ServerConnector.magicalbag.creation
    37         InstanceContent magicalContent = new InstanceContent();
    38         Lookup magicalBag = new AbstractLookup(magicalContent);
    39         magicalContent.add(provider);
    40         
    41         inf = ServerConnector.create(magicalBag);
    42         // END: ServerConnector.magicalbag.creation
    43         
    44         assertEquals("API Design Server", inf.getName());
    45         assertEquals("http://www.apidesign.org", inf.getURL().toExternalForm());
    46         inf.reset();
    47         assertEquals("Once reset", 1, provider.resets);
    48 
    49         provider.resets = 0;
    50         // BEGIN: ServerConnector.magicalbag.change
    51         magicalContent.remove(provider);
    52         inf.reset();
    53         assertEquals("No reset called now", 0, provider.resets);
    54         // END: ServerConnector.magicalbag.change
    55     }
    56     
    57     private static class Prov implements NameProvider, URLProvider, ResetHandler {
    58         int resets;
    59 
    60         public String getName() {
    61             return "API Design Server";
    62         }
    63 
    64         public URL getURL() {
    65             try {
    66                 return new URL("http://www.apidesign.org");
    67             } catch (MalformedURLException ex) {
    68                 Exceptions.printStackTrace(ex);
    69                 return null;
    70             }
    71         }
    72 
    73         public void reset() {
    74             resets++;
    75         }
    76 
    77     }
    78         
    79 }