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 /** Unit tests for GtestLogger. */ 22 @RunWith(BlockJUnit4ClassRunner.class) 23 public class GtestLoggerTest { 24 25 @Test testTestStarted()26 public void testTestStarted() { 27 ByteArrayOutputStream actual = new ByteArrayOutputStream(); 28 GtestLogger loggerUnderTest = new GtestLogger(new PrintStream(actual)); 29 loggerUnderTest.testStarted( 30 Description.createTestDescription(GtestLoggerTest.class, "testTestStarted")); 31 Assert.assertEquals( 32 "[ RUN ] org.chromium.testing.local.GtestLoggerTest.testTestStarted\n", 33 actual.toString()); 34 } 35 36 @Test testTestFinishedPassed()37 public void testTestFinishedPassed() { 38 ByteArrayOutputStream actual = new ByteArrayOutputStream(); 39 GtestLogger loggerUnderTest = new GtestLogger(new PrintStream(actual)); 40 loggerUnderTest.testFinished( 41 Description.createTestDescription(GtestLoggerTest.class, "testTestFinishedPassed"), 42 true, 43 123); 44 Assert.assertEquals( 45 "[ OK ] org.chromium.testing.local.GtestLoggerTest.testTestFinishedPassed" 46 + " (123 ms)\n", 47 actual.toString()); 48 } 49 50 @Test testTestFinishedFailed()51 public void testTestFinishedFailed() { 52 ByteArrayOutputStream actual = new ByteArrayOutputStream(); 53 GtestLogger loggerUnderTest = new GtestLogger(new PrintStream(actual)); 54 loggerUnderTest.testFinished( 55 Description.createTestDescription(GtestLoggerTest.class, "testTestFinishedPassed"), 56 false, 57 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( 117 Description.createTestDescription( 118 GtestLoggerTest.class, "testTestRunFinishedNoFailures")); 119 failures.add( 120 Description.createTestDescription( 121 GtestLoggerTest.class, "testTestRunFinishedWithFailures")); 122 123 loggerUnderTest.testRunFinished(1232, failures, 4312); 124 Assert.assertEquals( 125 "[----------] Global test environment tear-down.\n" 126 + "[==========] 1234 tests ran. (4312 ms total)\n" 127 + "[ PASSED ] 1232 tests.\n" 128 + "[ FAILED ] 2 tests.\n" 129 + "[ FAILED ] org.chromium.testing.local.GtestLoggerTest" 130 + ".testTestRunFinishedNoFailures\n" 131 + "[ FAILED ] org.chromium.testing.local.GtestLoggerTest" 132 + ".testTestRunFinishedWithFailures\n" 133 + "\n", 134 actual.toString()); 135 } 136 137 private static class DescriptionComparator implements Comparator<Description>, Serializable { 138 @Override compare(Description o1, Description o2)139 public int compare(Description o1, Description o2) { 140 return toGtestStyleString(o1).compareTo(toGtestStyleString(o2)); 141 } 142 toGtestStyleString(Description d)143 private static String toGtestStyleString(Description d) { 144 return d.getClassName() + "." + d.getMethodName(); 145 } 146 } 147 } 148