1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.jxpath.ri.model.beans;
19
20 import static org.junit.jupiter.api.Assertions.assertInstanceOf;
21 import static org.junit.jupiter.api.Assertions.assertThrows;
22
23 import java.util.HashMap;
24 import java.util.Map;
25
26 import org.apache.commons.jxpath.AbstractFactory;
27 import org.apache.commons.jxpath.JXPathAbstractFactoryException;
28 import org.apache.commons.jxpath.JXPathContext;
29 import org.apache.commons.jxpath.JXPathException;
30 import org.apache.commons.jxpath.Pointer;
31 import org.junit.jupiter.api.BeforeEach;
32 import org.junit.jupiter.api.Test;
33
34
35
36
37 public class BadlyImplementedFactoryTest {
38
39 private JXPathContext context;
40
41 @BeforeEach
42 public void setUp() {
43 context = JXPathContext.newContext(new HashMap());
44 context.setFactory(new AbstractFactory() {
45
46 @Override
47 public boolean createObject(final JXPathContext context, final Pointer pointer, final Object parent, final String name, final int index) {
48 ((Map) parent).put(name, null);
49 return true;
50 }
51 });
52 }
53
54 @Test
55 public void testBadFactoryImplementation() {
56 final JXPathException e = assertThrows(JXPathException.class, () -> context.createPath("foo/bar"),
57 "should fail with JXPathException caused by JXPathAbstractFactoryException");
58 assertInstanceOf(JXPathAbstractFactoryException.class, e.getCause());
59 }
60 }