Esempio n. 1
0
        static void QueryCartesianProduct()
        {
            using (var even = new EvenNumberGenerator(10))
            {
                using (var odd = new OddNumberGenerator(10))
                {
                    var evenObservable = Observable.FromEvent <int>(
                        a => even.NumberGenerated += a,
                        r => even.NumberGenerated -= r);

                    var oddObservable = Observable.FromEvent <int>
                                            (a => odd.NumberGenerated += a,
                                            r => odd.NumberGenerated  -= r);

                    // Re-write this query to insert the side-effect
                    // of printing every value of n3, i.e. the product of n1 and n2
                    // before the filter is applied on n3
                    var composition = from n1 in evenObservable
                                      from n2 in oddObservable
                                      let n3 = n1 * n2
                                               where n3 < 50
                                               select n3;

                    var subscription = composition.Subscribe(Console.WriteLine);

                    Console.WriteLine("Press any key to exit the program.");
                    Console.ReadKey();
                    subscription.Dispose();
                }
            }
        }
Esempio n. 2
0
        static void QueryZip()
        {
            using (var even = new EvenNumberGenerator(10))
            {
                using (var odd = new OddNumberGenerator(10))
                {
                    var evenObservable = Observable.FromEvent <int>(
                        a => even.NumberGenerated += a,
                        r => even.NumberGenerated -= r);

                    var oddObservable = Observable.FromEvent <int>
                                            (a => odd.NumberGenerated += a,
                                            r => odd.NumberGenerated  -= r);

                    var composition = evenObservable
                                      .Zip(oddObservable, (n1, n2) => n1 * n2)
                                      .Do(product => Console.WriteLine($"Product : {product}"))
                                      .Where(product => product < 50);

                    var subscription = composition.Subscribe(Console.WriteLine);

                    Console.WriteLine("Press any key to exit the program.");
                    Console.ReadKey();
                    subscription.Dispose();
                }
            }
        }
Esempio n. 3
0
        public void TestOddNumberGenerator()
        {
            const string expected  = "1, 3, 5, 7, 9";
            var          generator = new OddNumberGenerator {
                Range = new Range0To10()
            };
            var result = generator.GenerateOutput();

            Assert.AreEqual(expected, result);
        }
        public static int Generate(int min, int max, out int iterationCount)
        {
            int  generatedNumber;
            bool isPrime;

            iterationCount = 0;

            do
            {
                generatedNumber = OddNumberGenerator.Generate(min, max);
                isPrime         = PrimeNumChecker.IsPrime(generatedNumber);

                iterationCount++;
            }while (!isPrime);

            return(generatedNumber);
        }