blob: e03ed043b101c2f3b51f3a3fccf4be269889fe5e [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package freemarker.ext.dom;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import org.junit.Before;
import org.junit.Test;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import freemarker.template.TemplateException;
import freemarker.test.TemplateTest;
public class DOMSiblingTest extends TemplateTest {
@Before
public void setUp() throws SAXException, IOException, ParserConfigurationException {
InputSource is = new InputSource(getClass().getResourceAsStream("DOMSiblingTest.xml"));
addToDataModel("doc", NodeModel.parse(is));
}
@Test
public void testBlankPreviousSibling() throws IOException, TemplateException {
assertOutput("${doc.person.name?previousSibling}", "\n ");
assertOutput("${doc.person.name?previous_sibling}", "\n ");
}
@Test
public void testNonBlankPreviousSibling() throws IOException, TemplateException {
assertOutput("${doc.person.address?previousSibling}", "12th August");
}
@Test
public void testBlankNextSibling() throws IOException, TemplateException {
assertOutput("${doc.person.name?nextSibling}", "\n ");
assertOutput("${doc.person.name?next_sibling}", "\n ");
}
@Test
public void testNonBlankNextSibling() throws IOException, TemplateException {
assertOutput("${doc.person.dob?nextSibling}", "Chennai, India");
}
@Test
public void testNullPreviousSibling() throws IOException, TemplateException {
assertOutput("${doc.person?previousSibling?? ?c}", "false");
}
@Test
public void testSignificantPreviousSibling() throws IOException, TemplateException {
assertOutput("${doc.person.name.@@previous_sibling_element}", "male");
}
@Test
public void testSignificantNextSibling() throws IOException, TemplateException {
assertOutput("${doc.person.name.@@next_sibling_element}", "12th August");
}
@Test
public void testNullSignificantPreviousSibling() throws IOException, TemplateException {
assertOutput("${doc.person.phone.@@next_sibling_element?size}", "0");
}
@Test
public void testSkippingCommentNode() throws IOException, TemplateException {
assertOutput("${doc.person.profession.@@previous_sibling_element}", "Chennai, India");
}
@Test
public void testSkippingEmptyCDataNode() throws IOException, TemplateException {
assertOutput("${doc.person.hobby.@@previous_sibling_element}", "Software Engineer");
}
@Test
public void testValidCDataNode() throws IOException, TemplateException {
assertOutput("${doc.person.phone.@@previous_sibling_element?size}", "0");
}
}