assert

Simple tests for assert

HTML

<ul class="result">
</ul>

CSS

li {
    font-family: sans-serif;
    padding: 6px;
    border-bottom: solid 1px #444;
}

li.success {
    background-color: rgba(0,255,0,0.2);
}

li.failure {
    background-color: rgba(255,0,0,0.2);
}

JavaScript

function transient(obj, key) {
    // ...  you need to implement this
}

// ... while the following should stay untouched

function addResult(className, description) {
    $("ul.result").append($("<li class='" + className+ "'>"+description+"</li>"));    
}


function assert(predicate, description) {  
    var className = predicate ? "success": "failure";
    addResult(className, description);       
}

function SomeObject() {
    this.someProp = { "name": "José Bové" }
    this.transientProp  = { "name": "Aimé Jacquet" }
}

var obj = new SomeObject();
transient(obj, "transientProp")

var obj2 = new SomeObject();
transient(obj2, "transientProp")
obj2.transientProp.age = 53;

assert(obj.someProp !== undefined,
    "someProp should stay accessible" )

assert(obj.transientProp !== undefined,
    "transientProp should stay accessible")

assert(obj.transientProp.age === undefined, 
    "transientProp should not be shared between objects")

assert(obj2.transientProp.age === 53,
    "transientProp should not be shared between objects")

assert(JSON.parse(JSON.stringify(obj)).someProp !== undefined,
    "transientProp should still be serialized")

assert(JSON.parse(JSON.stringify(obj)).transientProp === undefined, 
    "transientProp should not be serialized")