// Copyright (C) 2018 Collabora Ltd.
//   Author: Justin Kim <justin.kim@collabora.com>
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
// 02110-1301  USA

using Gst;
using System.Threading;
using NUnit.Framework;

namespace GstSharp.Tests
{
    [TestFixture]
    public abstract class TestBase
    {
        GLib.MainLoop mainLoop;
        Thread thread;

        void Run(object o)
        {
            GLib.MainContext context = new GLib.MainContext();
            mainLoop = new GLib.MainLoop(context);
        }

        [SetUp]
        public void BaseSetUp()
        {
            Assert.IsTrue(Application.InitCheck());

            thread = new Thread(Run);
            thread.Start();
        }

        [TearDown]
        public void BaseTearDown()
        {
            mainLoop.Quit();
            thread.Join();
        }
    }
}