'use strict'; /*jshint asi: true, browser: true */ var test = require('tape'); +function setup() { function createEditorElem(lang) { var elem = document.createElement('div') elem.setAttribute('id', lang + '-editor') elem.setAttribute('class', 'editor') document.body.appendChild(elem) } function loadStyle() { var css = require('./stringified/style'); var head = document.getElementsByTagName('head')[0]; var style = document.createElement('style'); style.type = 'text/css'; if (style.styleSheet){ style.styleSheet.cssText = css; } else { style.appendChild(document.createTextNode(css)); } head.appendChild(style); } ['javascript', 'coffee', 'json', 'lua', 'xml'].forEach(createEditorElem); loadStyle(); require('./fixtures/javascript-editor'); require('./fixtures/coffee-editor'); require('./fixtures/json-editor'); require('./fixtures/lua-editor'); require('./fixtures/xml-editor'); }() test('error annotations provided by inlined worker', function (t) { function getError(lang) { var editor = document.getElementById(lang + '-editor'); var errors = editor.getElementsByClassName('ace_error') return { length: errors.length, line: errors[0] && errors[0].textContent } } // give editors time to initialize and workers to do the annotations var jsCount = 0 , coffeeCount = 0 , jsonCount = 0 , luaCount = 0 , xmlCount = 0; var max = 10; // give it a max of 10 seconds +function javascript() { var err = getError('javascript') if (!err.length && ++jsCount < max) return setTimeout(javascript, 1000) t.equal(err.length, 1, 'javascript editor shows one error') t.equal(err.line, '5', 'on line 5') }() +function coffee() { var err = getError('coffee') if (!err.length && ++coffeeCount < max) return setTimeout(coffee, 1000) t.equal(err.length, 1, 'coffee editor shows one error') t.equal(err.line, '5', 'on line 5') }() +function json() { var err = getError('json') if (!err.length && ++jsonCount < max) return setTimeout(json, 1000) t.equal(err.length, 1, 'json editor shows one error') t.equal(err.line, '5', 'on line 5') }() +function lua() { var err = getError('lua') if (!err.length && ++luaCount < max) return setTimeout(lua, 1000) t.equal(err.length, 1, 'lua editor shows one error') t.equal(err.line, '6', 'on line 6') t.end() }() +function xml() { var err = getError('xml') if (!err.length && ++xmlCount < max) return setTimeout(xml, 1000) t.equal(err.length, 1, 'xml editor shows one error') t.equal(err.line, '5', 'on line 5') }() })