@benev/tact 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/s/core/bindings/parts/lens-algo.ts +2 -1
- package/s/core/core.test.ts +66 -35
- package/s/core/testing/testing.ts +11 -10
- package/x/core/bindings/parts/lens-algo.js +1 -1
- package/x/core/bindings/parts/lens-algo.js.map +1 -1
- package/x/core/core.test.d.ts +1 -1
- package/x/core/core.test.js +58 -36
- package/x/core/core.test.js.map +1 -1
- package/x/core/testing/testing.d.ts +13 -6
- package/x/core/testing/testing.js +11 -10
- package/x/core/testing/testing.js.map +1 -1
- package/x/demo/main.bundle.min.js +1 -1
- package/x/demo/main.bundle.min.js.map +2 -2
- package/x/index.html +2 -2
package/package.json
CHANGED
|
@@ -54,11 +54,12 @@ export const lensAlgo = (
|
|
|
54
54
|
|
|
55
55
|
const isFreshlyPressed = !isPressed(state.lastValue) && isPressed(value)
|
|
56
56
|
const isFreshlyReleased = isPressed(state.lastValue) && !isPressed(value)
|
|
57
|
-
const isHolding = (now - state.holdStart) >= holdTime
|
|
58
57
|
|
|
59
58
|
if (isFreshlyPressed)
|
|
60
59
|
state.holdStart = now
|
|
61
60
|
|
|
61
|
+
const isHolding = (now - state.holdStart) >= holdTime
|
|
62
|
+
|
|
62
63
|
state.lastValue = value
|
|
63
64
|
|
|
64
65
|
switch (settings.timing[0]) {
|
package/s/core/core.test.ts
CHANGED
|
@@ -6,16 +6,16 @@ import {testPlug, testSetupAlpha, testSetupBravo} from "./testing/testing.js"
|
|
|
6
6
|
|
|
7
7
|
export default Science.suite({
|
|
8
8
|
"sample to action value": test(async() => {
|
|
9
|
-
const {
|
|
9
|
+
const {clock, device, resolve} = testSetupAlpha()
|
|
10
10
|
{
|
|
11
|
-
|
|
11
|
+
clock.frame = 1
|
|
12
12
|
device.setSample("Space", 1)
|
|
13
13
|
const actions = resolve()
|
|
14
14
|
expect(actions.basic.jump.value).is(1)
|
|
15
15
|
expect(actions.basic.shoot.value).is(0)
|
|
16
16
|
}
|
|
17
17
|
{
|
|
18
|
-
|
|
18
|
+
clock.frame = 2
|
|
19
19
|
device.setSample("Space", 2)
|
|
20
20
|
device.setSample("pointer.button.left", 3)
|
|
21
21
|
const actions = resolve()
|
|
@@ -24,97 +24,128 @@ export default Science.suite({
|
|
|
24
24
|
}
|
|
25
25
|
}),
|
|
26
26
|
|
|
27
|
-
"hold timing": test(async() => {
|
|
28
|
-
const {
|
|
29
|
-
{
|
|
30
|
-
time
|
|
31
|
-
device.setSample("KeyG",
|
|
32
|
-
|
|
33
|
-
expect(actions.basic.grenade.value).is(0)
|
|
34
|
-
}
|
|
35
|
-
{
|
|
36
|
-
time.frame = 2
|
|
37
|
-
device.setSample("KeyG", 1)
|
|
38
|
-
const actions = resolve()
|
|
39
|
-
expect(actions.basic.grenade.value).is(0)
|
|
40
|
-
}
|
|
41
|
-
{
|
|
42
|
-
time.frame = 15
|
|
43
|
-
device.setSample("KeyG", 1)
|
|
44
|
-
const actions = resolve()
|
|
45
|
-
expect(actions.basic.grenade.value).is(1)
|
|
27
|
+
"hold timing and behavior": test(async() => {
|
|
28
|
+
const {clock, device, resolve, actions} = testSetupAlpha()
|
|
29
|
+
const proceed = (options: {time: number, value: number}) => {
|
|
30
|
+
clock.time = options.time
|
|
31
|
+
device.setSample("KeyG", options.value)
|
|
32
|
+
resolve()
|
|
46
33
|
}
|
|
34
|
+
|
|
35
|
+
let count = 0
|
|
36
|
+
actions.basic.grenade.onDown(() => { count++ })
|
|
37
|
+
const getValue = () => actions.basic.grenade.value
|
|
38
|
+
|
|
39
|
+
// start doing nothing
|
|
40
|
+
proceed({time: 0, value: 0})
|
|
41
|
+
expect(getValue()).is(0)
|
|
42
|
+
expect(count).is(0)
|
|
43
|
+
|
|
44
|
+
// start holding
|
|
45
|
+
proceed({time: 10, value: 1})
|
|
46
|
+
expect(getValue()).is(0)
|
|
47
|
+
expect(count).is(0)
|
|
48
|
+
|
|
49
|
+
// keep holding
|
|
50
|
+
proceed({time: 20, value: 1})
|
|
51
|
+
expect(getValue()).is(0)
|
|
52
|
+
expect(count).is(0)
|
|
53
|
+
|
|
54
|
+
// held long enough to trigger down
|
|
55
|
+
proceed({time: 210, value: 1})
|
|
56
|
+
expect(getValue()).is(1)
|
|
57
|
+
expect(count).is(1)
|
|
58
|
+
|
|
59
|
+
// release, shouldn't trigger new down
|
|
60
|
+
proceed({time: 220, value: 0})
|
|
61
|
+
expect(getValue()).is(0)
|
|
62
|
+
expect(count).is(1)
|
|
63
|
+
|
|
64
|
+
// start holding again
|
|
65
|
+
proceed({time: 230, value: 1})
|
|
66
|
+
expect(getValue()).is(0)
|
|
67
|
+
expect(count).is(1)
|
|
68
|
+
|
|
69
|
+
// keep holding again
|
|
70
|
+
proceed({time: 330, value: 1})
|
|
71
|
+
expect(getValue()).is(0)
|
|
72
|
+
expect(count).is(1)
|
|
73
|
+
|
|
74
|
+
// held long enough again to trigger down
|
|
75
|
+
proceed({time: 430, value: 1})
|
|
76
|
+
expect(getValue()).is(1)
|
|
77
|
+
expect(count).is(2)
|
|
47
78
|
}),
|
|
48
79
|
|
|
49
80
|
"hub": Science.suite({
|
|
50
81
|
"device inputs work": test(async() => {
|
|
51
|
-
const {hub,
|
|
82
|
+
const {hub, clock} = testSetupBravo()
|
|
52
83
|
const d1 = testPlug(hub, new SamplerDevice())
|
|
53
84
|
d1.setSample("Space", 1)
|
|
54
|
-
const [p1, p2] = hub.poll(time
|
|
85
|
+
const [p1, p2] = hub.poll(clock.time)
|
|
55
86
|
expect(p1.actions.basic.jump.value).is(1)
|
|
56
87
|
expect(p2.actions.basic.jump.value).is(0)
|
|
57
88
|
}),
|
|
58
89
|
|
|
59
90
|
"reveal overlay works": test(async() => {
|
|
60
|
-
const {hub,
|
|
91
|
+
const {hub, clock} = testSetupBravo()
|
|
61
92
|
const d1 = testPlug(hub, new SamplerDevice())
|
|
62
93
|
d1.setSample("Backslash", 1)
|
|
63
|
-
hub.poll(time
|
|
94
|
+
hub.poll(clock.time)
|
|
64
95
|
expect(hub.metaPort.actions[metaMode].revealOverlay.value)
|
|
65
96
|
.is(1)
|
|
66
97
|
}),
|
|
67
98
|
|
|
68
99
|
"two devices playing on separate ports": test(async() => {
|
|
69
|
-
const {hub,
|
|
100
|
+
const {hub, clock} = testSetupBravo()
|
|
70
101
|
const c1 = testPlug(hub, new SamplerDevice())
|
|
71
102
|
const c2 = testPlug(hub, new SamplerDevice())
|
|
72
103
|
c1.setSample("Space", 1)
|
|
73
104
|
c2.setSample("Space", 2)
|
|
74
|
-
const [p1, p2] = hub.poll(time
|
|
105
|
+
const [p1, p2] = hub.poll(clock.time)
|
|
75
106
|
expect(p1.actions.basic.jump.value).is(1)
|
|
76
107
|
expect(p2.actions.basic.jump.value).is(2)
|
|
77
108
|
}),
|
|
78
109
|
|
|
79
110
|
"device can shimmy": test(async() => {
|
|
80
|
-
const {hub,
|
|
111
|
+
const {hub, clock} = testSetupBravo()
|
|
81
112
|
const c1 = testPlug(hub, new SamplerDevice())
|
|
82
113
|
hub.shimmy(c1, 1)
|
|
83
114
|
c1.setSample("Space", 1)
|
|
84
|
-
const [p1, p2] = hub.poll(time
|
|
115
|
+
const [p1, p2] = hub.poll(clock.time)
|
|
85
116
|
expect(p1.actions.basic.jump.value).is(0)
|
|
86
117
|
expect(p2.actions.basic.jump.value).is(1)
|
|
87
118
|
}),
|
|
88
119
|
|
|
89
120
|
"two devices can share a port": test(async() => {
|
|
90
|
-
const {hub,
|
|
121
|
+
const {hub, clock} = testSetupBravo()
|
|
91
122
|
const c1 = testPlug(hub, new SamplerDevice())
|
|
92
123
|
const c2 = testPlug(hub, new SamplerDevice())
|
|
93
124
|
hub.shimmy(c2, -1)
|
|
94
125
|
expect(hub.portByDevice(c1)).is(hub.portByDevice(c2))
|
|
95
126
|
{
|
|
96
127
|
c1.setSample("Space", 1)
|
|
97
|
-
const [p1, p2] = hub.poll(time
|
|
128
|
+
const [p1, p2] = hub.poll(clock.time)
|
|
98
129
|
expect(p1.actions.basic.jump.value).is(1)
|
|
99
130
|
expect(p2.actions.basic.jump.value).is(0)
|
|
100
131
|
}
|
|
101
132
|
{
|
|
102
133
|
c2.setSample("Space", 1)
|
|
103
|
-
const [p1, p2] = hub.poll(time
|
|
134
|
+
const [p1, p2] = hub.poll(clock.time)
|
|
104
135
|
expect(p1.actions.basic.jump.value).is(1)
|
|
105
136
|
expect(p2.actions.basic.jump.value).is(0)
|
|
106
137
|
}
|
|
107
138
|
{
|
|
108
139
|
c1.setSample("Space", 1)
|
|
109
140
|
c2.setSample("Space", 2)
|
|
110
|
-
const [p1, p2] = hub.poll(time
|
|
141
|
+
const [p1, p2] = hub.poll(clock.time)
|
|
111
142
|
expect(p1.actions.basic.jump.value).is(2)
|
|
112
143
|
expect(p2.actions.basic.jump.value).is(0)
|
|
113
144
|
}
|
|
114
145
|
{
|
|
115
146
|
c1.setSample("Space", 2)
|
|
116
147
|
c2.setSample("Space", 1)
|
|
117
|
-
const [p1, p2] = hub.poll(time
|
|
148
|
+
const [p1, p2] = hub.poll(clock.time)
|
|
118
149
|
expect(p1.actions.basic.jump.value).is(2)
|
|
119
150
|
expect(p2.actions.basic.jump.value).is(0)
|
|
120
151
|
}
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
import {Hub} from "../hub/hub.js"
|
|
3
3
|
import {Port} from "../hub/port.js"
|
|
4
4
|
import {Device} from "../devices/device.js"
|
|
5
|
-
import {asBindings, Code} from "../bindings/types.js"
|
|
6
5
|
import {Resolver} from "../bindings/resolver.js"
|
|
7
6
|
import {SampleMap} from "../bindings/sample-map.js"
|
|
7
|
+
import {asBindings, Code} from "../bindings/types.js"
|
|
8
8
|
import {SamplerDevice} from "../devices/infra/sampler.js"
|
|
9
9
|
|
|
10
|
-
export class
|
|
11
|
-
|
|
10
|
+
export class TestClock {
|
|
11
|
+
time = 0
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
set frame(frame: number) {
|
|
14
|
+
this.time = frame * (1000 / 60)
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -31,26 +31,27 @@ export function testPlug<C extends Device>(hub: Hub<any>, device: C) {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
export function testSetupAlpha() {
|
|
34
|
-
const
|
|
34
|
+
const clock = new TestClock()
|
|
35
35
|
const device = new SamplerDevice()
|
|
36
36
|
const resolver = new Resolver(testBindings())
|
|
37
37
|
const modes = new Set(Object.keys(resolver.bindings))
|
|
38
|
+
const actions = resolver.actions
|
|
38
39
|
const resolve = () => resolver.resolve(
|
|
39
|
-
time
|
|
40
|
+
clock.time,
|
|
40
41
|
modes as any,
|
|
41
42
|
new SampleMap(device.samples())
|
|
42
43
|
)
|
|
43
|
-
return {device, resolver, resolve,
|
|
44
|
+
return {device, resolver, resolve, clock, actions}
|
|
44
45
|
}
|
|
45
46
|
|
|
46
47
|
export function testSetupBravo() {
|
|
47
|
-
const
|
|
48
|
+
const clock = new TestClock()
|
|
48
49
|
const port = () => {
|
|
49
50
|
const port = new Port(testBindings())
|
|
50
51
|
port.modes.adds("basic")
|
|
51
52
|
return port
|
|
52
53
|
}
|
|
53
54
|
const hub = new Hub([port(), port(), port(), port()])
|
|
54
|
-
return {hub,
|
|
55
|
+
return {hub, clock}
|
|
55
56
|
}
|
|
56
57
|
|
|
@@ -32,9 +32,9 @@ export const lensAlgo = (now, state, v) => pipe(v).line(function clippings(value
|
|
|
32
32
|
: settings.timing[1]) ?? defaultHoldTime;
|
|
33
33
|
const isFreshlyPressed = !isPressed(state.lastValue) && isPressed(value);
|
|
34
34
|
const isFreshlyReleased = isPressed(state.lastValue) && !isPressed(value);
|
|
35
|
-
const isHolding = (now - state.holdStart) >= holdTime;
|
|
36
35
|
if (isFreshlyPressed)
|
|
37
36
|
state.holdStart = now;
|
|
37
|
+
const isHolding = (now - state.holdStart) >= holdTime;
|
|
38
38
|
state.lastValue = value;
|
|
39
39
|
switch (settings.timing[0]) {
|
|
40
40
|
case "direct":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lens-algo.js","sourceRoot":"","sources":["../../../../s/core/bindings/parts/lens-algo.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAC9B,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAA;AAElC,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAA;AAE7C,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,GAAW,EACX,KAAgB,EAChB,CAAS,EACR,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAEjB,SAAS,SAAS,CAAC,KAAK;IACvB,MAAM,EAAC,QAAQ,EAAC,GAAG,KAAK,CAAA;IACxB,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAA;QACpC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;IACzC,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAA;QACpC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC;YAC3C,CAAC,CAAC,MAAM,CAAC,KAAK,CACb,KAAK,EACL,MAAM,EAAE,GAAG,EACX,CAAC,EAAE,CAAC,EACJ,IAAI,CACJ;YACD,CAAC,CAAC,CAAC,CAAA;IACL,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM;QAAE,KAAK,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAClE,IAAI,QAAQ,CAAC,GAAG;QAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACvD,OAAO,KAAK,CAAA;AACb,CAAC,EAED,SAAS,SAAS,CAAC,KAAK;IACvB,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM;QAC3B,CAAC,CAAC,CAAC,GAAG,KAAK;QACX,CAAC,CAAC,KAAK,CAAA;AACT,CAAC,EAED,SAAS,OAAO,CAAC,KAAK;IACrB,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;AACpC,CAAC,EAED,SAAS,MAAM,CAAC,KAAK;IACpB,MAAM,EAAC,QAAQ,EAAC,GAAG,KAAK,CAAA;IAExB,MAAM,QAAQ,GAAG,CAChB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ;QAC9B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CACrB,IAAI,eAAe,CAAA;IAEpB,MAAM,gBAAgB,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAA;IACxE,MAAM,iBAAiB,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"lens-algo.js","sourceRoot":"","sources":["../../../../s/core/bindings/parts/lens-algo.ts"],"names":[],"mappings":"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"}
|
package/x/core/core.test.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Science } from "@e280/science";
|
|
2
2
|
declare const _default: {
|
|
3
3
|
"sample to action value": Science.Test;
|
|
4
|
-
"hold timing": Science.Test;
|
|
4
|
+
"hold timing and behavior": Science.Test;
|
|
5
5
|
hub: {
|
|
6
6
|
"device inputs work": Science.Test;
|
|
7
7
|
"reveal overlay works": Science.Test;
|
package/x/core/core.test.js
CHANGED
|
@@ -4,16 +4,16 @@ import { SamplerDevice } from "./devices/infra/sampler.js";
|
|
|
4
4
|
import { testPlug, testSetupAlpha, testSetupBravo } from "./testing/testing.js";
|
|
5
5
|
export default Science.suite({
|
|
6
6
|
"sample to action value": test(async () => {
|
|
7
|
-
const {
|
|
7
|
+
const { clock, device, resolve } = testSetupAlpha();
|
|
8
8
|
{
|
|
9
|
-
|
|
9
|
+
clock.frame = 1;
|
|
10
10
|
device.setSample("Space", 1);
|
|
11
11
|
const actions = resolve();
|
|
12
12
|
expect(actions.basic.jump.value).is(1);
|
|
13
13
|
expect(actions.basic.shoot.value).is(0);
|
|
14
14
|
}
|
|
15
15
|
{
|
|
16
|
-
|
|
16
|
+
clock.frame = 2;
|
|
17
17
|
device.setSample("Space", 2);
|
|
18
18
|
device.setSample("pointer.button.left", 3);
|
|
19
19
|
const actions = resolve();
|
|
@@ -21,92 +21,114 @@ export default Science.suite({
|
|
|
21
21
|
expect(actions.basic.shoot.value).is(3);
|
|
22
22
|
}
|
|
23
23
|
}),
|
|
24
|
-
"hold timing": test(async () => {
|
|
25
|
-
const {
|
|
26
|
-
{
|
|
27
|
-
time
|
|
28
|
-
device.setSample("KeyG",
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
{
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
24
|
+
"hold timing and behavior": test(async () => {
|
|
25
|
+
const { clock, device, resolve, actions } = testSetupAlpha();
|
|
26
|
+
const proceed = (options) => {
|
|
27
|
+
clock.time = options.time;
|
|
28
|
+
device.setSample("KeyG", options.value);
|
|
29
|
+
resolve();
|
|
30
|
+
};
|
|
31
|
+
let count = 0;
|
|
32
|
+
actions.basic.grenade.onDown(() => { count++; });
|
|
33
|
+
const getValue = () => actions.basic.grenade.value;
|
|
34
|
+
// start doing nothing
|
|
35
|
+
proceed({ time: 0, value: 0 });
|
|
36
|
+
expect(getValue()).is(0);
|
|
37
|
+
expect(count).is(0);
|
|
38
|
+
// start holding
|
|
39
|
+
proceed({ time: 10, value: 1 });
|
|
40
|
+
expect(getValue()).is(0);
|
|
41
|
+
expect(count).is(0);
|
|
42
|
+
// keep holding
|
|
43
|
+
proceed({ time: 20, value: 1 });
|
|
44
|
+
expect(getValue()).is(0);
|
|
45
|
+
expect(count).is(0);
|
|
46
|
+
// held long enough to trigger down
|
|
47
|
+
proceed({ time: 210, value: 1 });
|
|
48
|
+
expect(getValue()).is(1);
|
|
49
|
+
expect(count).is(1);
|
|
50
|
+
// release, shouldn't trigger new down
|
|
51
|
+
proceed({ time: 220, value: 0 });
|
|
52
|
+
expect(getValue()).is(0);
|
|
53
|
+
expect(count).is(1);
|
|
54
|
+
// start holding again
|
|
55
|
+
proceed({ time: 230, value: 1 });
|
|
56
|
+
expect(getValue()).is(0);
|
|
57
|
+
expect(count).is(1);
|
|
58
|
+
// keep holding again
|
|
59
|
+
proceed({ time: 330, value: 1 });
|
|
60
|
+
expect(getValue()).is(0);
|
|
61
|
+
expect(count).is(1);
|
|
62
|
+
// held long enough again to trigger down
|
|
63
|
+
proceed({ time: 430, value: 1 });
|
|
64
|
+
expect(getValue()).is(1);
|
|
65
|
+
expect(count).is(2);
|
|
44
66
|
}),
|
|
45
67
|
"hub": Science.suite({
|
|
46
68
|
"device inputs work": test(async () => {
|
|
47
|
-
const { hub,
|
|
69
|
+
const { hub, clock } = testSetupBravo();
|
|
48
70
|
const d1 = testPlug(hub, new SamplerDevice());
|
|
49
71
|
d1.setSample("Space", 1);
|
|
50
|
-
const [p1, p2] = hub.poll(time
|
|
72
|
+
const [p1, p2] = hub.poll(clock.time);
|
|
51
73
|
expect(p1.actions.basic.jump.value).is(1);
|
|
52
74
|
expect(p2.actions.basic.jump.value).is(0);
|
|
53
75
|
}),
|
|
54
76
|
"reveal overlay works": test(async () => {
|
|
55
|
-
const { hub,
|
|
77
|
+
const { hub, clock } = testSetupBravo();
|
|
56
78
|
const d1 = testPlug(hub, new SamplerDevice());
|
|
57
79
|
d1.setSample("Backslash", 1);
|
|
58
|
-
hub.poll(time
|
|
80
|
+
hub.poll(clock.time);
|
|
59
81
|
expect(hub.metaPort.actions[metaMode].revealOverlay.value)
|
|
60
82
|
.is(1);
|
|
61
83
|
}),
|
|
62
84
|
"two devices playing on separate ports": test(async () => {
|
|
63
|
-
const { hub,
|
|
85
|
+
const { hub, clock } = testSetupBravo();
|
|
64
86
|
const c1 = testPlug(hub, new SamplerDevice());
|
|
65
87
|
const c2 = testPlug(hub, new SamplerDevice());
|
|
66
88
|
c1.setSample("Space", 1);
|
|
67
89
|
c2.setSample("Space", 2);
|
|
68
|
-
const [p1, p2] = hub.poll(time
|
|
90
|
+
const [p1, p2] = hub.poll(clock.time);
|
|
69
91
|
expect(p1.actions.basic.jump.value).is(1);
|
|
70
92
|
expect(p2.actions.basic.jump.value).is(2);
|
|
71
93
|
}),
|
|
72
94
|
"device can shimmy": test(async () => {
|
|
73
|
-
const { hub,
|
|
95
|
+
const { hub, clock } = testSetupBravo();
|
|
74
96
|
const c1 = testPlug(hub, new SamplerDevice());
|
|
75
97
|
hub.shimmy(c1, 1);
|
|
76
98
|
c1.setSample("Space", 1);
|
|
77
|
-
const [p1, p2] = hub.poll(time
|
|
99
|
+
const [p1, p2] = hub.poll(clock.time);
|
|
78
100
|
expect(p1.actions.basic.jump.value).is(0);
|
|
79
101
|
expect(p2.actions.basic.jump.value).is(1);
|
|
80
102
|
}),
|
|
81
103
|
"two devices can share a port": test(async () => {
|
|
82
|
-
const { hub,
|
|
104
|
+
const { hub, clock } = testSetupBravo();
|
|
83
105
|
const c1 = testPlug(hub, new SamplerDevice());
|
|
84
106
|
const c2 = testPlug(hub, new SamplerDevice());
|
|
85
107
|
hub.shimmy(c2, -1);
|
|
86
108
|
expect(hub.portByDevice(c1)).is(hub.portByDevice(c2));
|
|
87
109
|
{
|
|
88
110
|
c1.setSample("Space", 1);
|
|
89
|
-
const [p1, p2] = hub.poll(time
|
|
111
|
+
const [p1, p2] = hub.poll(clock.time);
|
|
90
112
|
expect(p1.actions.basic.jump.value).is(1);
|
|
91
113
|
expect(p2.actions.basic.jump.value).is(0);
|
|
92
114
|
}
|
|
93
115
|
{
|
|
94
116
|
c2.setSample("Space", 1);
|
|
95
|
-
const [p1, p2] = hub.poll(time
|
|
117
|
+
const [p1, p2] = hub.poll(clock.time);
|
|
96
118
|
expect(p1.actions.basic.jump.value).is(1);
|
|
97
119
|
expect(p2.actions.basic.jump.value).is(0);
|
|
98
120
|
}
|
|
99
121
|
{
|
|
100
122
|
c1.setSample("Space", 1);
|
|
101
123
|
c2.setSample("Space", 2);
|
|
102
|
-
const [p1, p2] = hub.poll(time
|
|
124
|
+
const [p1, p2] = hub.poll(clock.time);
|
|
103
125
|
expect(p1.actions.basic.jump.value).is(2);
|
|
104
126
|
expect(p2.actions.basic.jump.value).is(0);
|
|
105
127
|
}
|
|
106
128
|
{
|
|
107
129
|
c1.setSample("Space", 2);
|
|
108
130
|
c2.setSample("Space", 1);
|
|
109
|
-
const [p1, p2] = hub.poll(time
|
|
131
|
+
const [p1, p2] = hub.poll(clock.time);
|
|
110
132
|
expect(p1.actions.basic.jump.value).is(2);
|
|
111
133
|
expect(p2.actions.basic.jump.value).is(0);
|
|
112
134
|
}
|
package/x/core/core.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.test.js","sourceRoot":"","sources":["../../s/core/core.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAC,MAAM,eAAe,CAAA;AACnD,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAC,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAC,MAAM,sBAAsB,CAAA;AAE7E,eAAe,OAAO,CAAC,KAAK,CAAC;IAC5B,wBAAwB,EAAE,IAAI,CAAC,KAAK,IAAG,EAAE;QACxC,MAAM,EAAC,
|
|
1
|
+
{"version":3,"file":"core.test.js","sourceRoot":"","sources":["../../s/core/core.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Hub } from "../hub/hub.js";
|
|
2
2
|
import { Device } from "../devices/device.js";
|
|
3
|
-
import { Code } from "../bindings/types.js";
|
|
4
3
|
import { Resolver } from "../bindings/resolver.js";
|
|
4
|
+
import { Code } from "../bindings/types.js";
|
|
5
5
|
import { SamplerDevice } from "../devices/infra/sampler.js";
|
|
6
|
-
export declare class
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
export declare class TestClock {
|
|
7
|
+
time: number;
|
|
8
|
+
set frame(frame: number);
|
|
9
9
|
}
|
|
10
10
|
export declare function testBindings(): {
|
|
11
11
|
basic: {
|
|
@@ -31,7 +31,14 @@ export declare function testSetupAlpha(): {
|
|
|
31
31
|
grenade: Code;
|
|
32
32
|
};
|
|
33
33
|
}>;
|
|
34
|
-
|
|
34
|
+
clock: TestClock;
|
|
35
|
+
actions: import("../bindings/types.js").Actions<{
|
|
36
|
+
basic: {
|
|
37
|
+
jump: string;
|
|
38
|
+
shoot: string;
|
|
39
|
+
grenade: Code;
|
|
40
|
+
};
|
|
41
|
+
}>;
|
|
35
42
|
};
|
|
36
43
|
export declare function testSetupBravo(): {
|
|
37
44
|
hub: Hub<{
|
|
@@ -41,5 +48,5 @@ export declare function testSetupBravo(): {
|
|
|
41
48
|
grenade: Code;
|
|
42
49
|
};
|
|
43
50
|
}, any>;
|
|
44
|
-
|
|
51
|
+
clock: TestClock;
|
|
45
52
|
};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Hub } from "../hub/hub.js";
|
|
2
2
|
import { Port } from "../hub/port.js";
|
|
3
|
-
import { asBindings } from "../bindings/types.js";
|
|
4
3
|
import { Resolver } from "../bindings/resolver.js";
|
|
5
4
|
import { SampleMap } from "../bindings/sample-map.js";
|
|
5
|
+
import { asBindings } from "../bindings/types.js";
|
|
6
6
|
import { SamplerDevice } from "../devices/infra/sampler.js";
|
|
7
|
-
export class
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
export class TestClock {
|
|
8
|
+
time = 0;
|
|
9
|
+
set frame(frame) {
|
|
10
|
+
this.time = frame * (1000 / 60);
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
export function testBindings() {
|
|
@@ -24,21 +24,22 @@ export function testPlug(hub, device) {
|
|
|
24
24
|
return device;
|
|
25
25
|
}
|
|
26
26
|
export function testSetupAlpha() {
|
|
27
|
-
const
|
|
27
|
+
const clock = new TestClock();
|
|
28
28
|
const device = new SamplerDevice();
|
|
29
29
|
const resolver = new Resolver(testBindings());
|
|
30
30
|
const modes = new Set(Object.keys(resolver.bindings));
|
|
31
|
-
const
|
|
32
|
-
|
|
31
|
+
const actions = resolver.actions;
|
|
32
|
+
const resolve = () => resolver.resolve(clock.time, modes, new SampleMap(device.samples()));
|
|
33
|
+
return { device, resolver, resolve, clock, actions };
|
|
33
34
|
}
|
|
34
35
|
export function testSetupBravo() {
|
|
35
|
-
const
|
|
36
|
+
const clock = new TestClock();
|
|
36
37
|
const port = () => {
|
|
37
38
|
const port = new Port(testBindings());
|
|
38
39
|
port.modes.adds("basic");
|
|
39
40
|
return port;
|
|
40
41
|
};
|
|
41
42
|
const hub = new Hub([port(), port(), port(), port()]);
|
|
42
|
-
return { hub,
|
|
43
|
+
return { hub, clock };
|
|
43
44
|
}
|
|
44
45
|
//# sourceMappingURL=testing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../s/core/testing/testing.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,eAAe,CAAA;AACjC,OAAO,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAA;AAEnC,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../s/core/testing/testing.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,eAAe,CAAA;AACjC,OAAO,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAA;AAEnC,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAC,SAAS,EAAC,MAAM,2BAA2B,CAAA;AACnD,OAAO,EAAC,UAAU,EAAO,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAA;AAEzD,MAAM,OAAO,SAAS;IACrB,IAAI,GAAG,CAAC,CAAA;IAER,IAAI,KAAK,CAAC,KAAa;QACtB,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;IAChC,CAAC;CACD;AAED,MAAM,UAAU,YAAY;IAC3B,OAAO,UAAU,CAAC;QACjB,KAAK,EAAE;YACN,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,qBAAqB;YAC5B,OAAO,EAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAC,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,EAAC,CAAC;SACxD;KACD,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAmB,GAAa,EAAE,MAAS;IAClE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAChB,OAAO,MAAM,CAAA;AACd,CAAC;AAED,MAAM,UAAU,cAAc;IAC7B,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAA;IAC7B,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAA;IAClC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAA;IAC7C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;IACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAA;IAChC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CACrC,KAAK,CAAC,IAAI,EACV,KAAY,EACZ,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAC/B,CAAA;IACD,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAC,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,cAAc;IAC7B,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAA;IAC7B,MAAM,IAAI,GAAG,GAAG,EAAE;QACjB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;QACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxB,OAAO,IAAI,CAAA;IACZ,CAAC,CAAA;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACrD,OAAO,EAAC,GAAG,EAAE,KAAK,EAAC,CAAA;AACpB,CAAC"}
|