using NUnit.Framework;

namespace unit
{
    public abstract class run
    {
        [TestFixtureSetUp]
        public virtual void initialize()
        {
            context();
            because();
        }

        [TestFixtureTearDown]
        public virtual void cleanup() {}

        [Test]
        public void all()
        {
            GetType().run_all<it>(this);
        }

        protected virtual void context()
        {
            GetType().run_stacked<context>(this);
        }

        protected virtual void because()
        {
            GetType().run_single<because>(this);
        }
    }
}