예제 #1
0
        private void SetupMethodTesterCommand(MethodTester methodTester)
        {
            methodTester.PropertyChanged += (sender, e) => OnMethodTesterPropertyChanged((MethodTester)sender, e.PropertyName);

            var command = new TestCommand(methodTester);

            command.Complete += (o, e) => OnCommandComplete(methodTester, (TestCompleteEventArgs)e);
            CommandQueue.Enqueue(command);
        }
예제 #2
0
        protected override void Before_all_tests()
        {
            base.Before_all_tests();

            var classUnderTest  = new ClassUnderTest();
            var testType        = classUnderTest.GetType();
            var methodUnderTest = testType.GetMethod("PassingMethodUnderTest");

            _methodTester        = new MethodTester(methodUnderTest, testType);
            _methodTesterMonitor = new MethodTesterMonitor(_methodTester);
            _methodTester.Initialize();
        }
예제 #3
0
        protected override void Before_all_tests()
        {
            base.Before_all_tests();

            var classUnderTest = new ClassUnderTest();
            var testType = classUnderTest.GetType();
            var methodUnderTest = testType.GetMethod("PassingMethodUnderTest");

            _methodTester = new MethodTester(methodUnderTest, testType);
            _methodTesterMonitor = new MethodTesterMonitor(_methodTester);
            _methodTester.Initialize();
        }
예제 #4
0
        public ITestSuite AutomaticSmartMethodSuite()
        {
            ArgumentNullDummyClass dummy = new ArgumentNullDummyClass();
            MethodTester           suite = new MethodTester(
                "SmartMethod",
                new MultiArgumentDelegate(dummy.SmartMethod),
                "hello",
                "world",
                1
                );

            suite.AddAllThrowArgumentNull();

            return(suite.Suite);
        }
예제 #5
0
        public void MethodTest()
        {
            var tester = new MethodTester();

            var env       = new TestEnv <Entry <IMethodable>, IMethodable>(new Entry <IMethodable>(tester));
            var valuesObs = from gpi in env.Queryable.QueryNotifier <IMethodable>().SupplyEvent()
                            from v1 in gpi.GetValue1().RemoteValue()
                            from v2 in gpi.GetValue2().RemoteValue()
                            select new { v1, v2 };

            var values = valuesObs.FirstAsync().Wait();

            env.Dispose();

            Assert.AreEqual(1, values.v1);
            Assert.AreEqual(2, values.v2);
        }
예제 #6
0
        private void OnMethodTesterPropertyChanged(MethodTester mt, string propertyName)
        {
            if (propertyName == "IsRunning" && mt.IsRunning)
            {
                SendTestBeginClientEvent(mt);
            }

            if (propertyName == "IsRunning" && !mt.IsRunning)
            {
                if (IsFinalResultStatus(mt))
                {
                    MethodInfo methodInfo = mt.Method.MethodInfo;
                    if (!ShouldReportedThisInstanceOfTheFinalResult(methodInfo))
                    {
                        return;
                    }

                    switch (mt.Status)
                    {
                    case TestResult.Skip:
                        SendTestIgnoredClientEvent(methodInfo, mt.Message);
                        break;

                    case TestResult.Fail:
                        SendTestFailureClientEvent(methodInfo, mt.Message);
                        Interlocked.Increment(ref _totalFailedCount);
                        break;

                    case TestResult.Success:
                        SendTestPassedClientEvent(methodInfo);
                        break;
                    }

                    Interlocked.Increment(ref _totalTestsRun);

                    if (_totalTestsRun == _totalTestsExpectedToRun)
                    {
                        SendTestCompleteClientEvent();
                    }
                }
            }
        }
예제 #7
0
 private static void SetMethodTesterStatus(MethodTester methodTester2, TestCompleteEventArgs args)
 {
     methodTester2.Message = args.Message;
     methodTester2.Status = args.Result;
     methodTester2.IsRunning = false;
 }
예제 #8
0
 private static void SetMethodTesterStatus(MethodTester methodTester2, TestCompleteEventArgs args)
 {
     methodTester2.Message   = args.Message;
     methodTester2.Status    = args.Result;
     methodTester2.IsRunning = false;
 }
