public void TestCompletionForPrimitiveTypes() { // Unit test for CodeCommpletionServices.SearchTypes() which should // include primitive types as well. var codeCompletionServices = new CodeCompletionServices(libraryServicesCore); string code = "boo"; var completions = codeCompletionServices.SearchTypes(code); Assert.AreEqual(2, completions.Count()); string[] expected = { "bool", "BooleanMember" }; var actual = completions.Select(x => x.Text).OrderBy(x => x); Assert.AreEqual(expected, actual); }
public void TestHiddenClassCompletionWhenTyping() { var codeCompletionServices = new CodeCompletionServices(libraryServicesCore); // "SampleClassB" defined in FFITarget library with "IsVisibleInDynamoLibrary" attribute // is set to false. We verify that this class does not appear in code completion results string code = "sam"; var completions = codeCompletionServices.SearchCompletions(code, Guid.Empty); // Expected 2 completion items Assert.AreEqual(3, completions.Count()); string[] expected = { "SampleClassA", "SampleClassC", "TestSamePropertyName" }; var actual = completions.Select(x => x.Text).OrderBy(x => x); Assert.AreEqual(expected, actual); }
public void TestHiddenConflictingClassCompletionWhenTyping() { var codeCompletionServices = new CodeCompletionServices(libraryServicesCore); // "SecondNamespace.AnotherClassWithNameConflict" is defined in FFITarget library with "IsVisibleInDynamoLibrary" // attribute set to false. We verify that this class does not appear in code completion results // and that only "FirstNamespace.AnotherClassWithNameConflict" appears in code completion results with // fully qualified name so that it can be resolved against "SecondNamespace.AnotherClassWithNameConflict" string code = "ano"; var completions = codeCompletionServices.SearchCompletions(code, Guid.Empty); // Expected 1 completion items Assert.AreEqual(1, completions.Count()); string[] expected = { "AnotherClassWithNameConflict" }; var actual = completions.Select(x => x.Text).OrderBy(x => x); Assert.AreEqual(expected, actual); // Assert that the class name is indeed a class ClassMirror type = null; Assert.DoesNotThrow(() => type = new ClassMirror("FirstNamespace.AnotherClassWithNameConflict", libraryServicesCore)); var members = type.GetMembers(); expected = new[] { "AnotherClassWithNameConflict", "PropertyA", "PropertyB", "PropertyC" }; AssertCompletions(members, expected); }
public void TestMethodKeywordCompletionWhenTyping() { var codeCompletionServices = new CodeCompletionServices(libraryServicesCore); string code = "im"; var completions = codeCompletionServices.SearchCompletions(code, Guid.Empty); // Expected 5 completion items Assert.AreEqual(5, completions.Count()); string[] expected = { "Decimal", "Imperative", "ImportFromCSV", "Minimal", "MinimalTracedClass" }; var actual = completions.Select(x => x.Text).OrderBy(x => x); Assert.AreEqual(expected, actual); }
public void TestCompletionOnType2() { var codeCompletionServices = new CodeCompletionServices(libraryServicesCore); var completions = codeCompletionServices.GetCompletionsOnType("x : CodeCompletionClass", "x"); Assert.AreEqual(5, completions.Count()); }
public void TestStaticMethodSignatureCompletion() { var codeCompletionServices = new CodeCompletionServices(libraryServicesCore); string ffiTargetClass = "CodeCompletionClass"; string functionName = "StaticFunction"; string code = ""; var overloads = codeCompletionServices.GetFunctionSignatures(code, functionName, ffiTargetClass); // Expected 1 "StaticFunction" method overload Assert.AreEqual(1, overloads.Count()); foreach (var overload in overloads) { Assert.AreEqual(functionName, overload.Text); } Assert.AreEqual("StaticFunction : int ()", overloads.ElementAt(0).Stub); }
public void TestCompletionWhenTyping() { var codeCompletionServices = new CodeCompletionServices(libraryServicesCore); string code = "Poi"; var completions = codeCompletionServices.SearchCompletions(code, Guid.Empty); // Expected 4 completion items Assert.AreEqual(8, completions.Count()); string[] expectedValues = {"DummyPoint", "DesignScript.Point", "Dynamo.Point", "UnknownPoint", "DummyPoint2D", "Point_1D", "Point_2D", "Point_3D"}; var expected = expectedValues.OrderBy(x => x); var actual = completions.Select(x => x.Text).OrderBy(x => x); Assert.AreEqual(expected, actual); }
public void TestMethodSignatureReturnTypeCompletion() { var codeCompletionServices = new CodeCompletionServices(libraryServicesCore); string functionPrefix = "a"; string ffiTargetClass = "CodeCompletionClass"; string functionName = "AddWithValueContainer"; string code = string.Format("{0} : {1};", functionPrefix, ffiTargetClass); var overloads = codeCompletionServices.GetFunctionSignatures(code, functionName, functionPrefix); // Expected 1 "AddWithValueContainer" method overloads Assert.AreEqual(1, overloads.Count()); foreach (var overload in overloads) { Assert.AreEqual(functionName, overload.Text); } var expected = "AddWithValueContainer : ValueContainer[] (valueContainer : ValueContainer)"; Assert.AreEqual(expected, overloads.ElementAt(0).Stub); }
public void TestBuiltInMethodSignatureCompletion() { var codeCompletionServices = new CodeCompletionServices(libraryServicesCore); string functionPrefix = ""; string functionName = "Count"; string code = ""; var overloads = codeCompletionServices.GetFunctionSignatures(code, functionName, functionPrefix); // Expected 1 "AddWithValueContainer" method overloads Assert.AreEqual(1, overloads.Count()); foreach (var overload in overloads) { Assert.AreEqual(functionName, overload.Text); } Assert.AreEqual("Count : int (list : [])", overloads.ElementAt(0).Stub); }
public void TestMethodSignatureCompletion() { var codeCompletionServices = new CodeCompletionServices(libraryServicesCore); string functionPrefix = "a"; string ffiTargetClass = "CodeCompletionClass"; string functionName = "OverloadedAdd"; string code = string.Format("{0} : {1};", functionPrefix, ffiTargetClass); var overloads = codeCompletionServices.GetFunctionSignatures(code, functionName, functionPrefix); // Expected 2 "OverloadedAdd" method overloads Assert.AreEqual(2, overloads.Count()); foreach (var overload in overloads) { Assert.AreEqual(functionName, overload.Text); } Assert.AreEqual("OverloadedAdd : int (cf : ClassFunctionality)", overloads.ElementAt(0).Stub); }
public void TestCtorSignatureCompletion() { string ffiTargetClass = "CodeCompletionClass"; string functionName = "CodeCompletionClass"; var codeCompletionServices = new CodeCompletionServices(libraryServicesCore); string code = ""; var overloads = codeCompletionServices.GetFunctionSignatures(code, functionName, ffiTargetClass); // Expected 3 "CodeCompletionClass" ctor overloads Assert.AreEqual(3, overloads.Count()); foreach (var overload in overloads) { Assert.AreEqual(functionName, overload.Text); } Assert.AreEqual("CodeCompletionClass (i1 : int, i2 : int, i3 : int)", overloads.ElementAt(2).Stub); }
/// <summary> /// LibraryLoaded event handler. /// </summary> private void LibraryLoaded(object sender, LibraryServices.LibraryLoadedEventArgs e) { liveRunnerServices.ReloadAllLibraries(libraryServices.ImportedLibraries); // The LiveRunner core is newly instantiated whenever a new library is imported // due to which a new instance of CodeCompletionServices needs to be created with the new Core codeCompletionServices = new CodeCompletionServices(LiveRunnerCore); libraryServices.SetLiveCore(LiveRunnerCore); }
/// <summary> /// Disposes EngineController. /// </summary> public void Dispose() { // This flag must be set immediately IsDisposed = true; libraryServices.LibraryLoaded -= LibraryLoaded; liveRunnerServices.Dispose(); codeCompletionServices = null; }
/// <summary> /// This function creates EngineController /// </summary> /// <param name="libraryServices"> LibraryServices manages builtin libraries and imported libraries.</param> /// <param name="geometryFactoryFileName">Path to LibG</param> /// <param name="verboseLogging">Bool value, if set to true, enables verbose logging</param> public EngineController(LibraryServices libraryServices, string geometryFactoryFileName, bool verboseLogging) { this.libraryServices = libraryServices; libraryServices.LibraryLoaded += LibraryLoaded; CompilationServices = new CompilationServices(libraryServices.LibraryManagementCore); liveRunnerServices = new LiveRunnerServices(this, geometryFactoryFileName); liveRunnerServices.ReloadAllLibraries(libraryServices.ImportedLibraries); libraryServices.SetLiveCore(LiveRunnerCore); codeCompletionServices = new CodeCompletionServices(LiveRunnerCore); astBuilder = new AstBuilder(this); syncDataManager = new SyncDataManager(); VerboseLogging = verboseLogging; }