void TestBasicInstance(TypeScriptLS ls)
 {
     string testts1 = "alert('OK');";
     ls.AddScript ("test.ts", testts1);
     Assert.AreEqual ("[\"test.ts\"]", ls.GetScriptFileNames (), "#4");
     var sshot = ls.GetScriptSnapshot ("test.ts");
     Assert.AreEqual (testts1, sshot.GetText (0, sshot.GetLength ()), "#5");
 }
 public void AttemptToAccessNonExistentResource()
 {
     var shimHost = new TypeScriptLS ();
     var lsHost = new LanguageServiceShimHostAdapter (shimHost);
     var ls = new TypeScriptServicesFactory ().CreatePullLanguageService (lsHost);
     //Assert.AreEqual (lsHost.Instance, ls.Host.Instance, "#1");
     // attempt to get non-existent definition
     Assert.IsNull (ls.GetDefinitionAtPosition ("nonexistent", 0), "#2");
 }
 public TypeScriptService(Project project)
 {
     NodeLanguageServiceHost.NodeCommandLocator = () => PropertyService.Get<string> ("TypeScriptBinding.NodeLocation");
     this.project = project;
     ShimHost = new TypeScriptLS ();
     var ls = new TypeScriptServicesFactory ()
         .CreatePullLanguageService (new LanguageServiceShimHostAdapter (ShimHost));
     LanguageService = new LanguageService (ls.Instance);
 }
 public TypeScriptSyntaxTree Parse(TextReader reader, string fileName)
 {
     if (factory == null)
         factory = new TypeScriptServicesFactory ();
     if (tsls == null)
         tsls = new TypeScriptLS ();
     if (ls == null)
         ls = factory.CreateLanguageService (new LanguageServiceShimHostAdapter (tsls));
     throw new NotImplementedException ();
 }
 public void LoadLanguageService()
 {
     var shimHost = new TypeScriptLS ();
     var lsHost = new LanguageServiceShimHostAdapter (shimHost);
     var ls = new TypeScriptServicesFactory ().CreatePullLanguageService (lsHost);
     shimHost.AddScript ("languageService.ts", File.ReadAllText (Path.Combine (Path.GetDirectoryName (new Uri (GetType ().Assembly.CodeBase).LocalPath), "TestFiles", "languageService.ts")));
 }
        public void GetCompletionsAtPosition()
        {
            string script = @"
            class Greeter {
            greeting: string;
            constructor (message: string) {
            this.greeting = message;
            }
            greet() {
            return 'Hello, ' + this.greeting;
            }
            }

            var greeter = new Greeter('world');

            var button = document.createElement('button')
            button.innerText = 'Say Hello'
            button.onclick = function() {
            alert(greeter.greet())
            }

            document.body.appendChild(button)
            ";
            var shimHost = new TypeScriptLS ();
            var lsHost = new LanguageServiceShimHostAdapter (shimHost);
            var ls = new TypeScriptServicesFactory ().CreatePullLanguageService (lsHost);
            shimHost.AddScript ("foo.ts", script);
            for (int i = 0; i < 37; i++) {
                var lisst = ls.GetCompletionsAtPosition ("foo.ts", i, true);
                if (lisst == null)
                    continue; // fine.
                if ((bool) lisst.MaybeInaccurate)
                    continue; // fine
                // the number in general doesn't matter, only meaning that there are completions.
                Assert.AreEqual (54, lisst.Entries.Length, "#2." + i);
            }
            for (int i = 37; i < 76; i++) {
                var lisst = ls.GetCompletionsAtPosition ("foo.ts", i, true);
                if (lisst == null)
                    continue; // fine.
                Assert.AreEqual (55, lisst.Entries.Length, "#2x2." + i);
            }
            var list = ls.GetCompletionsAtPosition ("foo.ts", 76, true);
            Assert.AreEqual (2, list.Entries.Length, "#1");
            /*
            for (int i = 77; i < 132; i++) {
                var list = ls.GetCompletionsAtPosition ("foo.ts", i, true);
                Assert.AreEqual (0, list.Entries.Length, "#2." + i);
            }
            */
            list = ls.GetCompletionsAtPosition ("foo.ts", 136, true);
            Assert.AreEqual (2, list.Entries.Length, "#3");
            /*
            for (int i = 137; i < 307; i++) {
                var list = ls.GetCompletionsAtPosition ("foo.ts", i, true);
                Assert.AreEqual (0, list.Entries.Length, "#4." + i);
            }
            */
            list = ls.GetCompletionsAtPosition ("foo.ts", 314, true); // reeter.greet() at line 17
            Assert.AreEqual (2, list.Entries.Length, "#5");
            /*
            for (int i = 315; i < script.Length; i++) {
                var list = ls.GetCompletionsAtPosition ("foo.ts", i, true);
                Assert.AreEqual (0, list.Entries.Length, "#6 " + i + " : " + script.Substring (i));
            }
            */
        }
        public void SimpleTest()
        {
            var shimHost = new TypeScriptLS ();
            var lsHost = new LanguageServiceShimHostAdapter (shimHost);
            var ls = new TypeScriptServicesFactory ().CreatePullLanguageService (lsHost);
            //Assert.AreEqual (lsHost.Instance, ls.Host.Instance, "#1");
            shimHost.AddScript ("foo.ts", "class Foo { public foo : int = 5; public bar (baz: int) : string { return 'hello #' + baz; } }");

            // search foo -> matches both class Foo and field foo.
            var search = ls.GetNavigateToItems ("foo");
            Assert.IsNotNull (search, "#3");
            Assert.AreEqual (3, search.Length, "#4");
            Assert.AreEqual (0, search [0].MinChar, "#5.1"); // matched prefix
            Assert.AreEqual (94, search [0].LimChar, "#5.2");
            Assert.AreEqual ("prefix", search [0].MatchKind, "#5.3");
            Assert.AreEqual (0, search [1].MinChar, "#6.1"); // matched class Foo (case insensitive)
            Assert.AreEqual (94, search [1].LimChar, "#6.2");
            Assert.AreEqual ("exact", search [1].MatchKind, "#6.3");
            Assert.AreEqual (12, search [2].MinChar, "#7.1"); // matched public foo
            Assert.AreEqual (32, search [2].LimChar, "#7.2");
            Assert.AreEqual ("exact", search [2].MatchKind, "#7.3");
            search.Dispose ();

            // search bar -> matches function bar.
            search = ls.GetNavigateToItems ("bar");
            Assert.IsNotNull (search, "#8");
            Assert.AreEqual (1, search.Length, "#9");
            Assert.AreEqual (34, search [0].MinChar, "#10.1"); // matched public foo
            Assert.AreEqual (92, search [0].LimChar, "#10.2");
            Assert.AreEqual ("exact", search [0].MatchKind, "#10.3");

            // search baz -> no hit (argument name is out of scope)
            search = ls.GetNavigateToItems ("baz");
            Assert.IsNotNull (search, "#11");
            Assert.AreEqual (0, search.Length, "#12");
        }