/* * 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 org.apache.commons.jxpath.ri.axes; import org.apache.commons.jxpath.JXPathContext; import org.apache.commons.jxpath.JXPathTestCase; /** * Test for the protection mechanism that stops infinite recursion * in descent down a recursive graph. */ public class RecursiveAxesTest extends JXPathTestCase { private RecursiveBean bean; private JXPathContext context; protected void setUp() throws Exception { bean = new RecursiveBean("zero"); RecursiveBean bean1 = new RecursiveBean("one"); RecursiveBean bean2 = new RecursiveBean("two"); RecursiveBean bean3 = new RecursiveBean("three"); bean.setFirst(bean1); bean1.setFirst(bean2); bean2.setFirst(bean1); bean2.setSecond(bean3); context = JXPathContext.newContext(null, bean); } public void testInfiniteDescent() { // Existing scalar property assertXPathPointer( context, "//.[name = 'three']", "/first/first/second"); } }