mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Further embedding of Ruby as implementation detail
Interfaces themselves as language agnostic --HG-- branch : dev extra : rebase_source : d15b587bafec98d49b322ba2dd8ad0f493798563
This commit is contained in:
@@ -36,11 +36,12 @@ namespace Orchard.Tests.Scripting {
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetRubyEngineReturnsAWorkingRubyEngine() {
|
||||
var ruby = _scriptingRuntime.GetRubyEngine();
|
||||
public void CreateScopeReturnsWorkingScope() {
|
||||
var scope = _scriptingRuntime.CreateScope();
|
||||
|
||||
Assert.IsNotNull(ruby);
|
||||
Assert.That(ruby.Execute("21 + 21"), Is.EqualTo(42));
|
||||
Assert.IsNotNull(scope);
|
||||
scope.SetVariable("alpha", 42);
|
||||
Assert.That(scope.GetVariable("alpha"), Is.EqualTo(42));
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -52,7 +53,7 @@ namespace Orchard.Tests.Scripting {
|
||||
[Test]
|
||||
public void ScriptingManagerCanEvalExpression() {
|
||||
_scriptingManager.SetVariable("foo", 21);
|
||||
Assert.That(_scriptingManager.Eval("foo + 21"), Is.EqualTo(42));
|
||||
Assert.That(_scriptingManager.ExecuteExpression("foo + 21"), Is.EqualTo(42));
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -63,8 +64,8 @@ namespace Orchard.Tests.Scripting {
|
||||
scriptManager1.SetVariable("foo", 1);
|
||||
scriptManager2.SetVariable("foo", 2);
|
||||
|
||||
var result1 = scriptManager1.Eval("3 + foo");
|
||||
var result2 = scriptManager2.Eval("3 + foo");
|
||||
var result1 = scriptManager1.ExecuteExpression("3 + foo");
|
||||
var result2 = scriptManager2.ExecuteExpression("3 + foo");
|
||||
|
||||
Assert.That(result1, Is.EqualTo(4));
|
||||
Assert.That(result2, Is.EqualTo(5));
|
||||
@@ -75,23 +76,15 @@ namespace Orchard.Tests.Scripting {
|
||||
var targetPath = Path.Combine(_tempFolderName, "SampleMethodDefinition.rb");
|
||||
File.WriteAllText(targetPath, "def f\r\nreturn 32\r\nend\r\n");
|
||||
_scriptingManager.ExecuteFile(targetPath);
|
||||
Assert.That(_scriptingManager.Eval("f / 4"), Is.EqualTo(8));
|
||||
Assert.That(_scriptingManager.ExecuteExpression("f / 4"), Is.EqualTo(8));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GlobalObjectCanBeDynamic() {
|
||||
dynamic global = new Clay(new PropBehavior());
|
||||
_scriptingManager.SetScriptingScope(_scriptingRuntime.GetRubyEngine().CreateScope((IDynamicMetaObjectProvider)global));
|
||||
|
||||
global.foo = 5;
|
||||
Assert.That(_scriptingManager.Eval("3 + foo"), Is.EqualTo(8));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CanDeclareCallbackOnGlobalMethod() {
|
||||
_scriptingManager.SetVariable("x", new Clay(new ReturnMethodNameLengthBehavior()));
|
||||
|
||||
Assert.That(_scriptingManager.Eval("3 + x.foo()"), Is.EqualTo(6));
|
||||
Assert.That(_scriptingManager.ExecuteExpression("3 + x.foo()"), Is.EqualTo(6));
|
||||
}
|
||||
|
||||
|
||||
@@ -109,7 +102,7 @@ namespace Orchard.Tests.Scripting {
|
||||
_scriptingManager.ExecuteFile(targetPath);
|
||||
_scriptingManager.SetVariable("callbacks", new CallbackApi());
|
||||
|
||||
Assert.That(_scriptingManager.Eval("execute { 1 + hello + world('yep') }"), Is.EqualTo(11));
|
||||
Assert.That(_scriptingManager.ExecuteExpression("execute { 1 + hello + world('yep') }"), Is.EqualTo(11));
|
||||
}
|
||||
|
||||
public class CallbackApi {
|
||||
|
Reference in New Issue
Block a user