/* * Copyright 2009 Google Inc. * * Licensed 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 com.google.jstestdriver; import com.google.gson.Gson; import junit.framework.TestCase; import java.io.ByteArrayOutputStream; import java.io.OutputStream; import java.io.PrintStream; public class DefaultPrinterTest extends TestCase { private static final String NEW_LINE = System.getProperty("line.separator"); private final Gson gson = new Gson(); private OutputStream buf = new ByteArrayOutputStream(); private PrintStream out = new PrintStream(buf, true); public void testEachPassedTestPrintsDotEorFFailuresOnClose() throws Exception { DefaultPrinter printer = new DefaultPrinter(out, 1, false); BrowserInfo browser = new BrowserInfo(); browser.setName("TB"); browser.setVersion("1"); browser.setOs("os"); printer.print(new TestResult(browser, "passed", "", "", "A", "d", 1)); printer.print(new TestResult(browser, "failed", gson.toJson(new JsException("name", "abc", "fileName", 1L, "stack")), "", "B", "e", 2)); printer.print(new TestResult(browser, "error", gson.toJson(new JsException("name", "abc", "fileName", 1L, "stack")), "", "C", "f", 3)); printer.close(); assertEquals(".FE" + NEW_LINE + "Total 3 tests (Passed: 1; Fails: 1; Errors: 1) (6.00 ms)" + NEW_LINE + " TB 1 os: Run 3 tests (Passed: 1; Fails: 1; Errors 1) (6.00 ms)" + NEW_LINE + " B.e failed (2.00 ms): abc" + NEW_LINE + " C.f error (3.00 ms): abc" + NEW_LINE, buf.toString()); } public void testEachTestPrintsDotAndWrapsLongLine() throws Exception { DefaultPrinter printer = new DefaultPrinter(out, 1, false); BrowserInfo browser = new BrowserInfo(); browser.setName("TB"); browser.setVersion("1"); browser.setOs("os"); printer.setLineLength(1); TestResult result = new TestResult(browser, "passed", "", "", "", "", 0); printer.print(result); printer.print(result); printer.print(result); assertEquals("." + NEW_LINE + "." + NEW_LINE + "." + NEW_LINE, buf.toString()); } public void testNotVerbosePassAndLog() throws Exception { DefaultPrinter printer = new DefaultPrinter(out, 1, false); BrowserInfo browser = new BrowserInfo(); browser.setName("TB"); browser.setVersion("1"); browser.setOs("os"); printer.print(new TestResult(browser, "passed", "", "[LOG] some log", "A", "d", 1)); printer.close(); assertEquals("." + NEW_LINE + "Total 1 tests (Passed: 1; Fails: 0; Errors: 0) (1.00 ms)" + NEW_LINE + " TB 1 os: Run 1 tests (Passed: 1; Fails: 0; Errors 0) (1.00 ms)" + NEW_LINE + " A.d passed (1.00 ms)" + NEW_LINE + " [LOG] some log" + NEW_LINE, buf.toString()); } public void testVerbosePassAndLog() throws Exception { DefaultPrinter printer = new DefaultPrinter(out, 1, true); BrowserInfo browser = new BrowserInfo(); browser.setName("TB"); browser.setVersion("1"); browser.setOs("os"); printer.print(new TestResult(browser, "passed", "", "[LOG] some log", "A", "d", 1)); printer.close(); assertEquals("[PASSED] A.d" + NEW_LINE + " [LOG] some log" + NEW_LINE + "Total 1 tests (Passed: 1; Fails: 0; Errors: 0) (1.00 ms)" + NEW_LINE + " TB 1 os: Run 1 tests (Passed: 1; Fails: 0; Errors 0) (1.00 ms)" + NEW_LINE, buf.toString()); } public void testNotVerbosePassFailErrorAndLog() throws Exception { DefaultPrinter printer = new DefaultPrinter(out, 1, false); BrowserInfo browser = new BrowserInfo(); browser.setName("TB"); browser.setVersion("1"); browser.setOs("os"); printer.print(new TestResult(browser, "passed", "", "[LOG] some log", "A", "d", 1)); printer.print(new TestResult(browser, "failed", gson.toJson(new JsException("name", "abc", "fileName", 1L, "stack")), "[LOG] failed log", "B", "e", 2)); printer.print(new TestResult(browser, "error", gson.toJson(new JsException("name", "abc", "fileName", 1L, "stack")), "[LOG] error log", "C", "f", 3)); printer.close(); assertEquals(".FE" + NEW_LINE + "Total 3 tests (Passed: 1; Fails: 1; Errors: 1) (6.00 ms)" + NEW_LINE + " TB 1 os: Run 3 tests (Passed: 1; Fails: 1; Errors 1) (6.00 ms)" + NEW_LINE + " A.d passed (1.00 ms)" + NEW_LINE + " [LOG] some log" + NEW_LINE + " B.e failed (2.00 ms): abc" + NEW_LINE + " [LOG] failed log" + NEW_LINE + " C.f error (3.00 ms): abc" + NEW_LINE + " [LOG] error log" + NEW_LINE, buf.toString()); } public void testVerbosePassFailErrorAndLog() throws Exception { DefaultPrinter printer = new DefaultPrinter(out, 1, true); BrowserInfo browser = new BrowserInfo(); browser.setName("TB"); browser.setVersion("1"); browser.setOs("os"); printer.print(new TestResult(browser, "passed", "", "[LOG] some log", "A", "d", 1)); printer.print(new TestResult(browser, "failed", gson.toJson(new JsException("name", "abc", "fileName", 1L, "stack")), "[LOG] failed log", "B", "e", 2)); printer.print(new TestResult(browser, "error", gson.toJson(new JsException("name", "abc", "fileName", 1L, "stack")), "[LOG] error log", "C", "f", 3)); printer.close(); assertEquals("[PASSED] A.d" + NEW_LINE + " [LOG] some log" + NEW_LINE + "[FAILED] B.e" + NEW_LINE + " [LOG] failed log" + NEW_LINE + "[ERROR] C.f" + NEW_LINE + " [LOG] error log" + NEW_LINE + "Total 3 tests (Passed: 1; Fails: 1; Errors: 1) (6.00 ms)" + NEW_LINE + " TB 1 os: Run 3 tests (Passed: 1; Fails: 1; Errors 1) (6.00 ms)" + NEW_LINE + " B.e failed (2.00 ms): abc" + NEW_LINE + " C.f error (3.00 ms): abc" + NEW_LINE, buf.toString()); } }