//----< load assemblies from testersLocation and run their tests >-----

        public string loadAndExerciseTesters()
        {
            AppDomain currentDomain = AppDomain.CurrentDomain;

            currentDomain.AssemblyResolve += new ResolveEventHandler(LoadFromComponentLibFolder);

            try
            {
                DllLoaderExec loader = new DllLoaderExec();

                // load each assembly found in testersLocation

                Assembly asm      = Assembly.Load(File.ReadAllBytes(testFileSpec));
                string   fileName = Path.GetFileName(testFileSpec);
                Console.Write("\n  loaded {0}\n", fileName);

                // exercise each tester found in assembly

                Type[] types = asm.GetTypes();
                foreach (Type t in types)
                {
                    // if type supports ITest interface then run test

                    if (t.GetInterface("DllLoaderDemo.ITest", true) != null)
                    {
                        if (!loader.runSimulatedTest(t, asm))
                        {
                            Console.Write("\n  test {0} failed to run\n", t.ToString());
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
            return("Tests completed");
        }