1.0.0-rc.1 • Published 5 years ago

@objectkit/scriptex-mox v1.0.0-rc.1

Weekly downloads
-
License
Apache-2.0
Repository
-
Last release
5 years ago

@objectkit/scriptex-mox

A mocking library for testing Scriptex MIDI plugins.

Purpose

A bare bones set of interfaces and actors to mock the Scripter MIDI-FX Plugin environment.

Interfaces

  • Scripter
  • TimingInfo
  • MIDI
  • Event
  • ChannelPressure
  • ControlChange
  • Note
  • NoteOn
  • NoteOff
  • PitchBend
  • PolyPressure
  • ProgramChange
  • TargetEvent

Actors

  • ReScripter

Example

/* @see ./src/test/js/com/objectkit/scriptex/mox/system/SimpleReScripterITSpec.js */
import sinon from "sinon"
import chai from "chai"
import { ReScripter } from "@objectkit/scriptex-mox"

const { assert } = chai
describe(`Simple ReScripter Integration Test`, () => {
  context(`Given a new ReScripter instance`, () => {
    describe(`When #PluginParameters and #ParameterChanged are defined`, () => {

      /* create and decorate a new instance */
      const Scripter= new ReScripter()
      Scripter.PluginParameters= [ {
          name: "button", type: "momentary"
        }
      ]
      Scripter.ParameterChanged= (key, val) => {
        Scripter.Trace(
          `name: ${Scripter.PluginParameters[key].name}, data: ${val}`
        )
      }

      beforeEach(() => {
        sinon.spy(Scripter, `Trace`)
      })

      afterEach(() => {
        sinon.restore()
      })

      specify(`Then #SetParameter invokes #ParameterChanged`, () => {
        {
          Scripter.SetParameter(0, 1)
        }
        assert.strictEqual(Scripter.Trace.lastCall.firstArg, `name: button, data: 1`)
        {
          Scripter.SetParameter(0, 2)
        }
        assert.strictEqual(Scripter.Trace.lastCall.firstArg, `name: button, data: 2`)
        {
          Scripter.SetParameter(0, 3)
        }
        assert.strictEqual(Scripter.Trace.lastCall.firstArg, `name: button, data: 3`)
      })
    })
  })
})