public void EqualityLineCdfTest(int noPointsToSample, int min, int max)
        {
            // this test on home pc can do 10^7 samples in < 3 secs.
            string pdfName = "equality";
            string cdfname = "cdfName";
            ISingleVariableFunction <double, int> function = new EqualityPdf();
            var randomActor = Sys.ActorOf(RandomDoubleActor.CreateProps(new System.Random()));
            var generator   = Sys.ActorOf(DistributionGenerator.CreateProps(randomActor), DistributionGenerator.Name);

            var tp = CreateTestProbe();

            generator.Tell(new DistributionGenerator.SubscribeToPdfAdded(), tp);
            generator.Tell(new DistributionGenerator.AddProbabilityDensityFunction(pdfName, function), tp);

            var pdfAdded = tp.ExpectMsg <DistributionGenerator.PdfFunctionAdded>();

            generator.Tell(new DistributionGenerator.SubscribeToCdfAdded(), tp);
            generator.Tell(new DistributionGenerator.GenerateCdfFromPdf(cdfname, pdfName, min, max, noPointsToSample));

            var cdfAdded = tp.ExpectMsg <DistributionGenerator.CdfFunctionAdded>();

            string distributionName = "testDistribution";

            generator.Tell(new DistributionGenerator.Generate(distributionName, cdfname, noPointsToSample));
            generator.Tell(new DistributionGenerator.SubscribeToDistributionGenerated(), tp);

            var generatedMessage = tp.ExpectMsg <DistributionGenerator.DistributionGenerated>();

            Assert.AreEqual(distributionName, generatedMessage.DistributionName);
            Assert.IsTrue(generatedMessage.Distribution.Min() >= min);
            Assert.IsTrue(generatedMessage.Distribution.Max() <= max);
            Assert.AreEqual(noPointsToSample, generatedMessage.Distribution.Length);
        }
        public void CallGeneratorWithMinMaxNoResults(int min, int max, int noResults)
        {
            string functionName = "equality";
            ISingleVariableFunction <int, double> function = new EqualityCdf(min, max);
            var randomActor = Sys.ActorOf(RandomDoubleActor.CreateProps(new System.Random()));
            var generator   = Sys.ActorOf(DistributionGenerator.CreateProps(randomActor), DistributionGenerator.Name);

            var tp = CreateTestProbe();

            generator.Tell(new DistributionGenerator.SubscribeToCdfAdded(), tp);
            generator.Tell(new DistributionGenerator.AddCumulativeDistributionFunction(functionName, function), tp);

            var msg = tp.ExpectMsg <DistributionGenerator.CdfFunctionAdded>();

            Assert.AreEqual(functionName, msg.FunctionName);

            string distributionName = "testDistribution";

            generator.Tell(new DistributionGenerator.Generate(distributionName, functionName, noResults));
            generator.Tell(new DistributionGenerator.SubscribeToDistributionGenerated(), tp);

            var generatedMessage = tp.ExpectMsg <DistributionGenerator.DistributionGenerated>();

            Assert.AreEqual(distributionName, generatedMessage.DistributionName);
            Assert.IsTrue(generatedMessage.Distribution.Min() >= min);
            Assert.IsTrue(generatedMessage.Distribution.Max() <= max);
            Assert.AreEqual(noResults, generatedMessage.Distribution.Length);
        }
Пример #3
0
            public static void SetupGeneratorActors(Random random, int locationNameLength = 5)
            {
                if (random == null)
                {
                    throw new ArgumentNullException(nameof(random));
                }
                RandomIntActorRef    = ActorSystem.ActorOf(RandomIntActor.CreateProps(random), RandomIntActor.Name);
                RandomDoubleActorRef = ActorSystem.ActorOf(RandomDoubleActor.CreateProps(random), RandomDoubleActor.Name);

                LocationNameGeneratorActorRef = ActorSystem.ActorOf(LocationNameGeneratorActor.CreateProps(RandomIntActorRef, locationNameLength), LocationNameGeneratorActor.Name);
            }