From b5d7602f4f5b1037efc26a07f418c849c5cb6730 Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford <cwillisf@media.mit.edu> Date: Wed, 14 Mar 2018 16:08:53 -0700 Subject: [PATCH] Add test for say/think and wait This test currently fails due to a bug in the sequencer's `stepThread` method. The bug affects real projects, too, but was not caught by any test prior to this one. --- test/fixtures/saythink-and-wait.sb2 | Bin 0 -> 6588 bytes test/integration/saythink-and-wait.js | 37 ++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 test/fixtures/saythink-and-wait.sb2 create mode 100644 test/integration/saythink-and-wait.js diff --git a/test/fixtures/saythink-and-wait.sb2 b/test/fixtures/saythink-and-wait.sb2 new file mode 100644 index 0000000000000000000000000000000000000000..d9be202c4281dd3afa75c4c0d5c62b55056cc41d GIT binary patch literal 6588 zcmWIWW@h1HU|`^2Xsu25F=W0rO_Pa%VF?QZ0}oKNpeR2pHMvADt2jTeHaIqav4KF1 zUp?#d=Ng+76&3UMezQ~h>K*=aUFel|Q=QKB3Cg#Zh==}spU&gCV_CS;5(DGiXV$e} z-^>{J=R5Bdk7tZKw{LJVDoI$?v)0>$FLvKNUN-g={ihS`(xXDxOthZWd{FzwqPQ3< zs~YCGc)yy!GZu?4YcA)|>69oqqVm|LJ=1BijeKa)*7xc;oLBixR;^eY@aaZ~HaBlk z<E2G)1xG5}?k|>;6+L>zaJRaB@Y=1)dbb?Kj1JrTU7RwBEA{?!mAQr;i!9jf9$U<G zns!N}QL@FRE6C%U9e-(E#{H8?kt@%aUw>!$?SNa#igVpryuB$VAN{T^Ix%PZ<FeoF z0hx(~`@<(^1xD8MdAqec7VA%clG^)ew%e3=?ud!%?Sjm=E5ow)H&}`VNS=ANGwkUc z9_CN7-A=Vd|5u3L-a6sD{K?ZrCQ_9<cenjzkuffu)%9+palH_C8B;lTzwtCDo9@GN zg0?@==`EO(WYM?mq)O+qy$LlUz2%1wO4QEJd35m5#^+_f1^-J={HAeW+3R-UCmZ`6 z8rwZR)l8PnJ^sYk<Ne!f-kl-4S{7O7C+eB52|Hjr-8pfCvXn7*rRom0y|(+3lzTFc zhFza~?FWZ$$~u`h{aNKdxQ+;_Zgs5PSH%4L&ep>$4?EblSH^L49-QtIv2^cNvlH7l zy<b&*v2|4~_xp|~tTVp)Us)zQ`%lyzmPDf^?~X@Y`IZ&@H-B#B$?DMAg+3=|e%||= zI{=!b7{Ezt!$qOT?}5n)gjs<}%0RCmFTFFs&z+Y`3Y748Jw0547#J8I0C5Hf8&IU* zTtk6@fu+{d#WAGf*4wLwyuieGc!TWI{z|RRII|X;lZ*_-6M<q9AY_mLLI)Zcfrx>b z4TK;PBUug-DA>bgWXM4h1bUi)_<f|vsWPBs2xQMgCE%H51j^wnC0;Q~-(+1VnSXK` zusqT&ag8Vm&QB{TPb^AhNUGFJ%E`}9NvYIJE~+dj$=A!wO-xVK1D0q;Ca!tO`6;PI zE7<Da0W~ssy85}Sb4qAJEfKdR{IGEZR<a-rDiIB_mxv4}fO3z(B_elz$2nl}cph3J zUWS&4a!>s$l?@oIb2uhmQW1U-!g)X;LBN1Rf`x~Pjj_4G@qhvd6B1$ot3*+SA;bVR z4@niK5ZqRTDomk?3>aca?uF^Z5JK@4L=}b*Of!;OF@!LJBS8R*5Iq9&M+)P7bC!;k zng90!<C)rNte83G<a0g-1`r0NF(d40jQIcq1Jea?8jCNN+`_=XR|-vI*9`@Mjlv@a zZQt`HHyk*nDzwXVFQ~en*A1-486*;bguwwIkpQf984fToGcYtTf+}xjP_vOu0!Z)} zps<M1f~Fb27OeK+)PmcI*t8Jv6`B@e0s^50!6L>Ma3~V31rhN0wTy<{a7d~{FWo^( zhT)#gc{Yrek?2*#&`YbMW#niXiL+e;u3l+VH;<N)qwPpyTC4b5ct~w<8m86JGIF$x zq`ZtYXI{|4Z>ydB*$Nn%)aVH_GI25Bp40$Zf&`GKI0C$3I<b#kBeVqr$8NwQ+2~r( q2X_!!QrV$HJ?L7{`|1cSCpn=#_W*BJP@%}c0)&@=^kq;7n*jiuwM+8= literal 0 HcmV?d00001 diff --git a/test/integration/saythink-and-wait.js b/test/integration/saythink-and-wait.js new file mode 100644 index 000000000..abde2d978 --- /dev/null +++ b/test/integration/saythink-and-wait.js @@ -0,0 +1,37 @@ +const Worker = require('tiny-worker'); +const path = require('path'); +const test = require('tap').test; +const makeTestStorage = require('../fixtures/make-test-storage'); +const extract = require('../fixtures/extract'); +const VirtualMachine = require('../../src/index'); +const dispatch = require('../../src/dispatch/central-dispatch'); + +const uri = path.resolve(__dirname, '../fixtures/saythink-and-wait.sb2'); +const project = extract(uri); + +// By default Central Dispatch works with the Worker class built into the browser. Tell it to use TinyWorker instead. +dispatch.workerClass = Worker; + +test('say/think and wait', t => { + const vm = new VirtualMachine(); + vm.attachStorage(makeTestStorage()); + + // Start VM, load project, and run + t.doesNotThrow(() => { + vm.start(); + vm.clear(); + vm.setCompatibilityMode(false); + vm.setTurboMode(false); + vm.loadProject(project).then(() => { + vm.greenFlag(); + + // After two seconds, stop the project. + // The test will fail if the project throws. + setTimeout(() => { + vm.stopAll(); + t.end(); + process.nextTick(process.exit); + }, 2000); + }); + }); +});