package testutil;

import static table.FunctionTable.resetFunctionTable;

import org.junit.After;
import org.junit.Before;

import table.ExecutionContext;

public abstract class SymbolAndFunctionCleaner {

    protected ExecutionContext executionContext;

    public SymbolAndFunctionCleaner() {
        this.executionContext = ExecutionContext.getInstance();
    }

    @Before
    public final void setUp() {
        executionContext.clearContext();
        resetFunctionTable();
        additionalSetUp();
    }

    @After
    public final void tearDown() {
        executionContext.clearContext();
        resetFunctionTable();
        additionalTearDown();
    }

    public void additionalSetUp() {}

    public void additionalTearDown() {}

}
