using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnitTestSharpHLSL;

namespace UnitTestSharpHLSLTests
{
    public class IsShaderLevelTestWorking : UnitTestSharp.TestFixture
    {
        Renderer _renderer;
        public override void FixtureSetup()
        {
            _renderer = new Renderer();            
        }

        public override void FixtureTeardown()
        {
            _renderer.Dispose();
        }

        public void Basic_True()
        {
            string fileText = @"
                #include <UnitTestSharpHLSL.fx>
                void Test()
                {
                    Check(true);
                }";

            TestRunner.Test test = new TestRunner.Test
            {
                filename = "dummy.fx",
                lineNumber = 2,
                fileText = fileText,
                testName = "Test"
            };

            Check(_renderer.RunTest(test));
        }

        public void Basic_False()
        {
            string fileText = @"
                #include <UnitTestSharpHLSL.fx>
                void Test()
                {
                    Check(false);
                }";

            TestRunner.Test test = new TestRunner.Test
            {
                filename = "dummy.fx",
                lineNumber = 2,
                fileText = fileText,
                testName = "Test"
            };

            CheckFalse(_renderer.RunTest(test));
        }

        public void Batch()
        {
            string fileText = @"
                #include <UnitTestSharpHLSL.fx>
                void Test1()
                {
                    Check(true);
                }

                void Test2()
                {
                    Check(true);
                }";

            TestRunner.Test[] tests = new TestRunner.Test[]
            {
                new TestRunner.Test
                {
                    filename = "dummy.fx",
                    lineNumber = 2,
                    fileText = fileText,
                    testName = "Test1"
                },

                new TestRunner.Test
                {
                    filename = "dummy.fx",
                    lineNumber = 7,
                    fileText = fileText,
                    testName = "Test2"
                }
            };

            _renderer.RunTestBatch(tests, null);
        }
    }
}