001: package org.apache.velocity.test;
002:
003: /*
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021:
022: import java.io.BufferedWriter;
023: import java.io.FileOutputStream;
024: import java.io.OutputStreamWriter;
025: import java.io.Writer;
026:
027: import junit.framework.Test;
028:
029: import org.apache.velocity.Template;
030: import org.apache.velocity.VelocityContext;
031: import org.apache.velocity.app.Velocity;
032: import org.apache.velocity.runtime.RuntimeSingleton;
033: import org.apache.velocity.runtime.log.NullLogChute;
034:
035: /**
036: * Test use of an absolute path with the FileResourceLoader
037: *
038: * @author <a href="mailto:wglass@apache.org">Will Glass-Husain</a>
039: * @version $Id: AbsoluteFileResourceLoaderTestCase.java 477002 2006-11-20 01:07:43Z henning $
040: */
041: public class AbsoluteFileResourceLoaderTestCase extends BaseTestCase {
042: /**
043: * VTL file extension.
044: */
045: private static final String TMPL_FILE_EXT = "vm";
046:
047: /**
048: * Comparison file extension.
049: */
050: private static final String CMP_FILE_EXT = "cmp";
051:
052: /**
053: * Comparison file extension.
054: */
055: private static final String RESULT_FILE_EXT = "res";
056:
057: /**
058: * Path to template file. This will get combined with the
059: * application directory to form an absolute path
060: */
061: private final static String TEMPLATE_PATH = TEST_COMPARE_DIR
062: + "/absolute/absolute";
063:
064: /**
065: * Results relative to the build directory.
066: */
067: private static final String RESULTS_DIR = TEST_RESULT_DIR
068: + "/absolute/results";
069:
070: /**
071: * Results relative to the build directory.
072: */
073: private static final String COMPARE_DIR = TEST_COMPARE_DIR
074: + "/absolute/compare";
075:
076: /**
077: * Default constructor.
078: */
079: AbsoluteFileResourceLoaderTestCase() {
080: super ("AbsoluteFileResourceLoaderTest");
081:
082: try {
083: assureResultsDirectoryExists(RESULTS_DIR);
084:
085: // signify we want to use an absolute path
086: Velocity
087: .addProperty(Velocity.FILE_RESOURCE_LOADER_PATH, "");
088:
089: Velocity.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM_CLASS,
090: NullLogChute.class.getName());
091:
092: Velocity.init();
093: } catch (Exception e) {
094: fail("Cannot setup AbsoluteFileResourceLoaderTest!");
095: }
096: }
097:
098: public static Test suite() {
099: return new AbsoluteFileResourceLoaderTestCase();
100: }
101:
102: /**
103: * Runs the test.
104: */
105: public void runTest() {
106: try {
107:
108: String curdir = System.getProperty("user.dir");
109: String f = getFileName(curdir, TEMPLATE_PATH, TMPL_FILE_EXT);
110:
111: System.out.println("Retrieving template at absolute path: "
112: + f);
113:
114: Template template1 = RuntimeSingleton.getTemplate(f);
115:
116: FileOutputStream fos1 = new FileOutputStream(getFileName(
117: RESULTS_DIR, "absolute", RESULT_FILE_EXT));
118:
119: Writer writer1 = new BufferedWriter(new OutputStreamWriter(
120: fos1));
121:
122: /*
123: * put the Vector into the context, and merge both
124: */
125: VelocityContext context = new VelocityContext();
126:
127: template1.merge(context, writer1);
128: writer1.flush();
129: writer1.close();
130:
131: if (!isMatch(RESULTS_DIR, COMPARE_DIR, "absolute",
132: RESULT_FILE_EXT, CMP_FILE_EXT)) {
133: fail("Output incorrect.");
134: }
135: } catch (Exception e) {
136: fail(e.getMessage());
137: }
138: }
139: }
|