public virtual bool Simulate()

in utilities/Microsoft.Quantum.Katas/CheckKataMagic.cs [145:197]


        public virtual bool Simulate(OperationInfo test, string userAnswer, IChannel channel)
        {
            // The skeleton answer used to compile the workspace
            var skeletonAnswer = FindSkeletonAnswer(test, userAnswer);
            if (skeletonAnswer == null)
            {
                channel.Stderr($"Invalid task name: {userAnswer}");
                return false;
            }

            // The reference implementation
            var referenceAnswer = FindReferenceImplementation(test, userAnswer);
            if (referenceAnswer == null)
            {
                channel.Stderr($"Reference answer not found: {userAnswer}");
                return false;
            }

            try
            {
                var qsim = CreateSimulator();
                var hasWarnings = false;

                qsim.DisableLogToConsole();

                qsim.OnDisplayableDiagnostic += channel.Display;
                
                qsim.Register(skeletonAnswer.RoslynType, referenceAnswer.RoslynType, typeof(ICallable));
                qsim.OnLog += (msg) =>
                {
                    hasWarnings = msg?.StartsWith("[WARNING]") ?? hasWarnings;
                    channel.Stdout(msg);
                };

                var value = test.RunAsync(qsim, null).Result;

                if (qsim is IDisposable dis) { dis.Dispose(); }

                return !hasWarnings;
            }
            catch (AggregateException agg)
            {
                foreach (var e in agg.InnerExceptions) { channel.Stderr(e.Message); }
                channel.Stderr($"Try again!");
                return false;
            }
            catch (Exception e)
            {
                channel.Stderr(e.Message);
                channel.Stderr($"Try again!");
                return false;
            }
        }