    1   /*
    2    * Copyright (c) 2003
    3    * Information Desire GmbH
    4    * All rights reserved.
    5    */
    6   package com.infodesire.infobit;
    7
    8   import junit.framework.TestCase;
    9   import junit.framework.TestSuite;
    10
    11  import org.apache.commons.logging.Log;
    12  import org.apache.commons.logging.LogFactory;
    13
    14  import java.util.ArrayList;
    15  import java.util.HashMap;
    16  import java.util.HashSet;
    17  import java.util.Iterator;
    18  import java.util.List;
    19  import java.util.Map;
    20  import java.util.Set;
    21  import java.util.Properties;
    22  import java.util.Collections;
    23
    24  import com.infodesire.infobit.data.Infobit;
    25  import com.infodesire.infobit.data.Acl;
    26  import com.infodesire.infobit.data.Version;
    27  import com.infodesire.infobit.data.Content;
    28  import com.infodesire.infobit.data.Script;
    29  import com.infodesire.infobit.data.Template;
    30  import com.infodesire.infobit.data.TextContent;
    31
    32  import com.infodesire.infobit.render.velocity.ServletVelocityRenderer;
    33
    34  import java.io.StringWriter;
    35  import java.io.OutputStreamWriter;
    36  import java.io.InputStream;
    37
    38  /***
    39   * test cases for infobit templates
    40   *
    41   * @author    peter2
    42   * @created   August 21, 2003
    43   * @version   $Revision: 1.11 $
    44   */
    45  public class TemplateTest extends TestCase {
    46      // Cannot derive from InfobitTestBase because _configuration is needed
    47      // in constructor.
    48
    49      private static Log _log = LogFactory.getLog(TemplateTest.class);
    50      private final static String TEMPLATE_VERSION = "template_one";
    51      private final static String TEMPLATE_TEXT =
    52          "This text links #fuck #infobit($target_one), #infobit($target_two) and #infobit($target_three).";
    53      private final static String SCRIPT_VERSION = "script_one";
    54
    55      private final static String DEEP_TEMPLATE = "{#infobit($one)|#infobit($two)|#infobit($three)|#infobit($four)|#infobit($five)|#infobit($six)|#infobit($seven)|#infobit($eight)|#infobit($nine)|#infobit($ten)}";
    56      private static String[] DEEP_LINKS = {"one", "two", "three", "four",
    57          "five", "six", "seven", "eight", "nine", "ten"};
    58
    59      /***
    60       * The configuration applicable for the test case
    61       */
    62      protected InfobitConfiguration _configuration;
    63
    64      InfobitPool     _pool;
    65      Acl             _defaultAcl;
    66      InfobitManager  _manager;
    67
    68
    69      /***
    70       * Constructor for the TemplateTest object
    71       *
    72       * @param name           ID of the testcase
    73       * @exception Exception  Generic failure
    74       */
    75      public TemplateTest(String name) throws Exception {
    76          super(name);
    77      }
    78
    79
    80      /***
    81       * The JUnit setup method
    82       *
    83       * @exception Exception  Description of Exception
    84       */
    85      public void setUp() throws Exception {
    86          super.setUp();
    87          _configuration = new InfobitConfiguration("infobit-config.xml");
    88
    89          _pool = _configuration.getPool("pool_one");
    90          _defaultAcl = _configuration.getPool("superuser_pool").getAclManager().createAcl("default");
    91          _manager = _pool.getInfobitManager();
    92
    93      }
    94
    95
    96
    97      /***
    98       * A unit test for JUnit
    99       *
    100      * @exception Exception  Description of Exception
    101      */
    102     public void testTemplateRendering() throws Exception {
    103
    104         String tid = "DE1213434545677";
    105         Infobit templateIbit = _manager.createInfobit(tid, _defaultAcl);
    106         _manager.setActualVersion(templateIbit, _manager.createTemplate(templateIbit, TEMPLATE_VERSION,
    107             TEMPLATE_TEXT));
    108         Set keywords = new HashSet();
    109
    110         Infobit targetOne = _manager.createInfobit("TG001", _defaultAcl);
    111         _manager.setActualVersion(targetOne, _manager.createText(targetOne, "1.0", "Target One", keywords));
    112
    113         Infobit targetTwo = _manager.createInfobit("TG002", _defaultAcl);
    114         _manager.setActualVersion(targetTwo, _manager.createText(targetTwo, "1.0", "Target Two", keywords));
    115
    116         Infobit targetThree = _manager.createInfobit("TG003", _defaultAcl);
    117         _manager.setActualVersion(targetThree, _manager.createText(targetThree, "1.0", "Target Three", keywords));
    118
    119         HashMap links = new HashMap();
    120         links.put("target_one", targetOne);
    121         links.put("target_two", targetTwo);
    122         links.put("target_three", targetThree);
    123
    124         String sid = "SI12345";
    125         Infobit scriptInfobit = _manager.createInfobit(sid, _defaultAcl);
    126
    127         _manager.setActualVersion(scriptInfobit, _manager.createScript(scriptInfobit, SCRIPT_VERSION, templateIbit,
    128             links, keywords));
    129         _pool.flush();
    130
    131         ServletVelocityRenderer vr = new ServletVelocityRenderer();
    132
    133         vr.setManager(_manager);
    134         vr.init(new Properties());
    135
    136         StringWriter sw = new StringWriter();
    137         vr.render("SI12345", sw, null);
    138         sw.flush();
    139         System.out.println("|" + sw.toString() + "|");
    140         assertEquals(sw.toString(), "This text links #fuck Target One, Target Two and Target Three.");
    141     }
    142
    143
    144
    145     /***
    146      * A unit test for JUnit
    147      *
    148      * @exception Exception  Description of Exception
    149      */
    150     public void testBigTemplate() throws Exception {
    151
    152         Infobit ibitI;
    153         Infobit ibitJ;
    154         Infobit ibitK;
    155         Infobit start;
    156         HashSet keywords = new HashSet();
    157
    158         long now = System.currentTimeMillis();
    159
    160         Infobit template = _manager.createInfobit("temp", _defaultAcl);
    161         _manager.setActualVersion(template, _manager.createTemplate(template, "blurge", DEEP_TEMPLATE));
    162
    163         start = _manager.createInfobit("start", _defaultAcl);
    164         HashMap imap = new HashMap();
    165         for (int i = 0; i < DEEP_LINKS.length; i++) {
    166             HashMap jmap = new HashMap();
    167             for (int j = 0; j < DEEP_LINKS.length; j++) {
    168                 HashMap kmap = new HashMap();
    169                 for (int k = 0; k < DEEP_LINKS.length; k++) {
    170                     ibitK = _manager.createInfobit("ijk" + (i * 100 + j * 10 + k), _defaultAcl);
    171                     _manager.setActualVersion(ibitK, _manager.createText(ibitK, "blurge", "{ijk" + (i * 100 + j * 10 + k) + "}", keywords));
    172                     kmap.put(DEEP_LINKS[k], ibitK);
    173                 }
    174                 ibitJ = _manager.createInfobit("ij" + (i * 10 + j), _defaultAcl);
    175                 _manager.setActualVersion(ibitJ, _manager.createScript(ibitJ, "blam", template, kmap, keywords));
    176                 jmap.put(DEEP_LINKS[j], ibitJ);
    177
    178             }
    179             ibitI = _manager.createInfobit("i" + i, _defaultAcl);
    180             _manager.setActualVersion(ibitI, _manager.createScript(ibitI, "blam", template, jmap, keywords));
    181             imap.put(DEEP_LINKS[i], ibitI);
    182         }
    183         _manager.setActualVersion(start, _manager.createScript(start, "blam", template, imap, keywords));
    184         _pool.flush();
    185         now = System.currentTimeMillis() - now;
    186         _log.info("creating 1110 infobits took : " + now + "msec");
    187         OutputStreamWriter bw = new OutputStreamWriter(System.out);
    188         ServletVelocityRenderer vr = new ServletVelocityRenderer();
    189         vr.setManager(_manager);
    190         vr.init(new Properties());
    191
    192         now = System.currentTimeMillis();
    193         vr.render("start", bw, null);
    194         bw.flush();
    195         now = System.currentTimeMillis() - now;
    196         _log.info("rendering 1110 infobits took : " + now + "msec");
    197     }
    198
    199
    200     /***
    201      * test template rendering of binary infobits
    202      *
    203      * @exception Exception  Description of Exception
    204      */
    205     public void testBinaryInfobitRendering() throws Exception {
    206         Infobit ib = _manager.createInfobit("binary_test", _defaultAcl);
    207         String dataPath = "/com/infodesire/infobit/external/undo.pbm";
    208         InputStream data = getClass().getResourceAsStream(dataPath);
    209         _manager.setActualVersion(ib, _manager.createBinary(ib, "blurge", data, "image/pnm", Collections.EMPTY_SET));
    210         Content content = ib.getActualVersion().getContent();
    211         _manager.setAttribute(content, "width", "120");
    212         _manager.setAttribute(content, "height", "230");
    213         _pool.flush();
    214         // setup rendering
    215         HashMap map = new HashMap();
    216         map.put("_infobit_binary_prefix", "/foo/bar/baz");
    217         map.put("_session_id", "1234567890");
    218         ServletVelocityRenderer vr = new ServletVelocityRenderer();
    219         vr.setManager(_manager);
    220         vr.init(new Properties());
    221
    222         StringWriter sw = new StringWriter();
    223
    224         vr.render("binary_test", sw, map);
    225
    226         sw.flush();
    227         System.out.println("|" + sw.toString() + "|");
    228     }
    229
    230 }
    231

This page was automatically generated by Maven