Flapjax observable array

HTML

<script src="http://flapjax-lang.org/download/flapjax-2.1.js"></script>
<div id="updates"></div>

JavaScript

function test(arr, p, arrLogB) {
    var err = false;

    p.push('a');
    p.push('b');
    p.push('c');
    if (!(arr[0] == 'init' && arr[1] == 'a' && arr[2] == 'b' && arr[3] == 'c')) {
        console.error("value proxying failed");
        err = true;
    }
    if (arrLogB.last[arrLogB.last.length - 1] != "update: init,a,b,c") {
        console.error("push reaction after proxy failed");
        err = true;
    }

    arr.push('d');
    if (arrLogB.last[arrLogB.last.length - 1] != "update: init,a,b,c") {
        console.error("push delayed reaction failed to delay");
        err = true;
    }

    p.push('e');
    if (arrLogB.last[arrLogB.last.length - 1] != "update: init,a,b,c,d,e") {
        console.error("push delayed reaction failed to resume");
        err = true;
    }

    p[6] = 'f';
    if (arr[arr.length - 1] != 'f') {
        console.error("set proxy failed");
        err = true;
    }
    if (arrLogB.last[arrLogB.last.length - 1] != "update: init,a,b,c,d,e,f") {
        console.error("set reaction failed");
        err = true;
    }

    arr[7] = 'g';
    arr[8] = 'h';
    if (arrLogB.last[arrLogB.last.length - 1] != "update: init,a,b,c,d,e,f") {
        console.error("set delayed reaction failed to delay");
        err = true;
    }

    p[9] = 'i';
    if (arr[arr.length - 2] != 'h' && arr[arr.length - 1] != 'i') {
        console.error("set delayed proxy failed to resume");
        err = true;
    }
    if (arrLogB.last[arrLogB.last.length - 1] != "update: init,a,b,c,d,e,f,g,h,i") {
        console.error("set delayed reaction failed to resume");
        err = true;
    }

    if (p.last != arr) {
        console.error("does not have behavioral properties");
        err = true;
    }

    var lenB = liftB(function(a) {
        return a.length;
    }, p);
    var preL = lenB.last;
    p.push('j');
    if (lenB.last != preL + 1) {
        console.error("pure lift failed to react");
        err = true;
    }

    var lenB = p.liftB(function(a) {
   ...