//Test Three: upload of 10 files of sizes 1 KB, 1 MB, 3 MB, 5 MB, 10 MB, 20 MB with chunk size y (50% lower than default) and z (50% higher than default)
        private static void TestThree(GoogleDrive gd, Mega m)
        {
            File.Delete("three_y_lower.txt");
            File.Delete("three_z_higher.txt");
            int[]  sizes = { 1, 1, 3, 5, 10, 20 };
            Type[] types = { Type.KB, Type.MB, Type.MB, Type.MB, Type.MB, Type.MB };

            for (var i = 0; i < sizes.Length; i++)
            {
                Test("three_y_lower.txt", gd, 10, sizes[i], types[i], 5);
                Test("three_y_lower.txt", m, 10, sizes[i], types[i], 512);
            }

            for (var i = 0; i < sizes.Length; i++)
            {
                Test("three_z_higher.txt", gd, 10, sizes[i], types[i], 15);
                Test("three_z_higher.txt", m, 10, sizes[i], types[i], 1536);
            }
        }
        static void Main(string[] args)
        {
            GoogleDrive gd = new GoogleDrive();
            Mega        m  = new Mega();
            Dropbox     db = new Dropbox();

            IClouds[] clouds = { gd, m, db };

            foreach (var cloud in clouds)
            {
                cloud.StartService();
            }

            TestOne(clouds);
            TestTwo(clouds);
            TestThree(gd, m);
            TestFour(gd, m, db);
            Console.ReadLine();
        }
        // Test Four: 24-hour consecutive upload test of 1 MB file
        private static void TestFour(GoogleDrive gd, Mega m, Dropbox db)
        {
            File.Delete("four_GoogleDrive.txt");
            File.Delete("four_Mega.txt");
            File.Delete("four_Dropbox.txt");

            var tasks = new Task[3];

            while (true)
            {
                tasks[0] = new Task(() => Upload("four_GoogleDrive.txt", gd, 1, 1, Type.MB, 0));
                tasks[1] = new Task(() => Upload("four_Mega.txt", m, 1, 1, Type.MB, 0));
                tasks[2] = new Task(() => Upload("four_Dropbox.txt", db, 1, 1, Type.MB, 0));

                foreach (var task in tasks)
                {
                    task.Start();
                }

                Task.WaitAll(tasks);
            }
        }