• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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