private void invokeListener(TestListenerDescriptor testListenerDescriptor, string method, params object[] parameters)
        {
            TestListener testListenerInstance = null;

            var testScriptObject = parameters[0] is TestScriptObject ? (TestScriptObject)parameters[0] : null;

            lock (getInstanceLock)
            {
                testListenerInstance = getListenerInstance(testListenerDescriptor);
            }

            testListenerInstance.VirtualUser = VirtualUser;
            Type       type       = testListenerInstance.GetType();
            MethodInfo methodInfo = type.GetMethod(method);

            // If method does not have the NoOperation attribute applied, continue
            if (isOperable(methodInfo))
            {
                if (testScriptObject is null)
                {
                    logEvent.Info($"Invoking listener \"{testListenerDescriptor.Name}\" event handler \"{method}\" ({VirtualUser})");
                }
                else
                {
                    logEvent.Info(
                        $"Invoking listener \"{testListenerDescriptor.Name}\" event handler \"{method}\":  \"{testScriptObject.Title}\" ({VirtualUser})");
                }

                methodInfo.Invoke(testListenerInstance, parameters);
            }
        }
        private TestListener getListenerInstance(TestListenerDescriptor testListenerDescriptor)
        {
            TestListener listenerInstance;

            if (!listenerInstances.TryGetValue(testListenerDescriptor.GetHashCode(), out listenerInstance))
            {
                Assembly listenerAssembly = Assembly.LoadFrom(testListenerDescriptor.Assembly);
                Type     listenerType     = listenerAssembly.GetType(testListenerDescriptor.Type);
                listenerInstance = Activator.CreateInstance(listenerType, testListenerDescriptor.Parameters) as TestListener;
                listenerInstances.Add(testListenerDescriptor.GetHashCode(), listenerInstance);
            }

            return(listenerInstance);
        }
        public TestVerdict TestListeners()
        {
            try
            {
                var testListeners = new TestListenerCollection();

                var parameters = new Dictionary <string, string>();
                parameters.Add("Param1", "Value1");
                parameters.Add("Param2", "Value2");

                var testListener = new TestListenerDescriptor()
                {
                    Name        = "My listener",
                    Description = "My description",
                    Assembly    = @"C:\temp\library",
                    OnFailure   = OnFailure.Stop,
                    Status      = Status.Inactive,
                    Parameters  = parameters
                };

                testListeners.Add(testListener);

                var property = new TestProperty("TestListeners", "description", @"C:\temp", true);
                TestProperties.AddProperty(property);

                TestListenerCollection.SerializeToFile(testListeners, @"c:\temp\testlisteners.confg");

                var bob = TestListenerCollection.DeserializeFromFile(@"c:\temp\testlisteners.confg");

                TestMessage += "Success";
                TestVerdict  = TestVerdict.Pass;
            }
            catch (Exception e)
            {
                TestMessage += e.ToString();
                TestVerdict  = TestVerdict.Error;
            }
            finally
            {
            }

            return(TestVerdict);
        }
        private void newFile()
        {
            try
            {
                DialogResult result = DialogResult.No;

                if (_changed)
                {
                    // Prompt to save if currently loaded has changed.
                    result = promptToSave();
                }

                if (result != DialogResult.Cancel)
                {
                    if (result == DialogResult.Yes)
                    {
                        saveFile();
                    }

                    // Create new listener collection
                    _testListeners = new TestListenerCollection();

                    // Create new descriptor, add to collection and initialize tree view.
                    var descriptor = new TestListenerDescriptor()
                    {
                        Name = _newName
                    };

                    _testListeners.Add(descriptor);
                    displayListenerCollection(_testListeners);

                    markAsUnchanged();

                    // Override Save button disable
                    this.m_saveBtn.Enabled = true;
                }
            }
            catch (Exception e)
            {
                DisplayErrorMessage(e.Message);
            }
        }
        private void m_addToolStripButton_Click_1(object sender, EventArgs e)
        {
            // Create new descriptor
            var descriptor = new TestListenerDescriptor()
            {
                Name = _newName
            };

            // Add to collection
            _testListeners.Add(descriptor);

            // Add to tree view.
            var node = new TreeNode(descriptor.Name);

            node.Tag = descriptor;
            m_testListenersTreeView.Nodes[0].Nodes.Add(node);
            m_testListenersTreeView.SelectedNode = node;

            // Mark file as dirty.
            markAsChanged();
        }
 public void AddListener(TestListenerDescriptor testListener)
 {
     _testListeners.Add(testListener);
 }