예제 #1
0
        public void Undo()
        {
            Context.InitWithDefault();

            var asm = Context.Current.Document;

            // Create one body -> State 1
            var body1 = TestGeomGenerator.CreateBox().Body;

            asm.AddChild(body1);
            Context.Current.UndoHandler.Commit();
            var state1 = Serializer.Serialize(asm, new SerializationContext());

            // Run Script -> State 2
            var script = ScriptInstance.LoadScriptFromFile(GetScriptFilename("CreateBoxBody.csx"));

            Assert.IsNotNull(script);
            Assert.IsTrue(script.Run());
            Assert.IsTrue(Context.Current.UndoHandler.CanUndo);
            Assert.IsFalse(Context.Current.UndoHandler.CanRedo);

            // Undo -> State 1
            Context.Current.UndoHandler.DoUndo(1);
            Assert.IsTrue(Context.Current.UndoHandler.CanUndo);
            Assert.IsTrue(Context.Current.UndoHandler.CanRedo);
            var state1a = Serializer.Serialize(asm, new SerializationContext());

            // LastNameSuffix has changed, this is intended. Decrement it to match again in serialization string.
            state1a = state1a.Replace("LastNameSuffices:{\"Box\":2}", "LastNameSuffices:{\"Box\":1}");
            Assert.AreEqual(state1, state1a);
        }
예제 #2
0
        public void PreProcessorComments()
        {
            var script = ScriptInstance.LoadScriptFromFile(GetScriptFilename("PreProcessorComments.csx"));

            Assert.IsNotNull(script);
            Assert.IsTrue(script.Run());
        }
예제 #3
0
        public void GacReference()
        {
            var script = ScriptInstance.LoadScriptFromFile(GetScriptFilename("GacReference.csx"));

            Assert.IsNotNull(script);
            Assert.IsTrue(script.Run());
        }
예제 #4
0
        public void ScriptCacheHit()
        {
            var script1 = ScriptInstance.LoadScriptFromFile(GetScriptFilename("HelloWorld.csx"));
            var script2 = ScriptInstance.LoadScriptFromFile(GetScriptFilename("HelloWorld.csx"));

            Assert.IsNotNull(script1);
            Assert.IsNotNull(script2);
            Assert.AreSame(script1, script2); // Cache hit
        }
예제 #5
0
        public void CompilerWarning()
        {
            var script = ScriptInstance.LoadScriptFromFile(GetScriptFilename("CompilerWarning.csx"));

            Assert.IsNotNull(script);

            Assert.That(Context.Current.MessageHandler.MessageItems.Any(m => m.Severity == MessageSeverity.Warning &&
                                                                        m.Explanation.Any(s => s.Contains("Warning CS0162"))));
        }
예제 #6
0
        public void CompilerError()
        {
            var script = ScriptInstance.LoadScriptFromFile(GetScriptFilename("CompilerError.csx"));

            Assert.IsNull(script);

            Assert.That(Context.Current.MessageHandler.MessageItems.Any(m => m.Severity == MessageSeverity.Error &&
                                                                        m.Explanation != null &&
                                                                        m.Explanation.Any(s => s.Contains("Error CS0117"))));
        }
예제 #7
0
        public void DocExamplesCompilation()
        {
            var path = Path.Combine(TestData.TestDataDirectory, @"..\..\Source\Macad.UserGuide\Scripting\Samples");

            foreach (var file in Directory.EnumerateFiles(path, "*.csx"))
            {
                Console.WriteLine(Path.GetFileName(file));
                var script = ScriptInstance.LoadScriptFromFile(GetScriptFilename(file), InteractiveScriptContext.Default, true);
                Assert.IsNotNull(script);
            }
        }
예제 #8
0
        public void RunScript()
        {
            var script = ScriptInstance.LoadScriptFromFile(GetScriptFilename("HelloWorld.csx"));

            Assert.IsNotNull(script);

            using (var output = new ConsoleOutput())
            {
                Assert.IsTrue(script.Run());
                Assert.AreEqual("Hello World", output.GetOutput());
            }
        }
