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.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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.apps.FopFactory;
  29. import org.apache.fop.events.EventBroadcaster;
  30. import org.apache.fop.fo.flow.table.ColumnNumberManager;
  31. import org.apache.fop.fo.flow.table.ColumnNumberManagerHolder;
  32. /**
  33. * A helper class for creating mocks of {@link FONode} and its descendants.
  34. */
  35. public final class FONodeMocks {
  36. private FONodeMocks() { }
  37. /**
  38. * Creates and returns a mock {@link FONode} configured with a mock
  39. * {@link FOEventHandler}. The FO event handler returns a mock {@link FOUserAgent},
  40. * which in turn returns a mock {@link FopFactory}, which returns a mock
  41. * {@link ImageManager}.
  42. *
  43. * @return a mock FO node
  44. */
  45. public static FONode mockFONode() {
  46. FONode mockFONode = mock(FONode.class);
  47. mockGetFOEventHandler(mockFONode);
  48. mockGetImageManager(mockFONode.getFOEventHandler().getUserAgent());
  49. return mockFONode;
  50. }
  51. public static FOEventHandler mockGetFOEventHandler(FONode mockFONode) {
  52. FOEventHandler mockFOEventHandler = mock(FOEventHandler.class);
  53. mockGetUserAgent(mockFOEventHandler);
  54. when(mockFONode.getFOEventHandler()).thenReturn(mockFOEventHandler);
  55. return mockFOEventHandler;
  56. }
  57. public static FOUserAgent mockGetUserAgent(FOEventHandler mockFOEventHandler) {
  58. FOUserAgent mockFOUserAgent = mock(FOUserAgent.class);
  59. when(mockFOEventHandler.getUserAgent()).thenReturn(mockFOUserAgent);
  60. return mockFOUserAgent;
  61. }
  62. public static EventBroadcaster mockGetEventBroadcaster(FOUserAgent mockFOUserAgent) {
  63. EventBroadcaster mockBroadcaster = mock(EventBroadcaster.class);
  64. when(mockFOUserAgent.getEventBroadcaster()).thenReturn(mockBroadcaster);
  65. return mockBroadcaster;
  66. }
  67. public static ImageManager mockGetImageManager(FOUserAgent mockFOUserAgent) {
  68. try {
  69. ImageManager mockImageManager = mock(ImageManager.class);
  70. when(mockImageManager.getImageInfo(anyString(), any(ImageSessionContext.class)))
  71. .thenReturn(null);
  72. when(mockFOUserAgent.getImageManager()).thenReturn(mockImageManager);
  73. return mockImageManager;
  74. } catch (ImageException e) {
  75. throw new RuntimeException(e);
  76. } catch (IOException e) {
  77. throw new RuntimeException(e);
  78. }
  79. }
  80. public static ColumnNumberManager mockGetColumnNumberManager(ColumnNumberManagerHolder mock) {
  81. ColumnNumberManager mockColumnNumberManager = mock(ColumnNumberManager.class);
  82. when(mock.getColumnNumberManager()).thenReturn(mockColumnNumberManager);
  83. return mockColumnNumberManager;
  84. }
  85. }