/// <summary>
        /// Method for running tests selected in the view
        /// </summary>
        /// <remarks>
        /// Gets data from the view object, such as file for binary string file, and which tests to run with which data
        /// </remarks>
        internal void runTests()
        {
            Model       model = new Model(Util.str2ints(Util.loadData(view.getFilePath()), view.getSplitStr()));
            List <Test> tests = new List <Test>();

            if (view.performFrequencyTest())
            {
                tests.Add(new Frequency(view.getFrequency_n(), ref model));
            }
            if (view.performBlockFrequencyTest())
            {
                tests.Add(new BlockFrequency(view.getBlockFrequency_M(), view.getBlockFrequency_n(), ref model));
            }
            if (view.performRunsTest())
            {
                tests.Add(new Runs(view.getRuns_n(), ref model));
            }
            if (view.performLongestRunOfOnesTest())
            {
                tests.Add(new LongestRunOfOnes(view.getLongestRunOfOnes_n(), ref model));
            }
            if (view.performMatrixRankTest())
            {
                tests.Add(new Rank(view.getMatrixRank_n(), ref model));
            }
            if (view.performDiscreteFourierTransformTest())
            {
                tests.Add(new DiscreteFourierTransform(view.getDiscreteFourierTransform_n(), ref model));
            }
            if (view.performNonOverlappingTemplateMatchingTest())
            {
                if (view.performSingleNonOverlappingTemplateMatchingTest())
                {
                    tests.Add(new NonOverlappingTemplateMatching(view.getNonOverlappingTemplateMatching_B(), view.getNonOverlappingTemplateMatching_n(), ref model));
                }
                else
                {
                    tests.Add(new NonOverlappingTemplateMatching(view.getNonOverlappingTemplateMatching_m(), view.getNonOverlappingTemplateMatching_n(), ref model));
                }
            }
            if (view.performOverlappingTemplateMatchingTest())
            {
                tests.Add(new OverlappingTemplateMatching(view.getOverlappingTemplateMatching_B(), view.getOverlappingTemplateMatching_n(), ref model));
            }
            if (view.performUniversalTest())
            {
                if (view.performCustomUniversalTest())
                {
                    tests.Add(new Universal(view.getUniversal_L(), view.getUniversal_Q(), view.getUniversal_n(), ref model));
                }
                else
                {
                    tests.Add(new Universal(view.getUniversal_n(), ref model));
                }
            }
            if (view.performLinearComplexityTest())
            {
                tests.Add(new LinearComplexity(view.getLinearComplexity_M(), view.getLinearComplexity_n(), ref model));
            }
            if (view.performSerialTest())
            {
                tests.Add(new Serial(view.getSerial_m(), view.getSerial_n(), ref model));
            }
            if (view.performApproximateEntropyTest())
            {
                tests.Add(new ApproximateEntropy(view.getApproximateEntropy_m(), view.getApproximateEntropy_n(), ref model));
            }
            if (view.performCumulativeSumsTest())
            {
                tests.Add(new CumulativeSums(view.performForwardCumulativeSumsTest(), view.getCumulativeSums_n(), ref model));
            }
            if (view.performRandomExcursionsTest())
            {
                tests.Add(new RandomExcursions(view.getRandomExcursions_n(), ref model));
            }
            if (view.performRandomExcursionsVariantTest())
            {
                tests.Add(new RandomExcursionsVariant(view.getRandomExcursionsVariant_n(), ref model));
            }
            view.showProgressBar();
            view.updateProgressBar(10);
            Report full = new Report("All Tests");

            foreach (Test t in tests)
            {
                t.run(true);
                view.updateProgressBar(90 / tests.Count);
                full.Write(model.reports.Last().Value.body);
            }
            model.reports.Add(full.title, full);
            new ReportsForm(model.reports).Show();
            view.hideProgressBar();
        }