You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

FONodeMocks.java 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /*
  2. * Licensed to the Apache Software Foundation (ASF) under one or more
  3. * contributor license agreements. See the NOTICE file distributed with
  4. * this work for additional information regarding copyright ownership.
  5. * The ASF licenses this file to You under the Apache License, Version 2.0
  6. * (the "License"); you may not use this file except in compliance with
  7. * the License. You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. /* $Id$ */
  18. package org.apache.fop.fo;
  19. import java.io.IOException;
  20. import static org.mockito.Matchers.any;
  21. import static org.mockito.Matchers.anyString;
  22. import static org.mockito.Mockito.mock;
  23. import static org.mockito.Mockito.when;
  24. import org.apache.xmlgraphics.image.loader.ImageException;
  25. import org.apache.xmlgraphics.image.loader.ImageManager;
  26. import org.apache.xmlgraphics.image.loader.ImageSessionContext;
  27. import org.apache.fop.apps.FOUserAgent;
  28. import org.apache.fop.events.EventBroadcaster;
  29. import org.apache.fop.fo.flow.table.ColumnNumberManager;
  30. import org.apache.fop.fo.flow.table.ColumnNumberManagerHolder;
  31. /**
  32. * A helper class for creating mocks of {@link FONode} and its descendants.
  33. */
  34. public final class FONodeMocks {
  35. private FONodeMocks() { }
  36. /**
  37. * Creates and returns a mock {@link FONode} configured with a mock
  38. * {@link FOEventHandler}. The FO event handler returns a mock {@link FOUserAgent},
  39. * which in turn returns a mock {@link org.apache.fop.apps.FopFactory}, which returns a mock
  40. * {@link ImageManager}.
  41. *
  42. * @return a mock FO node
  43. */
  44. public static FONode mockFONode() {
  45. FONode mockFONode = mock(FONode.class);
  46. mockGetFOEventHandler(mockFONode);
  47. mockGetImageManager(mockFONode.getFOEventHandler().getUserAgent());
  48. return mockFONode;
  49. }
  50. public static FOEventHandler mockGetFOEventHandler(FONode mockFONode) {
  51. FOEventHandler mockFOEventHandler = mock(FOEventHandler.class);
  52. mockGetUserAgent(mockFOEventHandler);
  53. when(mockFONode.getFOEventHandler()).thenReturn(mockFOEventHandler);
  54. return mockFOEventHandler;
  55. }
  56. public static FOUserAgent mockGetUserAgent(FOEventHandler mockFOEventHandler) {
  57. FOUserAgent mockFOUserAgent = mock(FOUserAgent.class);
  58. when(mockFOEventHandler.getUserAgent()).thenReturn(mockFOUserAgent);
  59. return mockFOUserAgent;
  60. }
  61. public static EventBroadcaster mockGetEventBroadcaster(FOUserAgent mockFOUserAgent) {
  62. EventBroadcaster mockBroadcaster = mock(EventBroadcaster.class);
  63. when(mockFOUserAgent.getEventBroadcaster()).thenReturn(mockBroadcaster);
  64. return mockBroadcaster;
  65. }
  66. public static ImageManager mockGetImageManager(FOUserAgent mockFOUserAgent) {
  67. try {
  68. ImageManager mockImageManager = mock(ImageManager.class);
  69. when(mockImageManager.getImageInfo(anyString(), any(ImageSessionContext.class)))
  70. .thenReturn(null);
  71. when(mockFOUserAgent.getImageManager()).thenReturn(mockImageManager);
  72. return mockImageManager;
  73. } catch (ImageException e) {
  74. throw new RuntimeException(e);
  75. } catch (IOException e) {
  76. throw new RuntimeException(e);
  77. }
  78. }
  79. public static ColumnNumberManager mockGetColumnNumberManager(ColumnNumberManagerHolder mock) {
  80. ColumnNumberManager mockColumnNumberManager = mock(ColumnNumberManager.class);
  81. when(mock.getColumnNumberManager()).thenReturn(mockColumnNumberManager);
  82. return mockColumnNumberManager;
  83. }
  84. }