Skip to content

Instantly share code, notes, and snippets.

@vvscode
Last active November 13, 2015 13:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vvscode/bb3ae6ce321f1f43bff9 to your computer and use it in GitHub Desktop.
Save vvscode/bb3ae6ce321f1f43bff9 to your computer and use it in GitHub Desktop.
UpsJS.md

*** Task #1 *** Создать функцию function sum() { /* ... */ }

var s = sum();
alert(s); // 0
alert(s(1)); // 1
alert(s(1)(2)); //3
alert(s(3)(4)(5)); // 12

Покрыть функцию тестами QUNit

Шаблон для написания тестов https://github.com/jonkemp/qunit-boilerplate

*** Task #2 ***

Создать реализацию Promise. Полностью покрывать спецификацию не нужно. Должна быть подписка на resolve / reject, chain promise, обработка исключений в обработчиках. Дополнительно реализовать .hash / .all для групповой обработки промисов. Функция для создания deferred объектов -- MPromise ( это важно -- после вы будете тестировать свой код тестами коллег )

Сигнатуры:

var p = new MPromise(function(resolve, reject){ /*...*/});
p.then(onResolve, onReject); // both a optional, return new promise object
p.catch(onReject); // call on reject/on fail at handler

Покрыть код тестами Qunit ( разнести тесты и код по разным файлам, чтобы тесты можно было подключать отдельно к любой реализации ). Код пишем по TDD:

  1. пишем тест который не проходит

  2. пишем код чтобы тест прошел

  3. улучшаем код

  4. goto п1.

Написать минимум 20 тестов

*** Task #3 ***

  1. Написать функцию sleep синхронно приостанавливающую выполнение кода. Функция принимает на вход число милисекунд для паузы. Покрыть тестами

  2. На основе sleep написать синхронную функцию обработки числа syncProcess, которая выполняется 1 секунду и выводит информацию в консоль

  3. Написать функцию асинхронной обработки массива forEachAsync(function callback, waitPrevChunk = false, chunkSize = 1). Функция должна возвращать промис с исходным массивом. Добавить функцию ко всем массивам. Покрыть функцию тестами. Проверить на обработке массива из 1000 элементов функцией syncProcess из п2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment