bodybuilder2 / チュートリアル / Rhinoを使ってオブジェクトを再帰的に表示・検査する


[ bodybuilder2 ]

ソース

#!/usr/bin/env rhino
load('bb2lib.js');
importPackage(Packages.rubbish.bb2.asserter);
importPackage(Packages.rubbish.bb2.inspector);

asserter  = AsserterFactory.getAsserter();
inspector = InspectorFactory.getInspector();

expected =
[
  "じゅげむじゅげむ",
  99,
  {
    文字列: "ごこうのすりきれ",
    数値  : 999,
    配列  : [
      "ぱいぽぱいぽ",
      "しゅーりんがん",
      [
        "あいうえお",
        "かきくけこ"
      ].set()
    ].ary()
  }.map()
].list()

actual =
[
  "じゅげむじゅげむ",
  99,
  {
    文字列: "ごこうのすりきれ",
    数値  : 999,
    配列  : [
      "ぱいぽぱいぽ",
      "シューリンガン",
      [
        "あいうえお",
        "かきくけこ"
      ].set()
    ].ary()
  }.map()
].list()

print('# expected ############################');
inspector.inspect(expected);

print('\n# actual ##############################');
inspector.inspect(actual);

print('\n# assertion ###########################');
asserter.assertEquals(expected, actual);

結果

# expected ############################
ArrayList(3) {
  [0]=>
  String(8) "じゅげむじゅげむ"
  [1]=>
  Double "99.0"
  [2]=>
  HashMap(3) {
    ["配列"]=>
    Object[](3) {
      [0]=>
      String(6) "ぱいぽぱいぽ"
      [1]=>
      String(7) "しゅーりんがん"
      [2]=>
      LinkedHashSet(2) {
        [0]=>
        String(5) "あいうえお"
        [1]=>
        String(5) "かきくけこ"
      }
    }
    ["数値"]=>
    Double "999.0"
    ["文字列"]=>
    String(8) "ごこうのすりきれ"
  }
}

# actual ##############################
ArrayList(3) {
  [0]=>
  String(8) "じゅげむじゅげむ"
  [1]=>
  Double "99.0"
  [2]=>
  HashMap(3) {
    ["配列"]=>
    Object[](3) {
      [0]=>
      String(6) "ぱいぽぱいぽ"
      [1]=>
      String(7) "シューリンガン"
      [2]=>
      LinkedHashSet(2) {
        [0]=>
        String(5) "あいうえお"
        [1]=>
        String(5) "かきくけこ"
      }
    }
    ["数値"]=>
    Double "999.0"
    ["文字列"]=>
    String(8) "ごこうのすりきれ"
  }
}

# assertion ###########################
Exception in thread "main" junit.framework.AssertionFailedError: objects differ expected:<しゅーりんがん> but was:<シューリンガン>
ArrayList(3) {
  [2]=>
  HashMap(3) {
    ["配列"]=>
    Object[](3) {
      [1]=>
      String(7)

        at rubbish.bb2.asserter.impl.AbstractAsserter.rethrow(AbstractAsserter.java:48)
        at rubbish.bb2.asserter.impl.AbstractAsserter.rethrow(AbstractAsserter.java:31)
        at rubbish.bb2.asserter.impl.DefaultAsserter.assertEquals(DefaultAsserter.java:23)
        at rubbish.bb2.asserter.impl.ArrayAsserter.assertEquals(ArrayAsserter.java:24)
        at rubbish.bb2.asserter.impl.MapAsserter.assertEquals(MapAsserter.java:28)
        at rubbish.bb2.asserter.impl.CollectionAsserter.assertEquals(CollectionAsserter.java:29)
        at rubbish.bb2.asserter.AsserterFactory$1.assertEquals(AsserterFactory.java:30)
        at rubbish.bb2.asserter.impl.AbstractAsserter.assertEquals(AbstractAsserter.java:21)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:142)
        at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:201)
        at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:74)
        at org.mozilla.javascript.gen.c1._c0(./sample.js:52)
        at org.mozilla.javascript.gen.c1.call(./sample.js)
        at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:337)
        at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2755)
        at org.mozilla.javascript.gen.c1.call(./sample.js)
        at org.mozilla.javascript.gen.c1.exec(./sample.js)
        at org.mozilla.javascript.tools.shell.Main.evaluateScript(Main.java:477)
        at org.mozilla.javascript.tools.shell.Main.processFileSecure(Main.java:399)
        at org.mozilla.javascript.tools.shell.Main.processFile(Main.java:365)
        at org.mozilla.javascript.tools.shell.Main.processSource(Main.java:356)
        at org.mozilla.javascript.tools.shell.Main.processFiles(Main.java:153)
        at org.mozilla.javascript.tools.shell.Main$IProxy.run(Main.java:83)
        at org.mozilla.javascript.Context.call(Context.java:528)
        at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:447)
        at org.mozilla.javascript.tools.shell.Main.exec(Main.java:136)
        at org.mozilla.javascript.tools.shell.Main.main(Main.java:114)