UNPKG

tonal-dictionary

Version:

Tonal key/value utilities

46 lines (38 loc) 1.49 kB
/* global describe test expect */ var d = require("../index"); var DATA = { maj7: ["1P 3M 5P 7M", ["Maj7"]], m7: ["1P 3m 5P 7m"] }; const arr = str => str.split(" "); describe("tonal-dictionary", () => { test("create a dictionary", () => { const dict = d.dictionary(DATA); expect(dict("m7")).toEqual(["1P", "3m", "5P", "7m"]); expect(dict("maj7")).toEqual(["1P", "3M", "5P", "7M"]); expect(dict("Maj7")).toEqual(["1P", "3M", "5P", "7M"]); expect(dict("Maj")).toBe(undefined); }); test("dictionary has keys", () => { const dict = d.dictionary(DATA); expect(dict.names()).toEqual(["m7", "maj7"]); expect(dict.names(true)).toEqual(["Maj7", "m7", "maj7"]); }); test("scale dictionary", () => { expect(d.scale("major")).toEqual(arr("1P 2M 3M 4P 5P 6M 7M")); expect(d.scale("bebop minor")).toEqual(arr("1P 2M 3m 3M 4P 5P 6M 7m")); expect(d.scale.names("101011010101")).toEqual(["major", "ionian"]); }); test("chord dictionary", () => { expect(d.chord("Maj7")).toEqual(["1P", "3M", "5P", "7M"]); expect(d.chord("maj7")).toEqual(["1P", "3M", "5P", "7M"]); expect(d.chord.names("100010010001")).toEqual(["Maj7", "maj7", "M7"]); }); test("pitchset dictionary", () => { expect(d.pcset("Maj7")).toEqual(["1P", "3M", "5P", "7M"]); expect(d.pcset("major")).toEqual(arr("1P 2M 3M 4P 5P 6M 7M")); expect(d.pcset.names().length).toEqual( d.scale.names().length + d.chord.names().length ); }); });