/** * Runs a code with a custom output stream. * * @param function is code to run * @return is output stream as string */ public String run(Function function) { final PrintStream out = getOutputStream(); final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); try { setOutputStream(new PrintStream(outputStream)); function.run(); } finally { setOutputStream(out); } try { return outputStream.toString(StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException ex) { throw new IllegalStateException(ex); } }
@Test public void exceptionsTest() throws IOException { final String outputStream1 = OutputReplacer.ERROR.run(new OutputReplacer.Function() { @Override public void run() { Json.pretty(new ThrowHelper()); } }); assertTrue(outputStream1.contains(ThrowHelper.MESSAGE)); final String outputStream2 = OutputReplacer.ERROR.run(new OutputReplacer.Function() { @Override public void run() { Json.prettyPrint(new ThrowHelper()); } }); assertTrue(outputStream2.contains(ThrowHelper.MESSAGE)); }
@Test public void prettyPrintTest() throws IOException { final String json = ResourceUtils.loadClassResource(getClass(), "uber.json"); final OpenAPI swagger = Json.mapper().readValue(json, OpenAPI.class); final String outputStream = OutputReplacer.OUT.run(new OutputReplacer.Function() { @Override public void run() { Json.prettyPrint(swagger); } }); SerializationMatchers.assertEqualsToJson(swagger, outputStream); }