1 // Copyright 2014 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package org.chromium.testing.local; 6 7 import org.junit.Assert; 8 import org.junit.Test; 9 import org.junit.runner.Description; 10 import org.junit.runner.RunWith; 11 import org.junit.runners.BlockJUnit4ClassRunner; 12 13 import java.io.ByteArrayOutputStream; 14 import java.io.PrintStream; 15 import java.io.Serializable; 16 import java.util.Comparator; 17 import java.util.HashSet; 18 import java.util.Set; 19 import java.util.TreeSet; 20 21 /** 22 * Unit tests for GtestLogger. 23 */ 24 @RunWith(BlockJUnit4ClassRunner.class) 25 public class GtestLoggerTest { 26 27 @Test testTestStarted()28 public void testTestStarted() { 29 ByteArrayOutputStream actual = new ByteArrayOutputStream(); 30 GtestLogger loggerUnderTest = new GtestLogger(new PrintStream(actual)); 31 loggerUnderTest.testStarted( 32 Description.createTestDescription(GtestLoggerTest.class, "testTestStarted")); 33 Assert.assertEquals( 34 "[ RUN ] org.chromium.testing.local.GtestLoggerTest.testTestStarted\n", 35 actual.toString()); 36 } 37 38 @Test testTestFinishedPassed()39 public void testTestFinishedPassed() { 40 ByteArrayOutputStream actual = new ByteArrayOutputStream(); 41 GtestLogger loggerUnderTest = new GtestLogger(new PrintStream(actual)); 42 loggerUnderTest.testFinished( 43 Description.createTestDescription(GtestLoggerTest.class, "testTestFinishedPassed"), 44 true, 123); 45 Assert.assertEquals( 46 "[ OK ] org.chromium.testing.local.GtestLoggerTest.testTestFinishedPassed" 47 + " (123 ms)\n", 48 actual.toString()); 49 } 50 51 @Test testTestFinishedFailed()52 public void testTestFinishedFailed() { 53 ByteArrayOutputStream actual = new ByteArrayOutputStream(); 54 GtestLogger loggerUnderTest = new GtestLogger(new PrintStream(actual)); 55 loggerUnderTest.testFinished( 56 Description.createTestDescription(GtestLoggerTest.class, "testTestFinishedPassed"), 57 false, 123); 58 Assert.assertEquals( 59 "[ FAILED ] org.chromium.testing.local.GtestLoggerTest.testTestFinishedPassed" 60 + " (123 ms)\n", 61 actual.toString()); 62 } 63 64 @Test testTestCaseStarted()65 public void testTestCaseStarted() { 66 ByteArrayOutputStream actual = new ByteArrayOutputStream(); 67 GtestLogger loggerUnderTest = new GtestLogger(new PrintStream(actual)); 68 loggerUnderTest.testCaseStarted( 69 Description.createSuiteDescription(GtestLoggerTest.class), 456); 70 Assert.assertEquals( 71 "[----------] Run 456 test cases from org.chromium.testing.local.GtestLoggerTest\n", 72 actual.toString()); 73 } 74 75 @Test testTestCaseFinished()76 public void testTestCaseFinished() { 77 ByteArrayOutputStream actual = new ByteArrayOutputStream(); 78 GtestLogger loggerUnderTest = new GtestLogger(new PrintStream(actual)); 79 loggerUnderTest.testCaseFinished( 80 Description.createSuiteDescription(GtestLoggerTest.class), 456, 123); 81 Assert.assertEquals( 82 "[----------] Run 456 test cases from org.chromium.testing.local.GtestLoggerTest" 83 + " (123 ms)\n\n", 84 actual.toString()); 85 } 86 87 @Test testTestRunStarted()88 public void testTestRunStarted() { 89 ByteArrayOutputStream actual = new ByteArrayOutputStream(); 90 GtestLogger loggerUnderTest = new GtestLogger(new PrintStream(actual)); 91 loggerUnderTest.testRunStarted(1234); 92 Assert.assertEquals( 93 "[==========] Running 1234 tests.\n" 94 + "[----------] Global test environment set-up.\n\n", 95 actual.toString()); 96 } 97 98 @Test testTestRunFinishedNoFailures()99 public void testTestRunFinishedNoFailures() { 100 ByteArrayOutputStream actual = new ByteArrayOutputStream(); 101 GtestLogger loggerUnderTest = new GtestLogger(new PrintStream(actual)); 102 loggerUnderTest.testRunFinished(1234, new HashSet<Description>(), 4321); 103 Assert.assertEquals( 104 "[----------] Global test environment tear-down.\n" 105 + "[==========] 1234 tests ran. (4321 ms total)\n" 106 + "[ PASSED ] 1234 tests.\n", 107 actual.toString()); 108 } 109 110 @Test testTestRunFinishedWithFailures()111 public void testTestRunFinishedWithFailures() { 112 ByteArrayOutputStream actual = new ByteArrayOutputStream(); 113 GtestLogger loggerUnderTest = new GtestLogger(new PrintStream(actual)); 114 115 Set<Description> failures = new TreeSet<Description>(new DescriptionComparator()); 116 failures.add(Description.createTestDescription( 117 GtestLoggerTest.class, "testTestRunFinishedNoFailures")); 118 failures.add(Description.createTestDescription( 119 GtestLoggerTest.class, "testTestRunFinishedWithFailures")); 120 121 loggerUnderTest.testRunFinished(1232, failures, 4312); 122 Assert.assertEquals( 123 "[----------] Global test environment tear-down.\n" 124 + "[==========] 1234 tests ran. (4312 ms total)\n" 125 + "[ PASSED ] 1232 tests.\n" 126 + "[ FAILED ] 2 tests.\n" 127 + "[ FAILED ] org.chromium.testing.local.GtestLoggerTest" 128 + ".testTestRunFinishedNoFailures\n" 129 + "[ FAILED ] org.chromium.testing.local.GtestLoggerTest" 130 + ".testTestRunFinishedWithFailures\n" 131 + "\n", 132 actual.toString()); 133 } 134 135 private static class DescriptionComparator implements Comparator<Description>, Serializable { 136 @Override compare(Description o1, Description o2)137 public int compare(Description o1, Description o2) { 138 return toGtestStyleString(o1).compareTo(toGtestStyleString(o2)); 139 } 140 toGtestStyleString(Description d)141 private static String toGtestStyleString(Description d) { 142 return d.getClassName() + "." + d.getMethodName(); 143 } 144 } 145 } 146 147