예제 #9
0
        public void ImportSecondFile()
        {
            var script = ScriptInstance.LoadScriptFromFile(GetScriptFilename("ImportSecondFile.csx"));

            Assert.IsNotNull(script);

            using (var output = new ConsoleOutput())
            {
                Assert.IsTrue(script.Run());
                Assert.AreEqual("Hello World to the other file", output.GetOutput());
            }
            Assert.IsNull(ScriptInstance.Current);
        }
예제 #10
0
        public void ScriptCacheMiss()
        {
            var filename = GetScriptFilename("_temp_ScriptCacheMiss.csx");

            File.Copy(GetScriptFilename("HelloWorld.csx"), filename);

            var script1 = ScriptInstance.LoadScriptFromFile(filename);

            File.AppendAllText(filename, "// AppendedText");
            var script2 = ScriptInstance.LoadScriptFromFile(filename);

            File.Delete(filename);

            Assert.IsNotNull(script1);
            Assert.IsNotNull(script2);
            Assert.AreNotSame(script1, script2); // Cache miss
        }
예제 #11
0
        public void ScriptCacheMultifileMiss()
        {
            var basefilename = GetScriptFilename("ImportSecondTempFile.csx");
            var tempfilename = GetScriptFilename("_temp_ScriptCacheMiss.csx");

            File.Copy(GetScriptFilename("SecondFile.csx"), tempfilename);

            var script1 = ScriptInstance.LoadScriptFromFile(basefilename);

            File.AppendAllText(tempfilename, "// AppendedText");
            var script2 = ScriptInstance.LoadScriptFromFile(basefilename);

            File.Delete(tempfilename);

            Assert.IsNotNull(script1);
            Assert.IsNotNull(script2);
            Assert.AreNotSame(script1, script2); // Cache miss
        }
예제 #12
0
        public void VersionDefines()
        {
            ScriptCompiler.OverrideVersion(2.1f);
            using (var output = new ConsoleOutput())
            {
                var script = ScriptInstance.LoadScriptFromFile(GetScriptFilename("VersionDefines.csx"), true);
                Assert.IsNotNull(script);
                Assert.IsTrue(script.Run());
                Assert.AreEqual("-Version >= 2.0-", output.GetOutput());
            }

            ScriptCompiler.OverrideVersion(2.1f);
            using (var output = new ConsoleOutput())
            {
                var script = ScriptInstance.LoadScriptFromFile(GetScriptFilename("VersionDefines.csx"), true);
                Assert.IsNotNull(script);
                Assert.IsTrue(script.Run());
                Assert.AreEqual("-Version >= 2.0-", output.GetOutput());
            }

            ScriptCompiler.OverrideVersion(1.0f);
            using (var output = new ConsoleOutput())
            {
                var script = ScriptInstance.LoadScriptFromFile(GetScriptFilename("VersionDefines.csx"), true);
                Assert.IsNotNull(script);
                Assert.IsTrue(script.Run());
                Assert.AreEqual("-Version < 1.1-", output.GetOutput());
            }

            ScriptCompiler.OverrideVersion(1.1f);
            using (var output = new ConsoleOutput())
            {
                var script = ScriptInstance.LoadScriptFromFile(GetScriptFilename("VersionDefines.csx"), true);
                Assert.IsNotNull(script);
                Assert.IsTrue(script.Run());
                Assert.AreEqual("-Version Else-", output.GetOutput());
            }
        }
예제 #13
0
 public void DocScriptExamples(string file)
 {
     var script = ScriptInstance.LoadScriptFromFile(Path.Combine(TestData.TestDataDirectory, @"..\..\Source\Macad.UserGuide\Scripting\Samples", file), InteractiveScriptContext.Default, true);
 }