예제 #9
0
 private void OnCommandComplete(MethodTester methodTester, TestCompleteEventArgs e)
 {
     _dispatcher.BeginInvoke(() => SetMethodTesterStatus(methodTester, e));
 }
예제 #10
0
 protected void DoMethodTests <TItem>(string methodName, IEnumerable <string> parametersToSkip = null) where TItem : class
 {
     MethodTester.TestMethodParameters <TItem>(methodName, parametersToSkip);
 }
예제 #11
0
 private void SetupMethodTesterCommand(MethodTester methodTester)
 {
     methodTester.PropertyChanged += (sender, e) => OnMethodTesterPropertyChanged((MethodTester)sender, e.PropertyName);
     methodTester.RunTests();
 }
예제 #12
0
        private static void SendTestBeginClientEvent(MethodTester methodTester)
        {
            var e = PopulateCoreInfo(new TestExecutionMethodBeginClientEvent(), methodTester.Method.MethodInfo);

            Server.PostMessage(e);
        }
예제 #13
0
 public MethodTesterMonitor(MethodTester methodTester)
 {
     _methodTester = methodTester;
 }
예제 #14
0
 public MethodTesterMonitor(MethodTester methodTester)
 {
     _methodTester = methodTester;
 }
예제 #15
0
 private void OnCommandComplete(MethodTester methodTester, TestCompleteEventArgs e)
 {
     _dispatcher.BeginInvoke(() => SetMethodTesterStatus(methodTester, e));
 }
예제 #16
0
        private void SetupMethodTesterCommand(MethodTester methodTester)
        {
            methodTester.PropertyChanged += (sender, e) => OnMethodTesterPropertyChanged((MethodTester)sender, e.PropertyName);

            var command = new TestCommand(methodTester);
            command.Complete += (o, e) => OnCommandComplete(methodTester, (TestCompleteEventArgs)e);
            CommandQueue.Enqueue(command);
        }
예제 #17
0
 private void SetupMethodTesterCommand(MethodTester methodTester)
 {
     methodTester.PropertyChanged += (sender, e) => OnMethodTesterPropertyChanged((MethodTester)sender, e.PropertyName);
     methodTester.RunTests();
 }
예제 #18
0
        private void OnMethodTesterPropertyChanged(MethodTester mt, string propertyName)
        {
            if (propertyName == "IsRunning" && mt.IsRunning)
            {
                SendTestBeginClientEvent(mt);
            }

            if (propertyName == "IsRunning" && !mt.IsRunning)
            {
                if (IsFinalResultStatus(mt))
                {
                    MethodInfo methodInfo = mt.Method.MethodInfo;
                    if (!ShouldReportedThisInstanceOfTheFinalResult(methodInfo))
                        return;

                    switch (mt.Status)
                    {
                        case TestResult.Skip:
                            SendTestIgnoredClientEvent(methodInfo, mt.Message);
                            break;
                        case TestResult.Fail:
                            SendTestFailureClientEvent(methodInfo, mt.Message);
                            Interlocked.Increment(ref _totalFailedCount);
                            break;
                        case TestResult.Success:
                            SendTestPassedClientEvent(methodInfo);
                            break;
                    }

                    Interlocked.Increment(ref _totalTestsRun);

                    if (_totalTestsRun == _totalTestsExpectedToRun)
                        SendTestCompleteClientEvent();
                }
            }
        }
예제 #19
0
 private static bool IsFinalResultStatus(MethodTester methodTester)
 {
     return(methodTester.Status == TestResult.Fail ||
            methodTester.Status == TestResult.Success ||
            methodTester.Status == TestResult.Indeterminate);
 }
예제 #20
0
 private static bool IsFinalResultStatus(MethodTester methodTester)
 {
     return methodTester.Status == TestResult.Fail ||
            methodTester.Status == TestResult.Success ||
            methodTester.Status == TestResult.Skip;
 }
예제 #21
0
        private static void SendTestBeginClientEvent(MethodTester methodTester)
        {
            var e = PopulateCoreInfo(new TestExecutionMethodBeginClientEvent(), methodTester.Method);

            Server.PostMessage(e);
        }