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"); }