/* * Copyright 2012-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.example; import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Test; public class TimeoutChangesBehaviorTest { private Database database; @Before public void setUp() { database = new Database(); database.beginTransaction(); } @Test public void testTimeoutDictatesTheSuccessOfThisTest() throws InterruptedException { assertTrue("Database should have an open transaction due to setUp().", database.isInTransaction()); } private static class Database { /** * This fake database is designed such that there is only one Transaction per thread. */ private static ThreadLocal<Transaction> TX = new ThreadLocal<Transaction>() { @Override protected Transaction initialValue() { return new Transaction(); } }; public void beginTransaction() { TX.get().beginTransaction(); } public boolean isInTransaction() { return TX.get().isInTransaction(); } } private static class Transaction { private boolean isInTransaction = false; public void beginTransaction() { isInTransaction = true; } public boolean isInTransaction() { return isInTransaction; } } }