blob: 461b84ec5d20d35d3fad1cfb8d4cfab1a76bf73c [file] [log] [blame]
/*
* Copyright 2015-2022 the original author or authors.
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v2.0 which
* accompanies this distribution and is available at
*
* https://www.eclipse.org/legal/epl-v20.html
*/
package org.junit.jupiter.migrationsupport.rules;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertSame;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.migrationsupport.rules.FailAfterAllHelper.fail;
import org.junit.Rule;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Test;
import org.junit.rules.ExternalResource;
import org.junit.rules.Verifier;
@EnableRuleMigrationSupport
public class EnableRuleMigrationSupportWithBothRuleTypesTests {
private static boolean afterOfRule1WasExecuted = false;
private static boolean beforeOfRule2WasExecuted = false;
private static boolean afterOfRule2WasExecuted = false;
private static int numberOfRule1InstancesCreated = 0;
private static int numberOfRule2InstancesCreated = 0;
@Rule
public Verifier verifier1 = new Verifier() {
{
numberOfRule1InstancesCreated++;
}
@Override
protected void verify() {
afterOfRule1WasExecuted = true;
}
};
@Rule
public ExternalResource getResource2() {
return new ExternalResource() {
{
numberOfRule2InstancesCreated++;
}
private Object instance;
@Override
protected void before() {
instance = this;
beforeOfRule2WasExecuted = true;
}
@Override
protected void after() {
assertNotNull(instance);
assertSame(instance, this);
afterOfRule2WasExecuted = true;
}
};
}
@Test
void beforeMethodOfBothRule2WasExecuted() {
assertTrue(beforeOfRule2WasExecuted);
}
@AfterAll
static void afterMethodsOfBothRulesWereExecuted() {
assertEquals(1, numberOfRule1InstancesCreated);
assertEquals(1, numberOfRule2InstancesCreated);
if (!afterOfRule1WasExecuted)
fail();
if (!afterOfRule2WasExecuted)
fail();
}
}