public async Task <CounterExampleResults> Handle(CounterExampleParams request, CancellationToken cancellationToken)
 {
     _log.LogInformation(string.Format(Resources.LoggingMessages.request_handle, _method));
     try
     {
         var file = _workspaceManager.GetFileRepository(request.DafnyFile);
         ICounterExampleProvider provider = new CounterExampleProvider(file.PhysicalFile);
         return(await Task.Run(() => provider.LoadCounterModel(), cancellationToken));
     }
     catch (Exception e)
     {
         HandleError(string.Format(Resources.LoggingMessages.request_error, _method), e);
         return(new CounterExampleResults());
     }
 }
        public void BooleanCE()
        {
            var model = Files.ce_bool_bvd;
            var file  = Files.ce_bool;

            var physFile = CreatePhysFile(file);

            var provider = new CounterExampleProvider(physFile, model);

            CounterExampleResults result         = provider.LoadCounterModel();
            List <string>         resultAsString = result.CounterExamples.ToStringList();

            List <string> expectation = new List <string>()
            {
                "L3 C15: in1 = false; "
            };

            CollectionAssert.AreEquivalent(expectation, resultAsString);
        }
        public void LoopInvariantFailure()
        {
            var model = Files.ce_li_bvd;
            var file  = Files.ce_li;

            var physFile = CreatePhysFile(file);

            var provider = new CounterExampleProvider(physFile, model);

            CounterExampleResults result         = provider.LoadCounterModel();
            List <string>         resultAsString = result.CounterExamples.ToStringList();

            List <string> expectation = new List <string>()
            {
                "L12 C24: b = 0; n = 5881; "
            };

            CollectionAssert.AreEquivalent(expectation, resultAsString);
        }
        public void StringReference()
        {
            var model = Files.ce_string_bvd;
            var file  = Files.ce_string;

            var physFile = CreatePhysFile(file);

            var provider = new CounterExampleProvider(physFile, model);

            CounterExampleResults result         = provider.LoadCounterModel();
            List <string>         resultAsString = result.CounterExamples.ToStringList();

            List <string> expectation = new List <string>()
            {
                "L3 C23: in1 = [Object Reference]; "
            };

            CollectionAssert.AreEquivalent(expectation, resultAsString);
        }
        public void PostconditionViolation2()
        {
            var model = Files.ce_fail2_bvd;
            var file  = Files.ce_fail2;

            var physFile = CreatePhysFile(file);

            var provider = new CounterExampleProvider(physFile, model);

            CounterExampleResults result         = provider.LoadCounterModel();
            List <string>         resultAsString = result.CounterExamples.ToStringList();

            List <string> expectation = new List <string>()
            {
                "L3 C23: inp1 = -24; inp2 = 0; "
            };

            CollectionAssert.AreEquivalent(expectation, resultAsString);
        }
        public void FloatyCE()
        {
            var model = Files.ce_float_bvd;
            var file  = Files.ce_float;

            var physFile = CreatePhysFile(file);

            var provider = new CounterExampleProvider(physFile, model);

            CounterExampleResults result         = provider.LoadCounterModel();
            List <string>         resultAsString = result.CounterExamples.ToStringList();

            List <string> expectation = new List <string>()
            {
                "L3 C22: inp1 = -160.0; "
            };

            CollectionAssert.AreEquivalent(expectation, resultAsString);
        }
        public void CEWithTwoConnectedMethods()
        {
            var model = Files.ce_2mc_bvd;
            var file  = Files.ce_2mc;

            var physFile = CreatePhysFile(file);

            var provider = new CounterExampleProvider(physFile, model);

            CounterExampleResults result         = provider.LoadCounterModel();
            List <string>         resultAsString = result.CounterExamples.ToStringList();

            List <string> expectation = new List <string>()
            {
                "L3 C19: in1 = 2446; ",
                "L9 C19: in2 = 891; "
            };

            CollectionAssert.AreEquivalent(expectation, resultAsString);
        }
示例#8
0
        public void CounterExample()
        {
            var listArgs = args.ToList();

            listArgs.Add("/mv:" + CounterExampleProvider.ModelBvd);
            ServerUtils.ApplyArgs(listArgs.ToArray(), reporter);
            try {
                if (Parse() && Resolve() && Translate())
                {
                    var counterExampleProvider = new CounterExampleProvider();
                    foreach (var boogieProgram in boogiePrograms)
                    {
                        RemoveExistingModel();
                        BoogieOnce(boogieProgram.Item1, boogieProgram.Item2);
                        var model = counterExampleProvider.LoadCounterModel();
                        Console.WriteLine("COUNTEREXAMPLE_START " + ConvertToJson(model) + " COUNTEREXAMPLE_END");
                    }
                }
            } catch (Exception e) {
                Console.WriteLine("Error collection models: " + e.Message);
            }
        }