X-Git-Url: https://git.yukkurigames.com/?p=string-lerp.git;a=blobdiff_plain;f=tests%2Fstring-lerp.js;h=5728e7f9ece4844cfea0f3a17050e6bf405b3999;hp=921e199d59b7d0b8c2a7f9cb4757559e6fc3583b;hb=245005bdfa792a76d55b0fafd2255c4c8325d28c;hpb=dd1c5bcbe8357a8bc2b83fc711ee16d0c7c8eaac diff --git a/tests/string-lerp.js b/tests/string-lerp.js index 921e199..5728e7f 100644 --- a/tests/string-lerp.js +++ b/tests/string-lerp.js @@ -1,6 +1,9 @@ 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?"; @@ -38,6 +41,22 @@ JS.Test.describe('fast lerp', function () { with (this) { 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) { @@ -79,6 +98,22 @@ JS.Test.describe('diff lerp', function () { with (this) { 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); + } + }}); }}); JS.Test.describe('numeric lerp', function () { with (this) {