<html>
<import src="../resources/chai.sky" />
<import src="../resources/mocha.sky" />
<script>
describe('MutationObserver wrappers', function() {
    it('should survive GC for passing into the callback even if JS has lost references and the only remaining observations are transient.', function(done) {
        function addObserver(node, fn) {
            var observer = new MutationObserver(fn);
            observer.testProperty = true;
            observer.observe(node, {attributes:true, subtree: true});
        }

        var root = document.createElement('div');
        var child = root.appendChild(document.createElement('span'));
        addObserver(root, function(records, observer) {
            window.observer = observer;
            assert.ok(observer.testProperty);
            done();
        });

        root.removeChild(child);
        child.setAttribute('foo', 'bar');
        root = null;

        gc();
    });
});
</script>
</html>
