blob: 63fa5601fb86062fdde661ab897ca3493154f068 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.base.test;
import static org.chromium.base.test.TestListInstrumentationRunListener.getAnnotationJSON;
import static org.chromium.base.test.TestListInstrumentationRunListener.getTestMethodJSON;
import org.json.JSONObject;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.Description;
import org.junit.runner.RunWith;
import org.robolectric.annotation.Config;
import org.chromium.base.test.util.CommandLineFlags;
import java.util.Arrays;
/**
* Robolectric test to ensure static methods in TestListInstrumentationRunListener works properly.
*/
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class TestListInstrumentationRunListenerTest {
@CommandLineFlags.Add("hello")
private static class ParentClass {
public void testA() {}
@CommandLineFlags.Add("world")
public void testB() {}
}
@CommandLineFlags.Remove("hello")
private static class ChildClass extends ParentClass {
}
@Test
public void testGetTestMethodJSON_testA() throws Throwable {
Description desc = Description.createTestDescription(
ParentClass.class, "testA",
ParentClass.class.getMethod("testA").getAnnotations());
JSONObject json = getTestMethodJSON(desc);
String expectedJsonString =
"{"
+ "'method': 'testA',"
+ "'annotations': {}"
+ "}";
expectedJsonString = expectedJsonString
.replaceAll("\\s", "")
.replaceAll("'", "\"");
Assert.assertEquals(expectedJsonString, json.toString());
}
@Test
public void testGetTestMethodJSON_testB() throws Throwable {
Description desc = Description.createTestDescription(
ParentClass.class, "testB",
ParentClass.class.getMethod("testB").getAnnotations());
JSONObject json = getTestMethodJSON(desc);
String expectedJsonString =
"{"
+ "'method': 'testB',"
+ "'annotations': {"
+ " 'Add': {"
+ " 'value': ['world']"
+ " }"
+ " }"
+ "}";
expectedJsonString = expectedJsonString
.replaceAll("\\s", "")
.replaceAll("'", "\"");
Assert.assertEquals(expectedJsonString, json.toString());
}
@Test
public void testGetTestMethodJSONForInheritedClass() throws Throwable {
Description desc = Description.createTestDescription(
ChildClass.class, "testB",
ChildClass.class.getMethod("testB").getAnnotations());
JSONObject json = getTestMethodJSON(desc);
String expectedJsonString =
"{"
+ "'method': 'testB',"
+ "'annotations': {"
+ " 'Add': {"
+ " 'value': ['world']"
+ " }"
+ " }"
+ "}";
expectedJsonString = expectedJsonString
.replaceAll("\\s", "")
.replaceAll("'", "\"");
Assert.assertEquals(expectedJsonString, json.toString());
}
@Test
public void testGetAnnotationJSONForParentClass() throws Throwable {
JSONObject json = getAnnotationJSON(Arrays.asList(ParentClass.class.getAnnotations()));
String expectedJsonString = "{'Add':{'value':['hello']}}";
expectedJsonString = expectedJsonString
.replaceAll("\\s", "")
.replaceAll("'", "\"");
Assert.assertEquals(expectedJsonString, json.toString());
}
@Test
public void testGetAnnotationJSONForChildClass() throws Throwable {
JSONObject json = getAnnotationJSON(Arrays.asList(ChildClass.class.getAnnotations()));
String expectedJsonString = "{'Add':{'value':['hello']},'Remove':{'value':['hello']}}";
expectedJsonString = expectedJsonString
.replaceAll("\\s", "")
.replaceAll("'", "\"");
Assert.assertEquals(expectedJsonString, json.toString());
}
}