1   /*
2    * $Id: BPELProcessFactoryTest.java,v 1.1 2004/12/15 14:18:17 patforna Exp $
3    *
4    * Copyright (c) 2004 Patric Fornasier, Pawel Kowalski
5    * Berne University of Applied Sciences
6    * School of Engineering and Information Technology
7    * All rights reserved.
8    */
9   package bexee.model;
10  
11  import java.io.InputStream;
12  
13  import junit.framework.TestCase;
14  import bexee.model.process.BPELProcess;
15  import bexee.util.Constants;
16  
17  /***
18   * @version $Revision: 1.1 $, $Date: 2004/12/15 14:18:17 $
19   * @author Patric Fornasier
20   */
21  public class BPELProcessFactoryTest extends TestCase {
22  
23      private static final String FACTORY_IMPL = "bexee.model.BPELProcessFactoryTest$MockBPELProcessFactory";
24  
25      protected void tearDown() throws Exception {
26          super.tearDown();
27  
28          // make sure to remove that system property again
29          System.getProperties().remove(Constants.OPT_PROCESS_FACTORY);
30      }
31  
32      /***
33       * Test if the factory returns the correct default implementation if no
34       * system property is set.
35       */
36      public void testGetInstance() {
37          BPELProcessFactory factory = BPELProcessFactory.getInstance();
38          assertTrue(factory instanceof BPELProcessFactoryImpl);
39      }
40      
41      /***
42       * Test whether the factory returns the default implementation if an invalid
43       * class name is provided.
44       */
45      public void testWrongClassName()
46      {
47          // set an invalid class name
48          System.setProperty(Constants.OPT_PROCESS_FACTORY, "nonExistingClass");
49          
50          // check if the default implementation is created
51          BPELProcessFactory factory = BPELProcessFactory.getInstance();
52          assertTrue(factory instanceof BPELProcessFactoryImpl);
53      }
54  
55      /***
56       * Test whether the factory returns the right implementation based on a
57       * system property.
58       */
59      public void testGetInstanceBySystemProperty() {
60  
61          // set a different implementation
62          System.setProperty(Constants.OPT_PROCESS_FACTORY, FACTORY_IMPL);
63  
64          BPELProcessFactory factory = BPELProcessFactory.getInstance();
65          assertTrue(factory instanceof BPELProcessFactoryTest.MockBPELProcessFactory);
66      }
67  
68      /***
69       * Mock class extending the <code>BPELProcessFactory</code> for testing.
70       * 
71       * @version $Revision: 1.1 $, $Date: 2004/12/15 14:18:17 $
72       * @author Patric Fornasier
73       */
74      public static class MockBPELProcessFactory extends BPELProcessFactory {
75          /***
76           * Doesn't do anything
77           */
78          public BPELProcess createBPELProcess(InputStream bpelDocumentStream)
79                  throws BPELDocumentException {
80              return null;
81          }
82      }
83  }