Bemuse v54.0.1
Initializing
  • passes: 61
  • failures: 0
  • duration: 0.09s
  • ./app/entities/Collections.spec.js

    • Collections

      • should receive collection data1ms ‣

        (0,o.$v)(a.E3).when(a.qH("https://test-server/")).and(a.rE("https://test-server/",{x:1})).then(a.V4("https://test-server/"),s.PN,(0,o.We)(!0))
      • should allow errors0ms ‣

        (0,o.$v)(a.E3).when(a.qH("https://test-server/")).and(a.nF("https://test-server/",new Error("oh no"))).then(a.V4("https://test-server/"),s.VZ,(0,o.We)(!0))
  • ./app/entities/LoadState.spec.js

    • LoadState

      • initLoading should be loading0ms ‣

        (0,s.$v)(a.cT()).then(a.hg,(0,s.We)(!0))
      • completeWithValue should turn it into completed0ms ‣

        (0,s.$v)(a.cT()).when(a.FY(99)).then(a.PN,(0,s.We)(!0)).and(a.S3,(0,s.We)(99))
      • errorWithReason should turn it into error0ms ‣

        (0,s.$v)(a.cT()).when(a.nA(new Error("x"))).then(a.PN,(0,s.We)(!1)).and(a.VZ,(0,s.We)(!0)).and(a.vU,o,(0,s.We)("x"))
  • ./app/entities/MusicSearchText.spec.js

    • MusicSearchText

      • is initially blank0ms ‣

        (0,s.$v)(a.E3).then(a.fn,(0,s.We)("")).and(a.iJ,(0,s.We)(""))
      • should set inputText when typing0ms ‣

        (0,s.$v)(a.E3).when(a.eE("hello")).then(a.fn,(0,s.We)("")).and(a.iJ,(0,s.We)("hello"))
      • should copy inputText to searchText when debounced0ms ‣

        (0,s.$v)(a.E3).and(a.eE("hello")).when(a.Rq).then(a.fn,(0,s.We)("hello")).and(a.iJ,(0,s.We)("hello"))
      • should allow setting text, changing both0ms ‣

        (0,s.$v)(a.E3).when(a.Hd("meow")).then(a.fn,(0,s.We)("meow")).and(a.iJ,(0,s.We)("meow"))
  • ./app/entities/MusicSelection.spec.js

    • MusicSelection

      • allows selecting song1ms ‣

        (0,s.$v)(a.E3).when(a.AC("song1")).then(a.Oh([{id:"song0",title:"TEST"},{id:"song1",title:"BY MY SIDE"}]),(0,s.We)({id:"song1",title:"BY MY SIDE"}))
      • should fallback to avilaable song if not available1ms ‣

        (0,s.$v)(a.E3).when(a.AC("song1")).then(a.Oh([{id:"song0",title:"TEST"},{id:"song2",title:"RUNNING OUT"}]),(0,s.We)({id:"song0",title:"TEST"}))
      • should allow selecting chart0ms ‣

        (0,s.$v)(a.E3).when(a.Eb("song1","chart1.bml",8)).then((e=>e.selectedSongId),(0,s.We)("song1")).and((e=>e.selectedChartId),(0,s.We)("chart1.bml")).and((e=>e.selectedChartLevel),(0,s.We)(8))
      • selects the chart if available1ms ‣

        e.then(a.v8([{file:"chart0.bml",info:{level:1}},{file:"chart1.bml",info:{level:8}},{file:"chart2.bml",info:{level:12}}]),(0,s.We)({file:"chart1.bml",info:{level:8}}))
      • selects chart with closest level if matching chart not available0ms ‣

        e.then(a.v8([{file:"pattern0.bml",info:{level:2}},{file:"pattern1.bml",info:{level:9}},{file:"pattern2.bml",info:{level:10}}]),(0,s.We)({file:"pattern1.bml",info:{level:9}}))
  • ./app/entities/Options.spec.js

    • Options

      • Lane cover

        • should be a number1ms ‣

          var e=new r
          c()(e._expr(e._capt(0===e._capt(e._capt(a,"arguments/0/left/callee/object").laneCover(e._capt({"player.P1.lane-cover":"0"},"arguments/0/left/arguments/0")),"arguments/0/left"),"arguments/0"),{content:"assert(Options.laneCover({ 'player.P1.lane-cover': '0' }) === 0)",filepath:"Options.spec.js",line:14}))
        • should be maximum 50%0ms ‣

          var e=new r
          c()(e._expr(e._capt(.5===e._capt(e._capt(a,"arguments/0/left/callee/object").laneCover(e._capt({"player.P1.lane-cover":"99"},"arguments/0/left/arguments/0")),"arguments/0/left"),"arguments/0"),{content:"assert(Options.laneCover({ 'player.P1.lane-cover': '99' }) === 0.5)",filepath:"Options.spec.js",line:17}))
        • should be minimum -50%0ms ‣

          var e=new r
          c()(e._expr(e._capt(e._capt(e._capt(a,"arguments/0/left/callee/object").laneCover(e._capt({"player.P1.lane-cover":"-99"},"arguments/0/left/arguments/0")),"arguments/0/left")===e._capt(-.5,"arguments/0/right"),"arguments/0"),{content:"assert(Options.laneCover({ 'player.P1.lane-cover': '-99' }) === -0.5)",filepath:"Options.spec.js",line:20}))
      • key config

        • can be set and get1ms ‣

          (0,s.$v)(a.initialState).when(i(u.CHANGE_KEY_MAPPING({mode:"KB",key:"4",keyCode:"65"}))).then(a.getKeyMapping("KB","4"),(0,s.We)("65"))
        • can be retrieved for current mode by column0ms ‣

          (0,s.$v)(a.initialState).when(i(u.CHANGE_PLAY_MODE({mode:"KB"}))).then(a.keyboardMapping,(e=>{var t=new r
          c()(t._expr(t._capt("32"===t._capt(t._capt(e,"arguments/0/left/object")[4],"arguments/0/left"),"arguments/0"),{content:"assert(mapping['4'] === '32')",filepath:"Options.spec.js",line:38}))})),(0,s.$v)(a.initialState).when(i(u.CHANGE_PLAY_MODE({mode:"BM"}))).then(a.keyboardMapping,(e=>{var t=new r
          c()(t._expr(t._capt("68"===t._capt(t._capt(e,"arguments/0/left/object")[4],"arguments/0/left"),"arguments/0"),{content:"assert(mapping['4'] === '68')",filepath:"Options.spec.js",line:44}))}))
        • key setting progression (in options screen)

          • SC → SC20ms ‣

            var e=new r,t=new r
            c()(e._expr(e._capt("SC2"===e._capt(e._capt(a,"arguments/0/left/callee/object").nextKeyToEdit("SC","left"),"arguments/0/left"),"arguments/0"),{content:"assert(Options.nextKeyToEdit('SC', 'left') === 'SC2')",filepath:"Options.spec.js",line:49})),c()(t._expr(t._capt("SC2"===t._capt(t._capt(a,"arguments/0/left/callee/object").nextKeyToEdit("SC","right"),"arguments/0/left"),"arguments/0"),{content:"assert(Options.nextKeyToEdit('SC', 'right') === 'SC2')",filepath:"Options.spec.js",line:50}))
          • 1 → 20ms ‣

            var e=new r,t=new r,n=new r
            c()(e._expr(e._capt("2"===e._capt(e._capt(a,"arguments/0/left/callee/object").nextKeyToEdit("1","left"),"arguments/0/left"),"arguments/0"),{content:"assert(Options.nextKeyToEdit('1', 'left') === '2')",filepath:"Options.spec.js",line:53})),c()(t._expr(t._capt("2"===t._capt(t._capt(a,"arguments/0/left/callee/object").nextKeyToEdit("1","right"),"arguments/0/left"),"arguments/0"),{content:"assert(Options.nextKeyToEdit('1', 'right') === '2')",filepath:"Options.spec.js",line:54})),c()(n._expr(n._capt("2"===n._capt(n._capt(a,"arguments/0/left/callee/object").nextKeyToEdit("1","off"),"arguments/0/left"),"arguments/0"),{content:"assert(Options.nextKeyToEdit('1', 'off') === '2')",filepath:"Options.spec.js",line:55}))
          • 7 → done (scratch off / left)0ms ‣

            var e=new r,t=new r
            c()(e._expr(e._capt(null===e._capt(e._capt(a,"arguments/0/left/callee/object").nextKeyToEdit("7","off"),"arguments/0/left"),"arguments/0"),{content:"assert(Options.nextKeyToEdit('7', 'off') === null)",filepath:"Options.spec.js",line:58})),c()(t._expr(t._capt(null===t._capt(t._capt(a,"arguments/0/left/callee/object").nextKeyToEdit("7","left"),"arguments/0/left"),"arguments/0"),{content:"assert(Options.nextKeyToEdit('7', 'left') === null)",filepath:"Options.spec.js",line:59}))
          • 7 → SC (scratch right)0ms ‣

            var e=new r
            c()(e._expr(e._capt("SC"===e._capt(e._capt(a,"arguments/0/left/callee/object").nextKeyToEdit("7","right"),"arguments/0/left"),"arguments/0"),{content:"assert(Options.nextKeyToEdit('7', 'right') === 'SC')",filepath:"Options.spec.js",line:62}))
          • SC2 → done (scratch right)0ms ‣

            var e=new r
            c()(e._expr(e._capt(null===e._capt(e._capt(a,"arguments/0/left/callee/object").nextKeyToEdit("SC2","right"),"arguments/0/left"),"arguments/0"),{content:"assert(Options.nextKeyToEdit('SC2', 'right') === null)",filepath:"Options.spec.js",line:65}))
          • SC2 → 1 (scratch left)0ms ‣

            var e=new r
            c()(e._expr(e._capt("1"===e._capt(e._capt(a,"arguments/0/left/callee/object").nextKeyToEdit("SC2","left"),"arguments/0/left"),"arguments/0"),{content:"assert(Options.nextKeyToEdit('SC2', 'left') === '1')",filepath:"Options.spec.js",line:68}))
      • speed

        • can be set and get0ms ‣

          (0,s.$v)(a.initialState).when(i(u.CHANGE_SPEED({speed:4.5}))).then(a.speed,(0,s.We)(4.5))
      • lead time

        • defaults to 1685 ms (initial speed of tutorial)0ms ‣

          (0,s.$v)(a.initialState).then(a.leadTime,(0,s.We)(1685))
      • scratch position

        • switches to keyboard mode if off0ms ‣

          (0,s.$v)(a.initialState).when(i(u.CHANGE_SCRATCH_POSITION({position:"off"}))).then(a.scratchPosition,(0,s.We)("off")).and((e=>{var t=new r
          c()(t._expr(t._capt("KB"===t._capt(t._capt(e,"arguments/0/left/object")["player.P1.mode"],"arguments/0/left"),"arguments/0"),{content:"assert(state['player.P1.mode'] === 'KB')",filepath:"Options.spec.js",line:93}))}))
        • switches to BMS mode if on0ms ‣

          (0,s.$v)(a.initialState).when(i(u.CHANGE_SCRATCH_POSITION({position:"right"}))).then(a.scratchPosition,(0,s.We)("right")).and((e=>{var t=new r
          c()(t._expr(t._capt("BM"===t._capt(t._capt(e,"arguments/0/left/object")["player.P1.mode"],"arguments/0/left"),"arguments/0"),{content:"assert(state['player.P1.mode'] === 'BM')",filepath:"Options.spec.js",line:101}))}))
        • remembers previous scratch position prior to turning off0ms ‣

          (0,s.$v)(a.initialState).when(i(u.CHANGE_SCRATCH_POSITION({position:"right"}))).and(i(u.CHANGE_SCRATCH_POSITION({position:"off"}))).then(a.scratchPosition,(0,s.We)("off")).and((e=>{var t=new r,n=new r
          c()(t._expr(t._capt("KB"===t._capt(t._capt(e,"arguments/0/left/object")["player.P1.mode"],"arguments/0/left"),"arguments/0"),{content:"assert(state['player.P1.mode'] === 'KB')",filepath:"Options.spec.js",line:110})),c()(n._expr(n._capt("right"===n._capt(n._capt(e,"arguments/0/left/object")["player.P1.scratch"],"arguments/0/left"),"arguments/0"),{content:"assert(state['player.P1.scratch'] === 'right')",filepath:"Options.spec.js",line:111}))}))
      • background animations

        • defaults to true0ms ‣

          (0,s.$v)(a.initialState).then(e,(0,s.We)(n))
        • can be toggled0ms ‣

          (0,s.$v)(a.initialState).when(t).then(e,(0,s.We)(!n))
        • can be toggled again0ms ‣

          (0,s.$v)(a.initialState).when(t).and(t).then(e,(0,s.We)(n))
      • auto velocity

        • defaults to false0ms ‣

          (0,s.$v)(a.initialState).then(e,(0,s.We)(n))
        • can be toggled0ms ‣

          (0,s.$v)(a.initialState).when(t).then(e,(0,s.We)(!n))
        • can be toggled again0ms ‣

          (0,s.$v)(a.initialState).when(t).and(t).then(e,(0,s.We)(n))
      • expert gauge

        • defaults to false0ms ‣

          (0,s.$v)(a.initialState).then(e,(0,s.We)(n))
        • can be toggled0ms ‣

          (0,s.$v)(a.initialState).when(t).then(e,(0,s.We)(!n))
        • can be toggled again1ms ‣

          (0,s.$v)(a.initialState).when(t).and(t).then(e,(0,s.We)(n))
      • new feature announcements

        • should track its acknowledgement0ms ‣

          (0,s.$v)(a.initialState).then(a.hasAcknowledged("twitter"),(0,s.We)(!1))
        • can be acknowledged by the user0ms ‣

          (0,s.$v)(a.initialState).when(i(u.ACKNOWLEDGE({featureKey:"twitter"}))).then(a.hasAcknowledged("twitter"),(0,s.We)(!0))
      • auto/input latency

        • defaults to 00ms ‣

          (0,s.$v)(a.initialState).then(a.audioInputLatency,(0,s.We)(0))
        • can be adjusted0ms ‣

          (0,s.$v)(a.initialState).when(i(u.CHANGE_AUDIO_INPUT_LATENCY({latency:32}))).then(a.audioInputLatency,(0,s.We)(32))
      • last used version

        • should be tracked so that it can display “what’s new” dialog0ms ‣

          (0,s.$v)(a.initialState).when(i(u.UPDATE_LAST_SEEN_VERSION({newVersion:"50.0"}))).then(a.lastSeenVersion,(0,s.We)("50.0"))
  • ./app/interactors/createAutoVelocity.spec.js

    • createAutoVelocity

      • when disabled

        • initial speed should be from options0ms ‣

          var e=new c
          const t=(0,o.Z)({enabled:!1,initialSpeed:3.8,desiredLeadTime:1e3,songBPM:220})
          s()(e._expr(e._capt(3.8===e._capt(e._capt(t,"arguments/0/left/callee/object").getInitialSpeed(),"arguments/0/left"),"arguments/0"),{content:"assert(autoVelocity.getInitialSpeed() === 3.8)",filepath:"createAutoVelocity.spec.js",line:14}))
        • should save speed after playing game1ms ‣

          var e=new c,t=new c
          const n=(0,o.Z)({enabled:!1,initialSpeed:3.8,desiredLeadTime:1e3,songBPM:220}),a=sinon.spy(),r=sinon.spy()
          n.handleGameFinish(2.4,{saveSpeed:a,saveLeadTime:r}),s()(e._expr(e._capt(e._capt(a,"arguments/0/callee/object").calledWith(2.4),"arguments/0"),{content:"assert(saveSpeed.calledWith(2.4))",filepath:"createAutoVelocity.spec.js",line:26})),s()(t._expr(t._capt(!t._capt(t._capt(r,"arguments/0/argument/object").called,"arguments/0/argument"),"arguments/0"),{content:"assert(!saveLeadTime.called)",filepath:"createAutoVelocity.spec.js",line:27}))
      • when enabled

        • initial speed should be from song’s BPM0ms ‣

          var e=new c
          const t=(0,o.Z)({enabled:!0,initialSpeed:3.8,desiredLeadTime:1200,songBPM:140})
          s()(e._expr(e._capt(1.8===e._capt(e._capt(t,"arguments/0/left/callee/object").getInitialSpeed(),"arguments/0/left"),"arguments/0"),{content:"assert(autoVelocity.getInitialSpeed() === 1.8)",filepath:"createAutoVelocity.spec.js",line:39}))
        • should also take into consideration the lane cover0ms ‣

          var e=new c
          const t=(0,o.Z)({enabled:!0,initialSpeed:3.8,desiredLeadTime:1200,songBPM:140,laneCover:.5})
          s()(e._expr(e._capt(.9===e._capt(e._capt(t,"arguments/0/left/callee/object").getInitialSpeed(),"arguments/0/left"),"arguments/0"),{content:"assert(autoVelocity.getInitialSpeed() === 0.9)",filepath:"createAutoVelocity.spec.js",line:49}))
        • should also take into consideration the lane cover0ms ‣

          var e=new c
          const t=(0,o.Z)({enabled:!0,initialSpeed:3.8,desiredLeadTime:1200,songBPM:140,laneCover:-.5})
          s()(e._expr(e._capt(.9===e._capt(e._capt(t,"arguments/0/left/callee/object").getInitialSpeed(),"arguments/0/left"),"arguments/0"),{content:"assert(autoVelocity.getInitialSpeed() === 0.9)",filepath:"createAutoVelocity.spec.js",line:59}))
        • initial speed should be from song’s BPM [ANOTHER]1ms ‣

          var e=new c
          const t=(0,o.Z)({enabled:!0,initialSpeed:3.8,desiredLeadTime:600,songBPM:162})
          s()(e._expr(e._capt(3.1===e._capt(e._capt(t,"arguments/0/left/callee/object").getInitialSpeed(),"arguments/0/left"),"arguments/0"),{content:"assert(autoVelocity.getInitialSpeed() === 3.1)",filepath:"createAutoVelocity.spec.js",line:68}))
        • initial speed should be from song’s BPM [TUTORIAL]0ms ‣

          var e=new c
          const t=(0,o.Z)({enabled:!0,initialSpeed:3.8,desiredLeadTime:1685,songBPM:178})
          s()(e._expr(e._capt(1===e._capt(e._capt(t,"arguments/0/left/callee/object").getInitialSpeed(),"arguments/0/left"),"arguments/0"),{content:"assert(autoVelocity.getInitialSpeed() === 1.0)",filepath:"createAutoVelocity.spec.js",line:77}))
        • should save speed and lead time after playing game0ms ‣

          var e=new c,t=new c
          const n=(0,o.Z)({enabled:!0,initialSpeed:3.8,desiredLeadTime:1685,songBPM:178}),a=sinon.spy(),r=sinon.spy()
          n.handleGameFinish(3,{saveSpeed:a,saveLeadTime:r}),s()(e._expr(e._capt(e._capt(a,"arguments/0/callee/object").calledWith(3),"arguments/0"),{content:"assert(saveSpeed.calledWith(3))",filepath:"createAutoVelocity.spec.js",line:89})),s()(t._expr(t._capt(t._capt(r,"arguments/0/callee/object").calledWith(562),"arguments/0"),{content:"assert(saveLeadTime.calledWith(562))",filepath:"createAutoVelocity.spec.js",line:90}))
        • should not save if speed remains the same1ms ‣

          var e=new c,t=new c
          const n=(0,o.Z)({enabled:!0,initialSpeed:3.8,desiredLeadTime:1685,songBPM:178}),a=sinon.spy(),r=sinon.spy()
          n.handleGameFinish(1,{saveSpeed:a,saveLeadTime:r}),s()(e._expr(e._capt(e._capt(a,"arguments/0/callee/object").calledWith(1),"arguments/0"),{content:"assert(saveSpeed.calledWith(1))",filepath:"createAutoVelocity.spec.js",line:102})),s()(t._expr(t._capt(!t._capt(t._capt(r,"arguments/0/argument/object").called,"arguments/0/argument"),"arguments/0"),{content:"assert(!saveLeadTime.called)",filepath:"createAutoVelocity.spec.js",line:103}))
  • ./app/interactors/findMatchingSong.spec.js

    • selecting a song by title

      • finds a matching song1ms ‣

        var n=new c
        s()(n._expr(n._capt("DE/CON-STRUKT"===n._capt((0,o.Z)(n._capt({songs:e,getTitle:t,title:"DE/CON-STRUKT"},"arguments/0/left/arguments/0")),"arguments/0/left"),"arguments/0"),{content:"assert(findMatchingSong({songs,getTitle,title: 'DE/CON-STRUKT'}) === 'DE/CON-STRUKT')",filepath:"findMatchingSong.spec.js",line:18}))
      • matches case-insensitively0ms ‣

        var n=new c
        s()(n._expr(n._capt("Everyday evermore"===n._capt((0,o.Z)(n._capt({songs:e,getTitle:t,title:"everyday evermore"},"arguments/0/left/arguments/0")),"arguments/0/left"),"arguments/0"),{content:"assert(findMatchingSong({songs,getTitle,title: 'everyday evermore'}) === 'Everyday evermore')",filepath:"findMatchingSong.spec.js",line:25}))
  • ./app/interactors/getLR2Score.spec.js

    • Calculating LR2 score

      • perfect great = 2 points0ms ‣

        var t=new c
        s()(t._expr(t._capt(2===t._capt((0,o.Z)(t._capt([.001],"arguments/0/left/arguments/0"),t._capt(e,"arguments/0/left/arguments/1")),"arguments/0/left"),"arguments/0"),{content:"assert(getLR2Score([0.001], LR2_NORMAL_TIMEGATE) === 2)",filepath:"getLR2Score.spec.js",line:8}))
      • great = 1 point0ms ‣

        var t=new c
        s()(t._expr(t._capt(1===t._capt((0,o.Z)(t._capt([.02],"arguments/0/left/arguments/0"),t._capt(e,"arguments/0/left/arguments/1")),"arguments/0/left"),"arguments/0"),{content:"assert(getLR2Score([0.02], LR2_NORMAL_TIMEGATE) === 1)",filepath:"getLR2Score.spec.js",line:11}))
      • other = 0 points0ms ‣

        var t=new c
        s()(t._expr(t._capt(0===t._capt((0,o.Z)(t._capt([.06],"arguments/0/left/arguments/0"),t._capt(e,"arguments/0/left/arguments/1")),"arguments/0/left"),"arguments/0"),{content:"assert(getLR2Score([0.06], LR2_NORMAL_TIMEGATE) === 0)",filepath:"getLR2Score.spec.js",line:14}))
      • sums the points0ms ‣

        var t=new c
        s()(t._expr(t._capt(4===t._capt((0,o.Z)(t._capt([.01,.02,.03,.05],"arguments/0/left/arguments/0"),t._capt(e,"arguments/0/left/arguments/1")),"arguments/0/left"),"arguments/0"),{content:"assert(getLR2Score([0.01,0.02,0.03,0.05], LR2_NORMAL_TIMEGATE) === 4)",filepath:"getLR2Score.spec.js",line:17}))
      • works with arbitrary timegates0ms ‣

        var e=new c
        s()(e._expr(e._capt(7===e._capt((0,o.Z)(e._capt([.01,.02,.03,.05],"arguments/0/left/arguments/0"),e._capt([35,70],"arguments/0/left/arguments/1")),"arguments/0/left"),"arguments/0"),{content:"assert(getLR2Score([0.01,0.02,0.03,0.05], [35,70]) === 7)",filepath:"getLR2Score.spec.js",line:20}))
  • ./app/redux/ReduxState.spec.js

    • ReduxState

      • integration test

        • should intially selected easiest song and chart2ms ‣

          const t=e.getState()
          expect((0,a.eB)(t).title).to.equal("Anhedonia"),expect((0,a.Qw)(t).file).to.equal("00_anhedonia_7b.bms")
  • ./custom-folder/index.spec.ts