public void AudioSwitcher_getAudioDevices_Playback_IsPlayback() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); var device = engine.Evaluate <JavaScriptAudioDevice>("AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.PLAYBACK)[0]").Value; var devices = engine.Evaluate <JavaScriptAudioDevice[]>("AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.PLAYBACK)").Value; Assert.True(devices.All(x => x.IsPlayback)); Assert.True(device.IsPlayback); } }
public void AudioSwitcher_getAudioDevices_Capture_IsCapture_Enum() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); var device = engine.Evaluate <JavaScriptAudioDevice>("AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.CAPTURE)[0]").Value; var devices = engine.Evaluate <IEnumerable <JavaScriptAudioDevice> >("AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.CAPTURE)").Value; Assert.True(devices.All(x => x.IsCapture)); Assert.True(device.IsCapture); } }
public void AudioSwitcher_AudioDevice_toggleMute() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); const string js = @"AudioSwitcher.getAudioDevices()[0].toggleMute()"; //Toggles the mute and tests non equality of state var isMuted = engine.Evaluate <bool>(js).Value; Assert.NotEqual(isMuted, engine.Evaluate <bool>(js).Value); } }
public void AudioSwitcher_AudioDevice_Exists() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); const string js = @"AudioSwitcher.getAudioDevices()[0];"; var result = engine.Execute(js); Assert.NotNull(result); Assert.Null(result.ExecutionException); Assert.True(result.Success); Assert.NotEqual(null, engine.Evaluate <JavaScriptAudioDevice>(js)); Assert.IsType <JavaScriptAudioDevice>(engine.Evaluate <JavaScriptAudioDevice>(js).Value); } }
public void AudioSwitcher_AudioDevice_setMute_false() { using (var engine = new JsEngine()) { const string js = @"AudioSwitcher.getAudioDevices()[0].mute(false)"; Assert.Equal(false, engine.Evaluate <bool>(js).Value); } }
public void AudioSwitcher_AudioDevice_setVolume() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); const string setTo10 = @"AudioSwitcher.getAudioDevices()[0].volume(10)"; const string getVolume = @"AudioSwitcher.getAudioDevices()[0].volume()"; var orignalVol = engine.Evaluate <int>(getVolume).Value; string setToOriginal = @"AudioSwitcher.getAudioDevices()[0].volume(" + orignalVol + ")"; Assert.Equal(10, engine.Evaluate <int>(setTo10).Value); Assert.Equal(10, engine.Evaluate <int>(getVolume).Value); Assert.Equal(orignalVol, engine.Evaluate <int>(setToOriginal).Value); } }
public void AudioSwitcher_AudioDevice_Exists() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); const string js = @"AudioSwitcher.getAudioDevices()[0];"; var result = engine.Execute(js); Assert.NotNull(result); Assert.Null(result.ExecutionException); Assert.True(result.Success); Assert.NotEqual(null, engine.Evaluate<JavaScriptAudioDevice>(js)); Assert.IsType<JavaScriptAudioDevice>(engine.Evaluate<JavaScriptAudioDevice>(js).Value); } }
public async Task EvalScript(CommandContext ctx, [RemainingText, Description("실행할 코드.")] string code) { await ctx.TriggerTypingAsync(); await ctx.RespondAsync(JsEngine.Evaluate(code, TimeSpan.FromSeconds(5))); }
public void AudioSwitcher_getAudioDevices_Capture() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); Assert.DoesNotThrow(() => engine.Execute("AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.CAPTURE)")); Assert.Equal(2, engine.Evaluate <int>("AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.CAPTURE).length").Value); } }
public void AudioSwitcher_getAudioDevices_All() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); engine.Execute("AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.ALL)"); Assert.Equal(4, engine.Evaluate <int>("AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.ALL).length").Value); } }
public void Engine_WithArgs() { string[] test = new string[] { "One", "Two" }; var engine = new JsEngine(); Assert.NotNull(engine.Evaluate <string[]>("args", test)); }
public void Engine_WithArgs() { string[] test = new string[] { "One", "Two" }; var engine = new JsEngine(); Assert.NotNull(engine.Evaluate<string[]>("args", test)); }
public void Engine_Dynamic_Value_Exists() { using (var engine = new JsEngine()) { var testLib = new TestLibrary(); engine.AddLibrary("Dynamic", testLib); engine.Execute("Dynamic = lib('Dynamic');"); Assert.Equal(true, engine.InternalEngine.HasGlobalValue("Dynamic")); Assert.Equal(testLib.Property, engine.Evaluate <int>("Dyanmic.Property").Value); } }
public void AudioSwitcher_AudioDevice_setMute_true() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); const string js = @"AudioSwitcher.getAudioDevices()[0].mute(true)"; //Sets to muted Assert.Equal(true, engine.Evaluate <bool>(js).Value); } }
public void AudioSwitcher_getAudioDeviceByName_Capture_Flags() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); const string js = @"AudioSwitcher.getAudioDevice(AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.CAPTURE)[0].name, AudioSwitcher.DeviceType.CAPTURE);"; var result = engine.Execute(js); Assert.NotNull(result); Assert.Null(result.ExecutionException); Assert.True(result.Success); var audioDevice = engine.Evaluate <JavaScriptAudioDevice>("AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.CAPTURE)[0]").Value; var resolvedAudioDevice = engine.Evaluate <JavaScriptAudioDevice>(js).Value; Assert.NotEqual(null, resolvedAudioDevice); Assert.Equal(audioDevice.Id, resolvedAudioDevice.Id); Assert.IsType <JavaScriptAudioDevice>(resolvedAudioDevice); Assert.True(resolvedAudioDevice.IsCapture); } }
public void AudioSwitcher_getAudioDeviceByName() { const string js = @"AudioSwitcher.getAudioDevice(AudioSwitcher.getAudioDevices()[0].name);"; using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); ExecutionResult result = null; Assert.DoesNotThrow(() => result = engine.Execute(js)); Assert.NotNull(result); Assert.Null(result.ExecutionException); Assert.True(result.Success); var audioDevice = engine.Evaluate <JavaScriptAudioDevice>("AudioSwitcher.getAudioDevices()[0]").Value; var resolvedAudioDevice = engine.Evaluate <JavaScriptAudioDevice>(js).Value; Assert.NotEqual(null, resolvedAudioDevice); Assert.Equal(audioDevice.Id, resolvedAudioDevice.Id); Assert.IsType <JavaScriptAudioDevice>(resolvedAudioDevice); } }
public void AudioSwitcher_AudioDevice_setDefault_Capture_Comm() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); const string setDefault = @"AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.CAPTURE)[0].setAsDefaultComm()"; const string checkDefault = @"AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.CAPTURE)[0].isDefaultComm"; engine.Execute(setDefault); Assert.Equal(true, engine.Evaluate <bool>(checkDefault).Value); } }
public void Engine_Dynamic_Method_Returns() { using (var engine = new JsEngine()) { var testLib = new TestLibrary(); engine.AddLibrary("Dynamic", testLib); engine.Execute("Dynamic = lib('Dynamic');"); Assert.Equal(true, engine.InternalEngine.HasGlobalValue("Dynamic")); var result = engine.Evaluate <string>("Dynamic.Method()"); Assert.Equal(testLib.Method(), result.Value); } }
public void Engine_Dynamic_Method_Returns_Clr() { using (var engine = new JsEngine()) { var testLib = new TestLibrary(); engine.AddLibrary("Dynamic", testLib); engine.Execute("Dynamic = lib('Dynamic');"); Assert.Equal(true, engine.InternalEngine.HasGlobalValue("Dynamic")); var result = engine.Evaluate <int>("Dynamic.MethodReturnClr().Field"); Assert.Equal(new ClrObject().Field, result.Value); } }
public void Engine_Dynamic_Method_Func_Returns() { using (var engine = new JsEngine()) { var testLib = new TestLibrary(); engine.AddLibrary("Dynamic", testLib); engine.Execute("Dynamic = lib('Dynamic');"); Assert.Equal(true, engine.InternalEngine.HasGlobalValue("Dynamic")); var result = engine.Evaluate<string>("Dynamic.MethodFunc()"); Assert.NotNull(result.ExecutionException); //Assert.Equal(testLib.MethodFunc()(), result.Value); } }
public void Engine_Dynamic_Delegate_Func_Fail() { using (var engine = new JsEngine()) { var testLib = new TestLibrary(); engine.AddLibrary("Dynamic", testLib); engine.Execute("Dynamic = lib('Dynamic');"); Assert.True(engine.InternalEngine.HasGlobalValue("Dynamic")); var result = engine.Evaluate <string>("Dynamic.DelegateWithArguments('Hello')"); Assert.NotNull(result.ExecutionException); //Assert.Equal(testLib.DelegateWithArguments(), result.Value); } }
public void Engine_Dynamic_Delegate_Func_Fail() { using (var engine = new JsEngine()) { var testLib = new TestLibrary(); engine.AddLibrary("Dynamic", testLib); engine.Execute("Dynamic = lib('Dynamic');"); Assert.True(engine.InternalEngine.HasGlobalValue("Dynamic")); var result = engine.Evaluate<string>("Dynamic.DelegateWithArguments('Hello')"); Assert.NotNull(result.ExecutionException); //Assert.Equal(testLib.DelegateWithArguments(), result.Value); } }
public void Engine_Dynamic_Delegate_Returns() { using (var engine = new JsEngine()) { var testLib = new TestLibrary(); engine.AddLibrary("Dynamic", testLib); engine.Execute("import('Dyanmic');"); engine.Execute("Dynamic = lib('Dynamic');"); Assert.Equal(true, engine.InternalEngine.HasGlobalValue("Dynamic")); var result = engine.Evaluate <int>("Dynamic.Delegate()"); Assert.Equal(testLib.Property, result.Value); } }
public void Engine_Dynamic_Delegate_Returns() { using (var engine = new JsEngine()) { var testLib = new TestLibrary(); engine.AddLibrary("Dynamic", testLib); engine.Execute("import('Dyanmic');"); engine.Execute("Dynamic = lib('Dynamic');"); Assert.Equal(true, engine.InternalEngine.HasGlobalValue("Dynamic")); var result = engine.Evaluate<int>("Dynamic.Delegate()"); Assert.Equal(testLib.Property, result.Value); } }
public void Engine_Dynamic_Value_Exists() { using (var engine = new JsEngine()) { var testLib = new TestLibrary(); engine.AddLibrary("Dynamic", testLib); engine.Execute("Dynamic = lib('Dynamic');"); Assert.Equal(true, engine.InternalEngine.HasGlobalValue("Dynamic")); Assert.Equal(testLib.Property, engine.Evaluate<int>("Dyanmic.Property").Value); } }
public void AudioSwitcher_getAudioDevices_Playback_IsPlayback_Enum() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); var device = engine.Evaluate<JavaScriptAudioDevice>("AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.PLAYBACK)[0]").Value; var devices = engine.Evaluate<IEnumerable<JavaScriptAudioDevice>>("AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.PLAYBACK)").Value; Assert.True(devices.All(x => x.IsPlayback)); Assert.True(device.IsPlayback); } }
public void AudioSwitcher_getAudioDevices_Playback() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); engine.Execute("AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.PLAYBACK)"); Assert.Equal(2, engine.Evaluate<int>("AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.PLAYBACK).length").Value); } }
public void AudioSwitcher_getAudioDevices_Capture_IsCapture_List() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); var device = engine.Evaluate<JavaScriptAudioDevice>("AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.CAPTURE)[0]").Value; var devices = engine.Evaluate<List<JavaScriptAudioDevice>>("AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.CAPTURE)").Value; Assert.IsAssignableFrom<IEnumerable<JavaScriptAudioDevice>>(devices); Assert.IsAssignableFrom<IList<JavaScriptAudioDevice>>(devices); Assert.IsType<List<JavaScriptAudioDevice>>(devices); Assert.True(devices.All(x => x.IsCapture)); Assert.True(device.IsCapture); } }
public void AudioSwitcher_AudioDevice_toggleMute() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); const string js = @"AudioSwitcher.getAudioDevices()[0].toggleMute()"; //Toggles the mute and tests non equality of state var isMuted = engine.Evaluate<bool>(js).Value; Assert.NotEqual(isMuted, engine.Evaluate<bool>(js).Value); } }
public string BuildJs(string content) { var buffer = new StringBuilder(); int offset = 0; while (offset < content.Length) { int beginIndex = content.IndexOf('$', offset); if (beginIndex < 0) { buffer.Append(content.Substring(offset, content.Length - offset)); break; } if (beginIndex > 0 && content[beginIndex - 1] == '\\') { if (beginIndex > offset + 1) { buffer.Append(content.Substring(offset, beginIndex - offset - 1)); } buffer.Append('$'); offset = beginIndex + 1; continue; } int delimiterEnd = content.IndexOf('{', beginIndex + 1); if (delimiterEnd < beginIndex + 1) { buffer.Append(content.Substring(offset, content.Length - offset)); break; } string delimiter = content.Substring(beginIndex + 1, delimiterEnd - beginIndex - 1); int endIndex = content.IndexOf("}" + delimiter, delimiterEnd + 1); if (endIndex < 0) { buffer.Append(content.Substring(offset, delimiterEnd - offset + 1)); offset = delimiterEnd + 1; continue; } string code = content.Substring(delimiterEnd + 1, endIndex - delimiterEnd - 1); string result = JsEngine.Evaluate(code, TimeSpan.FromSeconds(3)); buffer.Append(content.Substring(offset, beginIndex - offset)); buffer.Append(result); offset = endIndex + delimiter.Length + 1; } return(buffer.ToString()); }
public void AudioSwitcher_AudioDevice_setMute_true() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); const string js = @"AudioSwitcher.getAudioDevices()[0].mute(true)"; //Sets to muted Assert.Equal(true, engine.Evaluate<bool>(js).Value); } }
public void AudioSwitcher_AudioDevice_setMute_false() { using (var engine = new JsEngine()) { const string js = @"AudioSwitcher.getAudioDevices()[0].mute(false)"; Assert.Equal(false, engine.Evaluate<bool>(js).Value); } }
public void AudioSwitcher_AudioDevice_setDefault_Playback_Comm() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); const string setDefault = @"AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.PLAYBACK)[0].setAsDefaultComm()"; const string checkDefault = @"AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.PLAYBACK)[0].isDefaultComm"; engine.Execute(setDefault); Assert.Equal(true, engine.Evaluate<bool>(checkDefault).Value); } }
public void AudioSwitcher_getAudioDeviceByName_Playback_Flags() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); const string js = @"AudioSwitcher.getAudioDevice(AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.PLAYBACK)[0].name, AudioSwitcher.DeviceType.PLAYBACK);"; var result = engine.Execute(js); Assert.NotNull(result); Assert.Null(result.ExecutionException); Assert.True(result.Success); var audioDevice = engine.Evaluate<JavaScriptAudioDevice>("AudioSwitcher.getAudioDevices(AudioSwitcher.DeviceType.PLAYBACK)[0]").Value; var resolvedAudioDevice = engine.Evaluate<JavaScriptAudioDevice>(js).Value; Assert.NotEqual(null, resolvedAudioDevice); Assert.Equal(audioDevice.Id, resolvedAudioDevice.Id); Assert.IsType<JavaScriptAudioDevice>(resolvedAudioDevice); Assert.True(resolvedAudioDevice.IsPlayback); } }
public void Engine_Dynamic_Method_WithArg_Returns() { using (var engine = new JsEngine()) { var testLib = new TestLibrary(); engine.AddLibrary("Dynamic", testLib); engine.Execute("Dynamic = lib('Dynamic');"); Assert.Equal(true, engine.InternalEngine.HasGlobalValue("Dynamic")); var result = engine.Evaluate<string>("Dynamic.MethodWithArg('Hello')"); Assert.Equal("Hello", result.Value); } }
public void Engine_Dynamic_Method_Returns_ClrArray() { using (var engine = new JsEngine()) { var testLib = new TestLibrary(); engine.AddLibrary("Dynamic", testLib); engine.Execute("Dynamic = lib('Dynamic');"); Assert.Equal(true, engine.InternalEngine.HasGlobalValue("Dynamic")); var result = engine.Evaluate<int>("Dynamic.MethodReturnClrArray().Length"); Assert.Equal(2, result.Value); } }
public void AudioSwitcher_AudioDevice_setVolume() { using (var engine = new JsEngine()) { engine.AddAudioSwitcherLibrary(GetAudioController()); engine.Execute("AudioSwitcher = lib('AudioSwitcher');"); const string setTo10 = @"AudioSwitcher.getAudioDevices()[0].volume(10)"; const string getVolume = @"AudioSwitcher.getAudioDevices()[0].volume()"; var orignalVol = engine.Evaluate<int>(getVolume).Value; string setToOriginal = @"AudioSwitcher.getAudioDevices()[0].volume(" + orignalVol + ")"; Assert.Equal(10, engine.Evaluate<int>(setTo10).Value); Assert.Equal(10, engine.Evaluate<int>(getVolume).Value); Assert.Equal(orignalVol, engine.Evaluate<int>(setToOriginal).Value); } }