예제 #1
0
파일: UnitTest1.cs 프로젝트: GLZ92/Sockets
        void Iterative_OnComplete(ExpressionEventArgs sender)
        {
            TestToken token     = sender.token as TestToken;
            Iterative iterative = sender.term as Iterative;

            Object.Equals(token.Id, "dummy");
        }
예제 #2
0
파일: UnitTest1.cs 프로젝트: GLZ92/Sockets
        public void ParallelOperator2()
        {
            var term1 = new TestTerm()
            {
                Id = "A"
            };
            var term2 = new TestTerm()
            {
                Id = "B"
            };

            var iterative1 = new Iterative(term1);
            var iterative2 = new Iterative(term2);
            var parallel   = new Parallel(new List <Term>(new Term[] { iterative1, iterative2 }));

            var tokenA = new TestToken()
            {
                Id = "A"
            };
            var tokenB = new TestToken()
            {
                Id = "B"
            };

            term1.OnComplete += Term1_OnComplete1;
            term2.OnComplete += Term2_OnComplete1;

            parallel.Fire(tokenA);
            parallel.Fire(tokenA);
            parallel.Fire(tokenB);

            Assert.True(parallel.State == ExpressionState.Complete);
        }
        public void Factorial_should_return_same_result_for_all_implementations(int n)
        {
            var basicResult      = BasicRecursion.Factorial(n);
            var tailResult       = TailRecursion.Factorial(n);
            var iterrativeResult = Iterative.Factorial(n);
            var enumerableResult = Enumerable.Factorial(n);

            Assert.That(basicResult, Is.EqualTo(tailResult));
            Assert.That(basicResult, Is.EqualTo(iterrativeResult));
            Assert.That(basicResult, Is.EqualTo(enumerableResult));
        }
예제 #4
0
파일: UnitTest1.cs 프로젝트: GLZ92/Sockets
        public void IterativeOperator()
        {
            var term1 = new TestTerm
            {
                Id = "dummy"
            };
            var iterative = new Iterative(term1);
            var token1    = new TestToken
            {
                Id = "dummy"
            };

            iterative.OnComplete += Iterative_OnComplete;

            iterative.Fire(token1);
            Assert.True(iterative.State == ExpressionState.Complete);

            // execute the term more than once
            iterative.Fire(token1);
            Assert.True(iterative.State == ExpressionState.Complete);
        }
예제 #5
0
 public int IterativeTest()
 {
     return(Iterative.Factorial(N));
 }
예제 #6
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int mode = 0;

            DA.GetData(1, ref mode);

            double numValA = 0.5;

            DA.GetData(2, ref numValA);

            double numValB = 0.5;

            DA.GetData(3, ref numValB);

            int numValC = 1;

            DA.GetData(4, ref numValC);

            Filter filter = new Filter();

            int[] indices = new int[] { 2, 3, 4 };

            switch ((FilterModes)mode)
            {
            case FilterModes.Otsu:
                filter = new Otsu();
                ClearParameters(indices);
                image.Filters.Add(new Otsu());
                break;

            case FilterModes.SIS:
                filter = new SIS();
                ClearParameters(indices);
                image.Filters.Add(new SIS());
                break;

            case FilterModes.Bradley:
                SetParameter(2, "B", "Brightness", "Brightness difference limit");
                SetParameter(3, "S", "Size", "Window size");
                SetParameter(4);
                filter = new Bradley(numValA, (int)numValB);
                image.Filters.Add(new Bradley(numValA, (int)numValB));
                break;

            case FilterModes.Iterative:
                SetParameter(2, "M", "Minimum", "Minimum error value");
                SetParameter(3, "T", "Threshold", "Threshold value");
                SetParameter(4);
                filter = new Iterative(numValA, numValB);
                image.Filters.Add(new Iterative(numValA, numValB));
                break;

            case FilterModes.Nilback:
                SetParameter(2, "C", "C", "Mean offset C");
                SetParameter(3, "K", "K", "Parameter K");
                SetParameter(4, "R", "Radius", "Filter convolution radius");
                filter = new Nilback(numValA, numValB, numValC);
                image.Filters.Add(new Nilback(numValA, numValB, numValC));
                break;

            case FilterModes.Sauvola:
                SetParameter(2, "R", "R", "Dynamic range");
                SetParameter(3, "K", "K", "Parameter K");
                SetParameter(4, "R", "Radius", "Filter convolution radius");
                filter = new Sauvola(numValA, numValB, numValC);
                image.Filters.Add(new Sauvola(numValA, numValB, numValC));
                break;

            case FilterModes.WolfJolion:
                SetParameter(2, "R", "R", "Dynamic range");
                SetParameter(3, "K", "K", "Parameter K");
                SetParameter(4, "R", "Radius", "Filter convolution radius");
                filter = new WolfJolion(numValA, numValB, numValC);
                image.Filters.Add(new WolfJolion(numValA, numValB, numValC));
                break;
            }

            message = ((FilterModes)mode).ToString();
            UpdateMessage();

            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
예제 #7
0
파일: UnitTest1.cs 프로젝트: GLZ92/Sockets
        public void DisablingOperator()
        {
            var term1 = new TestTerm()
            {
                Id = "A"
            };

            var iterative1 = new Iterative(term1);

            var term2 = new TestTerm()
            {
                Id = "B"
            };

            var iterative2 = new Iterative(term2);

            var term3 = new TestTerm()
            {
                Id = "C"
            };

            var disabling = new Disabling(new List <Term>(new Term[] { iterative1, iterative2, term3 }));

            var tokenA = new TestToken()
            {
                Id = "A"
            };

            var tokenB = new TestToken()
            {
                Id = "B"
            };

            var tokenC = new TestToken()
            {
                Id = "C"
            };

            // una sequenza di token A
            disabling.Fire(tokenA);
            disabling.Fire(tokenA);

            // invio un token C e completo l'espressione
            disabling.Fire(tokenC);
            Assert.True(disabling.State == ExpressionState.Complete);

            disabling.Reset();

            // dopo un token B, l'espressione non accetta più A
            disabling.Fire(tokenA);
            disabling.Fire(tokenB);
            disabling.Fire(tokenA);

            Assert.True(disabling.State == ExpressionState.Error);

            disabling.Reset();

            //una sequenza di token A
            disabling.Fire(tokenA);
            disabling.Fire(tokenA);
            disabling.Fire(tokenA);
            disabling.Fire(tokenA);

            // stop della prima iterazione con uno o più token B
            disabling.Fire(tokenB);
            disabling.Fire(tokenB);
            Assert.True(iterative2.State == ExpressionState.Complete);

            // stop della seconda iterazione con un token C
            // invio un token C e completo l'espressione
            disabling.Fire(tokenC);
            Assert.True(disabling.State == ExpressionState.Complete);
        }