Вчера известный вебразработчик автор библиотеки JQuery, Джон Резиг, в своем личном блоге сообщил о том, что готовится к выходу новая, третья по счету, версия теста Acid. Он выложил ссылку на предварительную версию в сеть для всеобщего ознакомления. Автор теста сообщает, что его разработка уже практически завершена.
Традиционно тест проверял парсинг HTML и CSS В 3й же версии разработчики ориентируются на тестировании DOM и JavaScript. Разберем, что же именно тестируется, особенно в отношении JavaScript:
В общем и целом, это был широкий, однако достаточно поверхностный обзор суровых, но обязательных к исполнению требований спецификации ECMAScript. Открыв свой любимый браузер, вы просто обречены найти как минимум одно из этих требований невыполненным.
Подробности автор теста обещает представить уже в ближайшие дни.
И напоследок, предварительные результаты тестирования НЕЗАКОНЧЕННОГО Acid 3 над НЕЗАКОНЧЕННЫМИ версиями наиболее популярных браузеров, которые предоставил автор. Мы проверили, все сходится! =)
Вот эталон, который должен показать браузер.
Firefox 2.x
Firefox 3.0b2
Safari 3
WebKit Nightly
Opera 9.5b1
Internet Explorer 7
Ссылки по теме:
Кросспост из webdev.lovata.com
Традиционно тест проверял парсинг HTML и CSS В 3й же версии разработчики ориентируются на тестировании DOM и JavaScript. Разберем, что же именно тестируется, особенно в отношении JavaScript:
- Элизия массивов – вещи подобно [,,] должны иметь нулевую длину, а для масива [0,,1] она должна быть равна 3.
- Методы массива – проверяется возможность добавления нескольких элементов в массив (.unshift(0, 1, 2)) и объединение его с undefined (.join(undefined).)
- Преобразования чисел — проверяется работа таких методов как .toFixed(), .toExponential() и .toPrecision(), в первую очередь, с дробными и отрицательными чилами.
- Операции со строками – метод substr() должен уметь работать с отрицательными аргументами (.substr(-7, 3)), доступ к символам строки должен осуществляться по их позиции («my string»[0]). (это часть спецификации ECMAScript4)
- Работа с датами – удостовериться, что некоторые методы возвращают NaN (например, d.setMiliseconds() без аргументов), а также что происходит обязательное смещение +1900 лет.
- Unicode символы в названиях переменных – их использование должно вызывать ошибку. Например,
eval("test.i\\u002b= 1;");
- Регулярные выражения — /[]/ должно соответствовать пустому массиву, а /[])]/ вызывать ошибку. Должны поддерживаться обратные ссылки (backreference) на несуществующие образы и отрицательные lookahed'ы — /(?!test)(test).exec(«test test»).
- Перечисления (Enumeration) – нужно убедиться, что свойства объекта правильно перечисляются, что доступны свойства с определенными именами (toString, hasOwnProperty, etc)
- Конструкторы – у пользователя должна быть возможность определять собственные конструктоы в свойстве .constructor, свойство .constructor не должно быть в перечислении, а свойство .prototype.constructor должно быть удаляемым.
- Функции – возможность вызывать функцию по имени из самой себя, прямое изменение ее имени должно быть запрещено(только используя массивы функций). (function test(){… })(); — «test» не должен быть виден в родительской области.
- Ошибки – переменные в блоке catch(){} должны в первую очередь работать с аргументами catch(), а затем уже с родительскими. Например
var e = "my name"; try { ...//некий код } catch(e) { alert(e); }
не должно выводить «my name». - Операции присваивания — s = a.length = «123»; — a.length должно возвращать 123, а не 3
- Кодировки — encodeURI() и encodeURIComponent() должны корректно работать с нулевыми байтами.
В общем и целом, это был широкий, однако достаточно поверхностный обзор суровых, но обязательных к исполнению требований спецификации ECMAScript. Открыв свой любимый браузер, вы просто обречены найти как минимум одно из этих требований невыполненным.
Подробности автор теста обещает представить уже в ближайшие дни.
И напоследок, предварительные результаты тестирования НЕЗАКОНЧЕННОГО Acid 3 над НЕЗАКОНЧЕННЫМИ версиями наиболее популярных браузеров, которые предоставил автор. Мы проверили, все сходится! =)
Вот эталон, который должен показать браузер.
Firefox 2.x
Firefox 3.0b2
Safari 3
WebKit Nightly
Opera 9.5b1
Internet Explorer 7
Ссылки по теме:
Кросспост из webdev.lovata.com