aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/companion/test_mood.js
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/companion/test_mood.js')
-rw-r--r--desktop/companion/test_mood.js13
1 files changed, 11 insertions, 2 deletions
diff --git a/desktop/companion/test_mood.js b/desktop/companion/test_mood.js
index 96d1232..f24340c 100644
--- a/desktop/companion/test_mood.js
+++ b/desktop/companion/test_mood.js
@@ -19,7 +19,7 @@ const assert = require("assert");
const src = fs.readFileSync(__dirname + "/Mood.js", "utf8")
.replace(/^\.pragma library$/m, "");
const M = new Function(src +
- "\nreturn { T, click, clickFrame, pick, outfit, mockAllowed, canSpeak, monologue };")();
+ "\nreturn { T, click, clickFrame, pick, outfit, mockAllowed, canSpeak, monologue, admireAllowed };")();
const lsrc = fs.readFileSync(__dirname + "/ListFile.js", "utf8")
.replace(/^\.pragma library$/m, "");
const L = new Function(lsrc + "\nreturn { parse, toggle, outputs };")();
@@ -28,7 +28,7 @@ const NOW = 10000000;
// A snapshot with nothing going on, overridden per case.
const calm = over => Object.assign({
now: NOW, destructAt: 0, dodging: false, shoved: false, shovedAt: 0, recording: false, busy: false,
- repliedAt: 0, clicks: { count: 0, at: 0 }, mockAt: 0, typingAt: 0, wakeAt: 0,
+ repliedAt: 0, clicks: { count: 0, at: 0 }, mockAt: 0, typingAt: 0, wakeAt: 0, admireAt: 0,
monologue: false, idle: 0,
}, over);
const state = over => M.pick(calm(over)).state;
@@ -48,6 +48,7 @@ const ladder = [
["think", { busy: true }],
["wave", { repliedAt: NOW - 10 }],
["clicks", { clicks: { count: 2, at: NOW - 10 } }],
+ ["admire", { admireAt: NOW - 10 }],
["mock", { mockAt: NOW - 10 }],
["watch", { typingAt: NOW - 10 }],
["stretch", { wakeAt: NOW - 10 }],
@@ -122,6 +123,14 @@ assert.strictEqual(M.monologue("other", 0, NOW, 0), false);
assert.strictEqual(M.monologue("bored", NOW - M.T.monologueCooldown + 1, NOW, 0), false);
assert.strictEqual(M.monologue("bored", NOW - M.T.monologueCooldown, NOW, 0), true);
+// Admiring a wallpaper: turned to it, then blushing, then done.
+assert.deepStrictEqual(M.pick(calm({ admireAt: NOW - 10 })), { state: "admire", frame: "watch" });
+assert.strictEqual(frame({ admireAt: NOW - M.T.admireLook }), "blush3");
+assert.strictEqual(state({ admireAt: NOW - M.T.admireLook - M.T.admireBlush }), "base");
+assert.strictEqual(M.admireAllowed(0, NOW), true);
+assert.strictEqual(M.admireAllowed(NOW - M.T.admireCooldown + 1, NOW), false);
+assert.strictEqual(M.admireAllowed(NOW - M.T.admireCooldown, NOW), true);
+
// The wallpaper list: paths, blank lines and # comments skipped.
assert.deepStrictEqual(L.parse(""), []);
assert.deepStrictEqual(L.parse("# mine\n/a.png\n\n /b.png \n#/c.png\n"), ["/a.png", "/b.png"]);