17dd252788645e940eada959bdde927426e2531c9Paul Duffin/* 27dd252788645e940eada959bdde927426e2531c9Paul Duffin * Copyright (C) 2011 The Guava Authors 37dd252788645e940eada959bdde927426e2531c9Paul Duffin * 47dd252788645e940eada959bdde927426e2531c9Paul Duffin * Licensed under the Apache License, Version 2.0 (the "License"); 57dd252788645e940eada959bdde927426e2531c9Paul Duffin * you may not use this file except in compliance with the License. 67dd252788645e940eada959bdde927426e2531c9Paul Duffin * You may obtain a copy of the License at 77dd252788645e940eada959bdde927426e2531c9Paul Duffin * 87dd252788645e940eada959bdde927426e2531c9Paul Duffin * http://www.apache.org/licenses/LICENSE-2.0 97dd252788645e940eada959bdde927426e2531c9Paul Duffin * 107dd252788645e940eada959bdde927426e2531c9Paul Duffin * Unless required by applicable law or agreed to in writing, software 117dd252788645e940eada959bdde927426e2531c9Paul Duffin * distributed under the License is distributed on an "AS IS" BASIS, 127dd252788645e940eada959bdde927426e2531c9Paul Duffin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137dd252788645e940eada959bdde927426e2531c9Paul Duffin * See the License for the specific language governing permissions and 147dd252788645e940eada959bdde927426e2531c9Paul Duffin * limitations under the License. 157dd252788645e940eada959bdde927426e2531c9Paul Duffin */ 167dd252788645e940eada959bdde927426e2531c9Paul Duffin 177dd252788645e940eada959bdde927426e2531c9Paul Duffinpackage com.google.common.collect.testing; 187dd252788645e940eada959bdde927426e2531c9Paul Duffin 197dd252788645e940eada959bdde927426e2531c9Paul Duffinimport com.google.common.collect.testing.features.CollectionFeature; 207dd252788645e940eada959bdde927426e2531c9Paul Duffin 217dd252788645e940eada959bdde927426e2531c9Paul Duffinimport junit.framework.Test; 227dd252788645e940eada959bdde927426e2531c9Paul Duffinimport junit.framework.TestCase; 237dd252788645e940eada959bdde927426e2531c9Paul Duffinimport junit.framework.TestResult; 247dd252788645e940eada959bdde927426e2531c9Paul Duffin 257dd252788645e940eada959bdde927426e2531c9Paul Duffinimport java.util.Collections; 267dd252788645e940eada959bdde927426e2531c9Paul Duffinimport java.util.List; 277dd252788645e940eada959bdde927426e2531c9Paul Duffin 287dd252788645e940eada959bdde927426e2531c9Paul Duffin/** 297dd252788645e940eada959bdde927426e2531c9Paul Duffin * @author Max Ross 307dd252788645e940eada959bdde927426e2531c9Paul Duffin */ 317dd252788645e940eada959bdde927426e2531c9Paul Duffinpublic class FeatureSpecificTestSuiteBuilderTest extends TestCase { 327dd252788645e940eada959bdde927426e2531c9Paul Duffin 337dd252788645e940eada959bdde927426e2531c9Paul Duffin static boolean testWasRun; 347dd252788645e940eada959bdde927426e2531c9Paul Duffin 357dd252788645e940eada959bdde927426e2531c9Paul Duffin @Override 367dd252788645e940eada959bdde927426e2531c9Paul Duffin protected void setUp() throws Exception { 377dd252788645e940eada959bdde927426e2531c9Paul Duffin super.setUp(); 387dd252788645e940eada959bdde927426e2531c9Paul Duffin testWasRun = false; 397dd252788645e940eada959bdde927426e2531c9Paul Duffin } 407dd252788645e940eada959bdde927426e2531c9Paul Duffin 410888a09821a98ac0680fad765217302858e70fa4Paul Duffin public static final class MyAbstractTester extends AbstractTester<Void> { 427dd252788645e940eada959bdde927426e2531c9Paul Duffin public void testNothing() { 437dd252788645e940eada959bdde927426e2531c9Paul Duffin testWasRun = true; 447dd252788645e940eada959bdde927426e2531c9Paul Duffin } 457dd252788645e940eada959bdde927426e2531c9Paul Duffin } 467dd252788645e940eada959bdde927426e2531c9Paul Duffin 477dd252788645e940eada959bdde927426e2531c9Paul Duffin private static final class MyTestSuiteBuilder extends 487dd252788645e940eada959bdde927426e2531c9Paul Duffin FeatureSpecificTestSuiteBuilder<MyTestSuiteBuilder, String> { 497dd252788645e940eada959bdde927426e2531c9Paul Duffin 507dd252788645e940eada959bdde927426e2531c9Paul Duffin @Override 517dd252788645e940eada959bdde927426e2531c9Paul Duffin protected List<Class<? extends AbstractTester>> getTesters() { 527dd252788645e940eada959bdde927426e2531c9Paul Duffin return Collections.<Class<? extends AbstractTester>>singletonList(MyAbstractTester.class); 537dd252788645e940eada959bdde927426e2531c9Paul Duffin } 547dd252788645e940eada959bdde927426e2531c9Paul Duffin } 557dd252788645e940eada959bdde927426e2531c9Paul Duffin 567dd252788645e940eada959bdde927426e2531c9Paul Duffin public void testLifecycle() { 577dd252788645e940eada959bdde927426e2531c9Paul Duffin final boolean setUp[] = {false}; 587dd252788645e940eada959bdde927426e2531c9Paul Duffin Runnable setUpRunnable = new Runnable() { 597dd252788645e940eada959bdde927426e2531c9Paul Duffin @Override 607dd252788645e940eada959bdde927426e2531c9Paul Duffin public void run() { 617dd252788645e940eada959bdde927426e2531c9Paul Duffin setUp[0] = true; 627dd252788645e940eada959bdde927426e2531c9Paul Duffin } 637dd252788645e940eada959bdde927426e2531c9Paul Duffin }; 647dd252788645e940eada959bdde927426e2531c9Paul Duffin 657dd252788645e940eada959bdde927426e2531c9Paul Duffin final boolean tearDown[] = {false}; 667dd252788645e940eada959bdde927426e2531c9Paul Duffin Runnable tearDownRunnable = new Runnable() { 677dd252788645e940eada959bdde927426e2531c9Paul Duffin @Override 687dd252788645e940eada959bdde927426e2531c9Paul Duffin public void run() { 697dd252788645e940eada959bdde927426e2531c9Paul Duffin tearDown[0] = true; 707dd252788645e940eada959bdde927426e2531c9Paul Duffin } 717dd252788645e940eada959bdde927426e2531c9Paul Duffin }; 727dd252788645e940eada959bdde927426e2531c9Paul Duffin 737dd252788645e940eada959bdde927426e2531c9Paul Duffin MyTestSuiteBuilder builder = new MyTestSuiteBuilder(); 747dd252788645e940eada959bdde927426e2531c9Paul Duffin Test test = builder.usingGenerator("yam").named("yam") 757dd252788645e940eada959bdde927426e2531c9Paul Duffin .withFeatures(CollectionFeature.NONE).withSetUp(setUpRunnable) 767dd252788645e940eada959bdde927426e2531c9Paul Duffin .withTearDown(tearDownRunnable).createTestSuite(); 777dd252788645e940eada959bdde927426e2531c9Paul Duffin TestResult result = new TestResult(); 787dd252788645e940eada959bdde927426e2531c9Paul Duffin test.run(result); 797dd252788645e940eada959bdde927426e2531c9Paul Duffin assertTrue(testWasRun); 807dd252788645e940eada959bdde927426e2531c9Paul Duffin assertTrue(setUp[0]); 817dd252788645e940eada959bdde927426e2531c9Paul Duffin assertTrue(tearDown[0]); 827dd252788645e940eada959bdde927426e2531c9Paul Duffin } 837dd252788645e940eada959bdde927426e2531c9Paul Duffin} 84