| Index: base/test/android/junit/src/org/chromium/base/test/CommandLineFlagsTest.java
|
| diff --git a/base/test/android/junit/src/org/chromium/base/test/CommandLineFlagsTest.java b/base/test/android/junit/src/org/chromium/base/test/CommandLineFlagsTest.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4f0058dc9b7285f562060ddf7e40160662f41046
|
| --- /dev/null
|
| +++ b/base/test/android/junit/src/org/chromium/base/test/CommandLineFlagsTest.java
|
| @@ -0,0 +1,165 @@
|
| +// Copyright 2016 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 org.junit.Assert;
|
| +import org.junit.Before;
|
| +import org.junit.Test;
|
| +import org.junit.runner.Description;
|
| +import org.junit.runner.RunWith;
|
| +import org.junit.runners.BlockJUnit4ClassRunner;
|
| +
|
| +import org.chromium.base.CommandLine;
|
| +import org.chromium.base.test.util.CommandLineFlags;
|
| +
|
| +import java.lang.annotation.Annotation;
|
| +import java.lang.reflect.Method;
|
| +import java.util.Arrays;
|
| +import java.util.Set;
|
| +
|
| +/** Unit tests for CommandLineFlags. */
|
| +@RunWith(BlockJUnit4ClassRunner.class)
|
| +public class CommandLineFlagsTest {
|
| + @CommandLineFlags.Add("A")
|
| + class ParentClassAddFlagA {
|
| + @CommandLineFlags.Remove("A")
|
| + public void testMethodRemoveFlagA() {}
|
| +
|
| + @CommandLineFlags.Add("B")
|
| + public void testMethodAddFlagB() {}
|
| + }
|
| +
|
| + class ChildClass extends ParentClassAddFlagA {
|
| + public void testMethod() {}
|
| + }
|
| +
|
| + @CommandLineFlags.Remove("A")
|
| + class ChildClassRemoveFlagA extends ParentClassAddFlagA {
|
| + public void testMethod() {}
|
| +
|
| + @CommandLineFlags.Add("A")
|
| + public void testMethodAddFlagA() {}
|
| + }
|
| +
|
| + class EmptyClass {
|
| + public void testEmpty() {}
|
| + }
|
| +
|
| + @Before
|
| + public void setUp() {
|
| + CommandLine.init(new String[0]);
|
| + }
|
| +
|
| + @Test
|
| + public void testGetFlagsParentRemoveA() throws Throwable {
|
| + Method method = ParentClassAddFlagA.class.getDeclaredMethod("testMethodRemoveFlagA");
|
| + Set<String> flags = CommandLineFlags.getFlags(method);
|
| + Assert.assertEquals("testMethodRemoveFlagA should have no flag", 0, flags.size());
|
| + }
|
| +
|
| + @Test
|
| + public void testGetFlagsParentRemoveAWithDesc() throws Throwable {
|
| + Annotation[] annotations = ParentClassAddFlagA.class.getMethod("testMethodRemoveFlagA")
|
| + .getDeclaredAnnotations();
|
| + Description desc = Description.createTestDescription(
|
| + ParentClassAddFlagA.class, "testMethodRemoveFlagA", annotations);
|
| + Set<String> flags = CommandLineFlags.getFlags(desc);
|
| + Assert.assertEquals(String.format("testMethodRemoveFlagA should have no flag %s",
|
| + Arrays.toString(flags.toArray())),
|
| + 0, flags.size());
|
| + }
|
| +
|
| + @Test
|
| + public void testGetFlagsParentAddB() throws Throwable {
|
| + Method method = ParentClassAddFlagA.class.getDeclaredMethod("testMethodAddFlagB");
|
| + Set<String> flags = CommandLineFlags.getFlags(method);
|
| + Assert.assertEquals("testMethodAddFlagB should have 2 flags", 2, flags.size());
|
| + Assert.assertTrue("testMethodAddFlagB should have both A and B flag", flags.contains("A"));
|
| + Assert.assertTrue("testMethodAddFlagB should have both A and B flag", flags.contains("B"));
|
| + }
|
| +
|
| + @Test
|
| + public void testGetFlagsParentAddBWithDesc() throws Throwable {
|
| + Annotation[] annotations =
|
| + ParentClassAddFlagA.class.getMethod("testMethodAddFlagB").getDeclaredAnnotations();
|
| + Description desc = Description.createTestDescription(
|
| + ParentClassAddFlagA.class, "testMethodAddFlagB", annotations);
|
| + Set<String> flags = CommandLineFlags.getFlags(desc);
|
| + Assert.assertEquals("testMethodAddFlagB should have 2 flags", 2, flags.size());
|
| + Assert.assertTrue("testMethodAddFlagB should have both A and B flag", flags.contains("A"));
|
| + Assert.assertTrue("testMethodAddFlagB should have both A and B flag", flags.contains("B"));
|
| + }
|
| +
|
| + @Test
|
| + public void testGetFlagsChild() throws Throwable {
|
| + Method method = ChildClass.class.getMethod("testMethod");
|
| + Set<String> flags = CommandLineFlags.getFlags(method);
|
| + Assert.assertEquals("testMethod should have 1 flag", 1, flags.size());
|
| + Assert.assertTrue("testMethod should have A flag", flags.contains("A"));
|
| + }
|
| +
|
| + @Test
|
| + public void testGetFlagsChildWithDesc() throws Throwable {
|
| + Annotation[] annotations =
|
| + ChildClass.class.getMethod("testMethod").getDeclaredAnnotations();
|
| + Description desc =
|
| + Description.createTestDescription(ChildClass.class, "testMethod", annotations);
|
| + Set<String> flags = CommandLineFlags.getFlags(desc);
|
| + Assert.assertEquals("testMethod should have 1 flag", 1, flags.size());
|
| + Assert.assertTrue("testMethod should have A flag", flags.contains("A"));
|
| + }
|
| +
|
| + @Test
|
| + public void testGetFlagsChildRemoveA() throws Throwable {
|
| + Method method = ChildClassRemoveFlagA.class.getMethod("testMethod");
|
| + Set<String> flags = CommandLineFlags.getFlags(method);
|
| + Assert.assertEquals("testMethod should have no flag", 0, flags.size());
|
| + }
|
| +
|
| + @Test
|
| + public void testGetFlagsChildRemoveAWithDesc() throws Throwable {
|
| + Annotation[] annotations =
|
| + ChildClassRemoveFlagA.class.getMethod("testMethod").getDeclaredAnnotations();
|
| + Description desc = Description.createTestDescription(
|
| + ChildClassRemoveFlagA.class, "testMethod", annotations);
|
| + Set<String> flags = CommandLineFlags.getFlags(desc);
|
| + Assert.assertEquals("testMethod should have no flag", 0, flags.size());
|
| + }
|
| +
|
| + @Test
|
| + public void testGetFlagsChildAddA() throws Throwable {
|
| + Method method = ChildClassRemoveFlagA.class.getMethod("testMethodAddFlagA");
|
| + Set<String> flags = CommandLineFlags.getFlags(method);
|
| + Assert.assertEquals("testMethodAddFlagB should have 1 flag", 1, flags.size());
|
| + Assert.assertTrue("testMethodAddFlagB should have A flag", flags.contains("A"));
|
| + }
|
| +
|
| + @Test
|
| + public void testGetFlagsChildAddAWithDesc() throws Throwable {
|
| + Annotation[] annotations = ChildClassRemoveFlagA.class.getMethod("testMethodAddFlagA")
|
| + .getDeclaredAnnotations();
|
| + Description desc = Description.createTestDescription(
|
| + ChildClassRemoveFlagA.class, "testMethodAddFlagA", annotations);
|
| + Set<String> flags = CommandLineFlags.getFlags(desc);
|
| + Assert.assertEquals("testMethodAddFlagB should have 1 flag", 1, flags.size());
|
| + Assert.assertTrue("testMethodAddFlagB should have A flag", flags.contains("A"));
|
| + }
|
| +
|
| + @Test
|
| + public void testEmptyClass() throws Throwable {
|
| + Method method = EmptyClass.class.getMethod("testEmpty");
|
| + Set<String> flags = CommandLineFlags.getFlags(method);
|
| + Assert.assertEquals("EmptyClass method should have 0 flag", 0, flags.size());
|
| + }
|
| +
|
| + @Test
|
| + public void testEmptyClassWithDesc() throws Throwable {
|
| + Annotation[] annotations = EmptyClass.class.getMethod("testEmpty").getDeclaredAnnotations();
|
| + Description desc =
|
| + Description.createTestDescription(EmptyClass.class, "testEmpty", annotations);
|
| + Set<String> flags = CommandLineFlags.getFlags(desc);
|
| + Assert.assertEquals("EmptyClass method should have 0 flag", 0, flags.size());
|
| + }
|
| +}
|
|
|