UNPKG

geninq

Version:

A JavaScript version of the Linq library for Generators

230 lines (225 loc) 4.7 kB
import { SIt, AIt } from "../test-utils"; import "./group-join"; import "./select"; import "./async"; const people = [ { name: "Hedlund, Magnus" }, { name: "Adams, Terry" }, { name: "Weiss, Charlotte" }, ]; SIt( "Performs a basic join", (s) => s .group_join( [ { name: "Barley", owner: people[1] }, { name: "Boots", owner: people[1] }, { name: "Whiskers", owner: people[2] }, { name: "Daisy", owner: people[0] }, ].geninq(), (person) => person.name, (pet) => pet.owner.name, (a, b) => ({ owner: a.name, pets: b.select((p) => p.name).array(), }) ) .array(), [ { owner: "Hedlund, Magnus", pets: ["Daisy"], }, { owner: "Adams, Terry", pets: ["Barley", "Boots"], }, { owner: "Weiss, Charlotte", pets: ["Whiskers"], }, ], people ); AIt( "Performs a basic join", (s) => s .group_join( [ { name: "Barley", owner: people[1] }, { name: "Boots", owner: people[1] }, { name: "Whiskers", owner: people[2] }, { name: "Daisy", owner: people[0] }, ] .geninq() .async(), (person) => person.name, (pet) => pet.owner.name, async (a, b) => ({ owner: a.name, pets: await b.select((p) => p.name).array(), }) ) .array(), [ { owner: "Hedlund, Magnus", pets: ["Daisy"], }, { owner: "Adams, Terry", pets: ["Barley", "Boots"], }, { owner: "Weiss, Charlotte", pets: ["Whiskers"], }, ], people ); SIt( "Performs a custom comparitor", (s) => s .group_join( [ { name: "Barley", owner: people[1] }, { name: "Boots", owner: people[1] }, { name: "Whiskers", owner: people[2] }, { name: "Daisy", owner: people[0] }, ].geninq(), (person) => person, (pet) => pet.owner, (a, b) => ({ owner: a.name, pets: b.select((p) => p.name).array(), }), (a, b) => a.name === b.name ) .array(), [ { owner: "Hedlund, Magnus", pets: ["Daisy"], }, { owner: "Adams, Terry", pets: ["Barley", "Boots"], }, { owner: "Weiss, Charlotte", pets: ["Whiskers"], }, ], people ); AIt( "Performs a basic join", (s) => s .group_join( [ { name: "Barley", owner: people[1] }, { name: "Boots", owner: people[1] }, { name: "Whiskers", owner: people[2] }, { name: "Daisy", owner: people[0] }, ] .geninq() .async(), (person) => person, (pet) => pet.owner, async (a, b) => ({ owner: a.name, pets: await b.select((p) => p.name).array(), }), (a, b) => a.name === b.name ) .array(), [ { owner: "Hedlund, Magnus", pets: ["Daisy"], }, { owner: "Adams, Terry", pets: ["Barley", "Boots"], }, { owner: "Weiss, Charlotte", pets: ["Whiskers"], }, ], people ); SIt( "Performs a basic join on an array", (s) => s .group_join( [ { name: "Barley", owner: people[1] }, { name: "Boots", owner: people[1] }, { name: "Whiskers", owner: people[2] }, { name: "Daisy", owner: people[0] }, ], (person) => person.name, (pet) => pet.owner.name, (a, b) => ({ owner: a.name, pets: b.select((p) => p.name).array(), }) ) .array(), [ { owner: "Hedlund, Magnus", pets: ["Daisy"], }, { owner: "Adams, Terry", pets: ["Barley", "Boots"], }, { owner: "Weiss, Charlotte", pets: ["Whiskers"], }, ], people ); AIt( "Performs a basic join on an array", (s) => s .group_join( [ { name: "Barley", owner: people[1] }, { name: "Boots", owner: people[1] }, { name: "Whiskers", owner: people[2] }, { name: "Daisy", owner: people[0] }, ], (person) => person.name, (pet) => pet.owner.name, async (a, b) => ({ owner: a.name, pets: await b.select((p) => p.name).array(), }) ) .array(), [ { owner: "Hedlund, Magnus", pets: ["Daisy"], }, { owner: "Adams, Terry", pets: ["Barley", "Boots"], }, { owner: "Weiss, Charlotte", pets: ["Whiskers"], }, ], people );