typescript-closure-tools
Version:
Command-line tools to convert closure-style JSDoc annotations to typescript, and to convert typescript sources to closure externs files
40 lines (36 loc) • 2.1 kB
text/typescript
/// <reference path='../jasmine/jasmine.d.ts'/>
/// <reference path='linq.d.ts'/>
// <reference path="c:/linq.js" /> tests were run from VisualStudio + Resharper7
describe("Linq.js tests", function () {
it("Projection and Filtering Methods", function () {
expect(Enumerable.From([1,2,3,4]).ToString(",")).toBe("1,2,3,4");
expect(Enumerable.Range(1, 4).Where((item: number) => item > 2).ToString(",")).toBe("3,4");
expect(Enumerable.Range(1, 4).Where("(item) => item > 2").ToString(",")).toBe("3,4");
expect(Enumerable.Range(1, 4).Where("$>2").ToString(",")).toBe("3,4");
expect(Enumerable.Range(1, 4).Select((item: number,index:number) => item+index).ToString(",")).toBe("1,3,5,7");
expect(Enumerable.Range(1, 4).Zip(Enumerable.Range(1, 10), (a: number,b:number) => a-b).ToString(",")).toBe("0,0,0,0");
});
it("Join Methods", function () {
expect(Enumerable.Range(1, 4).Join(Enumerable.From(["a", "aaa"]), (l) => l, (r: string) => r.length, (l, r) =>l + ":" + r).ToString(",")).toBe("1:a,3:aaa");
});
it("Set Methods", function () {
expect(Enumerable.Range(2, 4, 2).All((item: number) => item % 2 == 0)).toBe(true);
expect(Enumerable.Range(1, 4).Intersect(Enumerable.Range(3, 4)).ToString(",")).toBe("3,4");
});
it("Ordering Methods", function () {
expect(Enumerable.From(
[
{ name: "marcin", age:15},
{ name: "albert", age:51},
{ name: "marcin", age:30},
]).OrderBy((p) => p.name).ThenByDescending((p) => p.age).Select((p) => p.name+p.age).ToString(",")).toBe("albert51,marcin30,marcin15");
});
it("Grouping Methods", function () {
expect(Enumerable.From(["a","aa","aaa","a","a","aaa"])
.GroupBy((item:string) => item.length)
.Select((g: linq.Grouping) => { return { key: g.Key(), count: g.Count() }; })
.OrderBy(g => g.key)
.Select(g => g.key+":"+g.count)
.ToString(",")).toBe("1:3,2:1,3:2");
});
});