From 71027fc07de30e1542d590c70f860d77a82e1cc4 Mon Sep 17 00:00:00 2001 From: Josh de Leeuw Date: Mon, 10 Apr 2017 14:24:58 -0400 Subject: [PATCH] add tests for conditional_function --- tests/timelines.test.js | 113 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/tests/timelines.test.js b/tests/timelines.test.js index aa1a4fd6..80e054cd 100644 --- a/tests/timelines.test.js +++ b/tests/timelines.test.js @@ -117,4 +117,117 @@ describe('loop function', function(){ expect(jsPsych.data.get().count()).toBe(3); }); + +}); + +describe('conditional function', function(){ + + test('skips the timeline when returns false', function(){ + + var conditional = { + timeline: [{ + type: 'text', + text: 'foo' + }], + conditional_function: function(){ + return false; + } + } + + var trial = { + type: 'text', + text: 'bar' + } + + jsPsych.init({ + timeline: [conditional, trial] + }); + + expect(jsPsych.getDisplayElement().innerHTML).toBe('bar'); + + // clear + document.dispatchEvent(new KeyboardEvent('keydown', {keyCode: 32})); + document.dispatchEvent(new KeyboardEvent('keyup', {keyCode: 32})); + }); + + test('completes the timeline when returns true', function(){ + var conditional = { + timeline: [{ + type: 'text', + text: 'foo' + }], + conditional_function: function(){ + return true; + } + } + + var trial = { + type: 'text', + text: 'bar' + } + + jsPsych.init({ + timeline: [conditional, trial] + }); + + expect(jsPsych.getDisplayElement().innerHTML).toBe('foo'); + + // next + document.dispatchEvent(new KeyboardEvent('keydown', {keyCode: 32})); + document.dispatchEvent(new KeyboardEvent('keyup', {keyCode: 32})); + + expect(jsPsych.getDisplayElement().innerHTML).toBe('bar'); + + // clear + document.dispatchEvent(new KeyboardEvent('keydown', {keyCode: 32})); + document.dispatchEvent(new KeyboardEvent('keyup', {keyCode: 32})); + }); + + test('executes on every loop of the timeline', function(){ + + var count = 0; + var conditional_count = 0; + + var trial = { + timeline: [{ + type: 'text', + text: 'foo' + }], + loop_function: function(){ + if(count < 1){ + count++; + return true; + } else { + return false; + } + }, + conditional_function: function(){ + conditional_count++; + return true; + } + } + + jsPsych.init({ + timeline: [trial] + }); + + expect(conditional_count).toBe(1); + + // first trial + document.dispatchEvent(new KeyboardEvent('keydown', {keyCode: 32})); + document.dispatchEvent(new KeyboardEvent('keyup', {keyCode: 32})); + + expect(conditional_count).toBe(2); + + // second trial + document.dispatchEvent(new KeyboardEvent('keydown', {keyCode: 32})); + document.dispatchEvent(new KeyboardEvent('keyup', {keyCode: 32})); + + expect(conditional_count).toBe(2); + }); + +}); + +describe('endCurrentTimeline', function(){ + });