var JS = this.JS || require('jstest');
var m = require('../string-lerp');
+var HALF_POOS = /\uD83D\uD83D|\uDCA9\uDCA9|\uD83D$/;
+var UNUSUAL_Q = 'q\u0307\u0323';
+
JS.Test.describe('fast lerp', function () { with (this) {
var lerp = m.fastLerp;
var A = "Do you like green eggs and ham?";
assertEqual("I do not like tn eggs and ham?", lerp(A, B, 0.5));
assertEqual("I do not like them, Sam-I-am?", lerp(A, B, 0.98));
}});
+
+ it("doesn't make half a poo", function () { with (this) {
+ var poos = "\uD83D\uDCA9\uD83D\uDCA9\uD83D\uDCA9\uD83D\uDCA9";
+ assertEqual("\uD83D\uDCA9\uD83D\uDCA9", lerp("", poos, 0.5));
+ assertEqual("\uD83D\uDCA9", lerp("", poos, 0.35));
+
+ for (var i = 0; i <= 1; i += 1/256)
+ assertNot(lerp("", poos, i).match(HALF_POOS));
+ }});
+
+ it("doesn't misplace combining marks", function () { with (this) {
+ for (var i = 0; i <= 1; i += 1/256) {
+ var r = lerp("a", UNUSUAL_Q, i);
+ assert(r === "a" || r === UNUSUAL_Q);
+ }
+ }});
}});
JS.Test.describe('diff lerp', function () { with (this) {
}});
it("edits strings", function () { with (this) {
- assertEqual("Do you like green eggsSam-I-am.", lerp(A, B, 0.3));
- assertEqual("Do you like green Sam-I-am.", lerp(A, B, 0.5));
- assertEqual("do not like them, Sam-I-am.", lerp(A, B, 0.9));
+ assertEqual(A, lerp(A, B, 0.01));
+ assertEqual("I do not like treen eggs and ham?", lerp(A, B, 0.3));
+ assertEqual("I do not like them, eggs and ham?", lerp(A, B, 0.5));
+ assertEqual("I do not like them, Sam-Iham?", lerp(A, B, 0.9));
+ assertEqual(B, lerp(A, B, 0.99));
+ }});
+
+ it("doesn't make half a poo", function () { with (this) {
+ var poos = "\uD83D\uDCA9\uD83D\uDCA9\uD83D\uDCA9\uD83D\uDCA9";
+ assertEqual("\uD83D\uDCA9\uD83D\uDCA9", lerp("", poos, 0.5));
+ assertEqual("\uD83D\uDCA9", lerp("", poos, 0.35));
+
+ for (var i = 0; i <= 1; i += 1/256)
+ assertNot(lerp("", poos, i).match(HALF_POOS));
+ }});
+
+ it("doesn't misplace combining marks", function () { with (this) {
+ for (var i = 0; i <= 1; i += 1/256) {
+ var r = lerp("a", UNUSUAL_Q, i);
+ assert(r === "a" || r === UNUSUAL_Q);
+ }
}});
}});