[Nashorn] 関数の省略記法を使ったassert

投稿日: 2015/12/05 14:22:00

小さなコード片の動作確認に使えるassertです。

1. 実行するスクリプト(assertTest.js)

function assert(f) {if(!f())throw new Error(f.toSource());}
function assertEq(f,x) {var r=f();if(r!==x)throw new Error(f.toSource()+", expected=${x}, actual=${r}");}
assert(function() typeof String === "function");
try {
    assert(function() typeof java.lang.String === "object");
} catch(e) { print(e.stack); }
assert(function() typeof java.lang.String === "function");
assertEq(function() typeof String, "function");
try {
    assertEq(function() typeof java.lang.String, "object");
} catch(e) { print(e.stack); }
assertEq(function() typeof java.lang.String, "function");

2. jjsで実行する

>jjs -scripting -fullversion assertTest.js
nashorn full version 1.8.0_66-b18
Error: function() typeof java.lang.String === "object"
    at assert (assertTest.js:1)
    at <program> (assertTest.js:5)
Error: function() typeof java.lang.String, expected=object, actual=function
    at assertEq (assertTest.js:2)
    at <program> (assertTest.js:9)