diff --git a/plunks.json b/plunks.json index 4f11e02e..838c882b 100644 --- a/plunks.json +++ b/plunks.json @@ -1 +1 @@ -[{ "_id" : { "$oid" : "54c29be6f1f6dbff33a78ffb" }, "plunkId" : "ze1QjkXQJ3YiFBiRPn5u", "webPath" : "/task/hello-alert/solution", "files" : [ { "filename" : "index.html", "content" : "\n\n
\n \n\n\n\n\n\n\n\n", "_id" : { "$oid" : "54c29be6f1f6dbff33a78ffc" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29be7f1f6dbff33a79047" }, "plunkId" : "JXt15iP3lQF2sgDr7chE", "webPath" : "/article/debugging-chrome/debugging", "files" : [ { "filename" : "pow.js", "content" : "function pow(x, n) {\n if (n == 1) {\n return x;\n }\n\n var result = x * pow(x, n-1); \n return result;\n}\n", "_id" : { "$oid" : "54c29be7f1f6dbff33a79048" } }, { "filename" : "index.html", "content" : "\n\n\n \n\n\n\n \n\n Пример для отладчика.\n\n \n\n\n\n", "_id" : { "$oid" : "54c29be7f1f6dbff33a79049" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29be8f1f6dbff33a7904a" }, "plunkId" : "Jqi6UB1eZOiAo6XROgPp", "webPath" : "/article/debugging-chrome/error", "files" : [ { "filename" : "pow.js", "content" : "function pow(x, n) {\n if (n == 1) {\n return y;\n }\n\n var result = x * pow(x, n-1); \n return result;\n}\n", "_id" : { "$oid" : "54c29be8f1f6dbff33a7904b" } }, { "filename" : "index.html", "content" : "\n\n\n \n\n\n\n \n\n Пример для отладчика.\n\n \n\n\n\n", "_id" : { "$oid" : "54c29be8f1f6dbff33a7904c" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29be8f1f6dbff33a79052" }, "plunkId" : "wj6R3aEKhvGGdIsdBeHI", "webPath" : "/task/pow-nan-spec/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29be8f1f6dbff33a79053" } }, { "content" : "describe(\"pow\", function() {\n\n describe(\"возводит x в степень n\", function() {\n\n function makeTest(x) {\n var expected = x*x*x;\n it(\"при возведении \"+x+\" в степень 3 результат: \" + expected, function() { \n assert.equal( pow(x, 3), expected);\n });\n }\n\n for(var x = 1; x <= 5; x++) {\n makeTest(x);\n }\n\n });\n\n it(\"при возведении в отрицательную степень результат NaN\", function() {\n assert( isNaN( pow(2, -1) ), \"pow(2, -1) не NaN\" );\n });\n\n it(\"при возведении в дробную степень результат NaN\", function() {\n assert( isNaN( pow(2, 1.5) ), \"pow(2, -1.5) не NaN\" );\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29be8f1f6dbff33a79054" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29be9f1f6dbff33a79055" }, "plunkId" : "UUGOyt6YjpIQzWWQl7g0", "webPath" : "/task/pow-nan-spec/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29be9f1f6dbff33a79056" } }, { "content" : "describe(\"pow\", function() {\n\n describe(\"возводит x в степень n\", function() {\n\n function makeTest(x) {\n var expected = x*x*x;\n it(\"при возведении \"+x+\" в степень 3 результат: \" + expected, function() { \n assert.equal( pow(x, 3), expected);\n });\n }\n\n for(var x = 1; x <= 5; x++) {\n makeTest(x);\n }\n\n });\n\n it(\"при возведении в отрицательную степень результат NaN\", function() {\n assert( isNaN( pow(2, -1) ), \"pow(2, -1) не NaN\" );\n });\n\n it(\"при возведении в дробную степень результат NaN\", function() {\n assert( isNaN( pow(2, 1.5) ), \"pow(2, -1.5) не NaN\" );\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29be9f1f6dbff33a79057" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29be9f1f6dbff33a79059" }, "plunkId" : "EvgZMmUqKRhkOgbwgTqX", "webPath" : "/task/pow-test-0/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29be9f1f6dbff33a7905a" } }, { "content" : "describe(\"pow\", function() {\n\n describe(\"возводит x в степень n\", function() {\n\n function makeTest(x) {\n var expected = x*x*x;\n it(\"при возведении \"+x+\" в степень 3 результат: \" + expected, function() { \n assert.equal( pow(x, 3), expected);\n });\n }\n\n for(var x = 1; x <= 5; x++) {\n makeTest(x);\n }\n\n });\n\n it(\"при возведении в отрицательную степень результат NaN\", function() {\n assert( isNaN( pow(2, -1) ), \"pow(2, -1) не NaN\" );\n });\n\n it(\"при возведении в дробную степень результат NaN\", function() {\n assert( isNaN( pow(2, 1.5) ), \"pow(2, -1.5) не NaN\" );\n });\n\n describe(\"любое число, кроме нуля, в степени 0 равно 1\", function() {\n\n function makeTest(x) {\n it(\"при возведении \" + x + \" в степень 0 результат: 1\", function() { \n assert.equal( pow(x, 0), 1);\n });\n }\n\n for(var x = -5; x <= 5; x+=2) {\n makeTest(x);\n }\n\n });\n \n it(\"ноль в нулевой степени даёт NaN\", function() {\n assert( isNaN( pow(0,0) ), \"0 в степени 0 не NaN\");\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29be9f1f6dbff33a7905b" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29beaf1f6dbff33a7905c" }, "plunkId" : "5mLcclqwzclxKKC5MKyi", "webPath" : "/task/pow-test-0/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29beaf1f6dbff33a7905d" } }, { "content" : "describe(\"pow\", function() {\n\n describe(\"возводит x в степень n\", function() {\n\n function makeTest(x) {\n var expected = x*x*x;\n it(\"при возведении \"+x+\" в степень 3 результат: \" + expected, function() { \n assert.equal( pow(x, 3), expected);\n });\n }\n\n for(var x = 1; x <= 5; x++) {\n makeTest(x);\n }\n\n });\n\n it(\"при возведении в отрицательную степень результат NaN\", function() {\n assert( isNaN( pow(2, -1) ), \"pow(2, -1) не NaN\" );\n });\n\n it(\"при возведении в дробную степень результат NaN\", function() {\n assert( isNaN( pow(2, 1.5) ), \"pow(2, -1.5) не NaN\" );\n });\n\n describe(\"любое число, кроме нуля, в степени 0 равно 1\", function() {\n\n function makeTest(x) {\n it(\"при возведении \" + x + \" в степень 0 результат: 1\", function() { \n assert.equal( pow(x, 0), 1);\n });\n }\n\n for(var x = -5; x <= 5; x+=2) {\n makeTest(x);\n }\n\n });\n \n it(\"ноль в нулевой степени даёт NaN\", function() {\n assert( isNaN( pow(0,0) ), \"0 в степени 0 не NaN\");\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29beaf1f6dbff33a7905e" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29beaf1f6dbff33a79060" }, "plunkId" : "wcxcVPoqZ2TvD0d0eMvC", "webPath" : "/article/testing/beforeafter", "files" : [ { "filename" : "test.js", "content" : "describe(\"Тест\", function() {\n\n before(function() { alert(\"Начало всех тестов\"); });\n after(function() { alert(\"Окончание всех тестов\"); });\n\n beforeEach(function() { alert(\"Вход в тест\"); });\n afterEach(function() { alert(\"Выход из теста\"); });\n\n it('тест 1', function() { alert('1'); });\n it('тест 2', function() { alert('2'); });\n\n});", "_id" : { "$oid" : "54c29beaf1f6dbff33a79061" } }, { "filename" : "index.html", "content" : "\n\n\n \n \n \n \n \n \n \n\n\n\n\n \n \n\n \n \n \n \n \n\n", "_id" : { "$oid" : "54c29beaf1f6dbff33a79062" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bebf1f6dbff33a79063" }, "plunkId" : "BRTxPBwU90IVY101AWp9", "webPath" : "/article/testing/pow-1", "files" : [ { "filename" : "test.js", "content" : "describe(\"pow\", function() {\n\n it(\"возводит в n-ю степень\", function() { \n assert.equal( pow(2, 3), 8);\n });\n\n});", "_id" : { "$oid" : "54c29bebf1f6dbff33a79064" } }, { "filename" : "index.html", "content" : "\n\n\n \n \n \n \n \n \n \n \n\n \n \n \n \n\n\n\n\n \n\n \n \n\n \n \n \n \n \n\n", "_id" : { "$oid" : "54c29bebf1f6dbff33a79065" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bebf1f6dbff33a79066" }, "plunkId" : "pZcAl1SDyOnJcpQqhnGG", "webPath" : "/article/testing/pow-2", "files" : [ { "filename" : "test.js", "content" : "describe(\"pow\", function() {\n\n it(\"при возведении 2 в 3ю степень результат 8\", function() { \n assert.equal( pow(2, 3), 8);\n });\n\n it(\"при возведении 3 в 4ю степень равен 81\", function() {\n assert.equal( pow(3, 4), 81);\n });\n\n});", "_id" : { "$oid" : "54c29bebf1f6dbff33a79067" } }, { "filename" : "index.html", "content" : "\n\n\n \n \n \n \n \n \n \n \n\n \n \n \n \n\n\n\n\n \n\n \n \n\n \n \n \n \n \n\n", "_id" : { "$oid" : "54c29bebf1f6dbff33a79068" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bebf1f6dbff33a79069" }, "plunkId" : "TfSoGJNH3nMLkcRu9kFs", "webPath" : "/article/testing/pow-3", "files" : [ { "filename" : "test.js", "content" : "describe(\"pow\", function() {\n\n function makeTest(x) {\n var expected = x*x*x;\n it(\"при возведении \"+x+\" в степень 3 результат: \" + expected, function() { \n assert.equal( pow(x, 3), expected);\n });\n }\n\n for(var x = 1; x <= 5; x++) {\n makeTest(x);\n }\n\n});", "_id" : { "$oid" : "54c29bebf1f6dbff33a7906a" } }, { "filename" : "index.html", "content" : "\n\n\n \n \n \n \n \n \n \n \n\n \n \n \n \n\n\n\n\n \n\n \n \n\n \n \n \n \n \n\n", "_id" : { "$oid" : "54c29bebf1f6dbff33a7906b" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29becf1f6dbff33a7906c" }, "plunkId" : "Mu7pOjHzI64Kib6C1Qo9", "webPath" : "/article/testing/pow-4", "files" : [ { "filename" : "test.js", "content" : "describe(\"pow\", function() {\n\n describe(\"возводит x в степень n\", function() {\n\n function makeTest(x) {\n var expected = x*x*x;\n it(\"при возведении \"+x+\" в степень 3 результат: \" + expected, function() { \n assert.equal( pow(x, 3), expected);\n });\n }\n\n for(var x = 1; x <= 5; x++) {\n makeTest(x);\n }\n\n });\n \n // ...\n \n});", "_id" : { "$oid" : "54c29becf1f6dbff33a7906d" } }, { "filename" : "index.html", "content" : "\n\n\n \n \n \n \n \n \n \n \n\n \n \n \n \n\n\n\n\n \n\n \n \n\n \n \n \n \n \n\n", "_id" : { "$oid" : "54c29becf1f6dbff33a7906e" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29becf1f6dbff33a7906f" }, "plunkId" : "4rpPTXSp1gkKSr15aRcP", "webPath" : "/article/testing/pow-full", "files" : [ { "filename" : "test.js", "content" : "describe(\"pow\", function() {\n\n describe(\"возводит x в степень n\", function() {\n\n function makeTest(x) {\n var expected = x*x*x;\n it(\"при возведении \"+x+\" в степень 3 результат: \" + expected, function() { \n assert.equal( pow(x, 3), expected);\n });\n }\n\n for(var x = 1; x <= 5; x++) {\n makeTest(x);\n }\n\n });\n\n it(\"при возведении в отрицательную степень результат NaN\", function() {\n assert( isNaN( pow(2, -1) ), \"pow(2, -1) не NaN\" );\n });\n\n it(\"при возведении в дробную степень результат NaN\", function() {\n assert( isNaN( pow(2, 1.5) ), \"pow(2, -1.5) не NaN\" );\n });\n\n describe(\"любое число, кроме нуля, в степени 0 равно 1\", function() {\n\n function makeTest(x) {\n it(\"при возведении \" + x + \" в степень 0 результат: 1\", function() { \n assert.equal( pow(x, 0), 1);\n });\n }\n\n for(var x = -5; x <= 5; x+=2) {\n makeTest(x);\n }\n\n });\n \n it(\"ноль в нулевой степени даёт NaN\", function() {\n assert( isNaN( pow(0,0) ), \"0 в степени 0 не NaN\");\n });\n\n});\n", "_id" : { "$oid" : "54c29becf1f6dbff33a79070" } }, { "filename" : "index.html", "content" : "\n\n\n \n \n \n \n \n \n \n \n\n \n \n \n \n\n\n\n\n \n\n \n \n\n \n \n \n \n \n\n", "_id" : { "$oid" : "54c29becf1f6dbff33a79071" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29becf1f6dbff33a79072" }, "plunkId" : "DIYCWcygQGYSedglXtaw", "webPath" : "/article/testing/pow-min", "files" : [ { "filename" : "test.js", "content" : "describe(\"pow\", function() {\n\n it(\"возводит в n-ю степень\", function() { \n assert.equal( pow(2, 3), 8);\n });\n\n});", "_id" : { "$oid" : "54c29becf1f6dbff33a79073" } }, { "filename" : "index.html", "content" : "\n\n\n \n \n \n \n \n \n \n \n\n \n \n \n \n\n\n\n\n \n\n \n \n\n \n \n \n \n \n\n", "_id" : { "$oid" : "54c29becf1f6dbff33a79074" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bedf1f6dbff33a79075" }, "plunkId" : "Kbu6DKN4lIlyQRlT3iPb", "webPath" : "/article/testing/pow-nan-assert", "files" : [ { "filename" : "test.js", "content" : "describe(\"pow\", function() {\n\n describe(\"возводит x в степень n\", function() {\n\n function makeTest(x) {\n var expected = x*x*x;\n it(\"при возведении \"+x+\" в степень 3 результат: \" + expected, function() { \n assert.equal( pow(x, 3), expected);\n });\n }\n\n for(var x = 1; x <= 5; x++) {\n makeTest(x);\n }\n\n });\n \n it(\"при возведении в отрицательную степень результат NaN\", function() {\n assert( isNaN( pow(2, -1) ), \"pow(2, -1) не NaN\" );\n });\n\n it(\"при возведении в дробную степень результат NaN\", function() {\n assert( isNaN( pow(2, 1.5) ), \"pow(2, -1.5) не NaN\" );\n });\n\n});\n", "_id" : { "$oid" : "54c29bedf1f6dbff33a79076" } }, { "filename" : "index.html", "content" : "\n\n\n \n \n \n \n \n \n \n \n\n \n \n \n \n\n\n\n\n \n\n \n \n\n \n \n \n \n \n\n", "_id" : { "$oid" : "54c29bedf1f6dbff33a79077" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bedf1f6dbff33a79078" }, "plunkId" : "CgiMHkmIqPytKY6vYxJC", "webPath" : "/article/testing/pow-nan", "files" : [ { "filename" : "test.js", "content" : "describe(\"pow\", function() {\n\n describe(\"возводит x в степень n\", function() {\n\n function makeTest(x) {\n var expected = x*x*x;\n it(\"при возведении \"+x+\" в степень 3 результат: \" + expected, function() { \n assert.equal( pow(x, 3), expected);\n });\n }\n\n for(var x = 1; x <= 5; x++) {\n makeTest(x);\n }\n\n });\n \n it(\"при возведении в отрицательную степень результат NaN\", function() {\n assert( isNaN( pow(2, -1) ) );\n });\n\n it(\"при возведении в дробную степень результат NaN\", function() {\n assert( isNaN( pow(2, 1.5) ) );\n });\n\n});\n", "_id" : { "$oid" : "54c29bedf1f6dbff33a79079" } }, { "filename" : "index.html", "content" : "\n\n\n \n \n \n \n \n \n \n \n\n \n \n \n \n\n\n\n\n \n\n \n \n\n \n \n \n \n \n\n", "_id" : { "$oid" : "54c29bedf1f6dbff33a7907a" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bedf1f6dbff33a79085" }, "plunkId" : "fGUz2IW103pRPABKlynw", "webPath" : "/task/get-week-day/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bedf1f6dbff33a79086" } }, { "content" : "describe(\"getWeekDay\", function() {\n it(\"3 января 2014 - пятница\", function() {\n assert.equal( getWeekDay(new Date(2014, 0, 3)), 'пт');\n });\n\n it(\"4 января 2014 - суббота\", function() {\n assert.equal( getWeekDay(new Date(2014, 0, 4)), 'сб');\n });\n\n it(\"5 января 2014 - воскресенье\", function() {\n assert.equal( getWeekDay(new Date(2014, 0, 5)), 'вс');\n });\n\n it(\"6 января 2014 - понедельник\", function() {\n assert.equal( getWeekDay(new Date(2014, 0, 6)), 'пн');\n });\n\n it(\"7 января 2014 - вторник\", function() {\n assert.equal( getWeekDay(new Date(2014, 0, 7)), 'вт');\n });\n\n it(\"8 января 2014 - среда\", function() {\n assert.equal( getWeekDay(new Date(2014, 0, 8)), 'ср');\n });\n\n it(\"9 января 2014 - четверг\", function() {\n assert.equal( getWeekDay(new Date(2014, 0, 9)), 'чт');\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bedf1f6dbff33a79087" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29beef1f6dbff33a79088" }, "plunkId" : "gxiHwbLOdMNvxIoM30B3", "webPath" : "/task/get-week-day/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29beef1f6dbff33a79089" } }, { "content" : "describe(\"getWeekDay\", function() {\n it(\"3 января 2014 - пятница\", function() {\n assert.equal( getWeekDay(new Date(2014, 0, 3)), 'пт');\n });\n\n it(\"4 января 2014 - суббота\", function() {\n assert.equal( getWeekDay(new Date(2014, 0, 4)), 'сб');\n });\n\n it(\"5 января 2014 - воскресенье\", function() {\n assert.equal( getWeekDay(new Date(2014, 0, 5)), 'вс');\n });\n\n it(\"6 января 2014 - понедельник\", function() {\n assert.equal( getWeekDay(new Date(2014, 0, 6)), 'пн');\n });\n\n it(\"7 января 2014 - вторник\", function() {\n assert.equal( getWeekDay(new Date(2014, 0, 7)), 'вт');\n });\n\n it(\"8 января 2014 - среда\", function() {\n assert.equal( getWeekDay(new Date(2014, 0, 8)), 'ср');\n });\n\n it(\"9 января 2014 - четверг\", function() {\n assert.equal( getWeekDay(new Date(2014, 0, 9)), 'чт');\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29beef1f6dbff33a7908a" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29beef1f6dbff33a7908c" }, "plunkId" : "dNXQF6cXh9YcjfFO9wg8", "webPath" : "/task/weekday/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29beef1f6dbff33a7908d" } }, { "content" : "describe(\"getLocalDay возвращает день недели\", function() {\n it(\"3 января 2014 - пятница\", function() {\n assert.equal( getLocalDay(new Date(2014, 0, 3)), 5);\n });\n\n it(\"4 января 2014 - суббота\", function() {\n assert.equal( getLocalDay(new Date(2014, 0, 4)), 6);\n });\n\n it(\"5 января 2014 - воскресенье\", function() {\n assert.equal( getLocalDay(new Date(2014, 0, 5)), 7);\n });\n\n it(\"6 января 2014 - понедельник\", function() {\n assert.equal( getLocalDay(new Date(2014, 0, 6)), 1);\n });\n\n it(\"7 января 2014 - вторник\", function() {\n assert.equal( getLocalDay(new Date(2014, 0, 7)), 2);\n });\n\n it(\"8 января 2014 - среда\", function() {\n assert.equal( getLocalDay(new Date(2014, 0, 8)), 3);\n });\n\n it(\"9 января 2014 - четверг\", function() {\n assert.equal( getLocalDay(new Date(2014, 0, 9)), 4);\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29beef1f6dbff33a7908e" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29beef1f6dbff33a7908f" }, "plunkId" : "l0iIrVdLglsJXbSrs0O5", "webPath" : "/task/weekday/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29beef1f6dbff33a79090" } }, { "content" : "describe(\"getLocalDay возвращает день недели\", function() {\n it(\"3 января 2014 - пятница\", function() {\n assert.equal( getLocalDay(new Date(2014, 0, 3)), 5);\n });\n\n it(\"4 января 2014 - суббота\", function() {\n assert.equal( getLocalDay(new Date(2014, 0, 4)), 6);\n });\n\n it(\"5 января 2014 - воскресенье\", function() {\n assert.equal( getLocalDay(new Date(2014, 0, 5)), 7);\n });\n\n it(\"6 января 2014 - понедельник\", function() {\n assert.equal( getLocalDay(new Date(2014, 0, 6)), 1);\n });\n\n it(\"7 января 2014 - вторник\", function() {\n assert.equal( getLocalDay(new Date(2014, 0, 7)), 2);\n });\n\n it(\"8 января 2014 - среда\", function() {\n assert.equal( getLocalDay(new Date(2014, 0, 8)), 3);\n });\n\n it(\"9 января 2014 - четверг\", function() {\n assert.equal( getLocalDay(new Date(2014, 0, 9)), 4);\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29beef1f6dbff33a79091" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29beef1f6dbff33a79093" }, "plunkId" : "DbaSZgtEYslVIFAqaQMp", "webPath" : "/task/get-date-ago/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29beef1f6dbff33a79094" } }, { "content" : "describe(\"getDateAgo\", function() {\n\n it(\"1 день до 02.01.2015 -> число 1\", function() {\n assert.equal( getDateAgo(new Date(2015, 0, 2), 1), 1 );\n });\n\n\n it(\"2 день до 02.01.2015 -> число 31\", function() {\n assert.equal( getDateAgo(new Date(2015, 0, 2), 2), 31 );\n });\n\n it(\"100 дней от 02.01.2015 -> число 24\", function() {\n assert.equal( getDateAgo(new Date(2015, 0, 2), 100), 24 );\n });\n\n it(\"365 дней от 02.01.2015 -> число 2\", function() {\n assert.equal( getDateAgo(new Date(2015, 0, 2), 365), 2 );\n });\n\n it(\"не меняет переданный объект Date\", function() {\n var date = new Date(2015, 0, 2);\n var dateCopy = new Date(date);\n getDateAgo(dateCopy, 100);\n assert.equal(date.getTime(), dateCopy.getTime());\n });\n \n});", "filename" : "test.js", "_id" : { "$oid" : "54c29beef1f6dbff33a79095" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29beff1f6dbff33a79096" }, "plunkId" : "kbMcueSHQAOIq5XXqX8L", "webPath" : "/task/get-date-ago/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29beff1f6dbff33a79097" } }, { "content" : "describe(\"getDateAgo\", function() {\n\n it(\"1 день до 02.01.2015 -> число 1\", function() {\n assert.equal( getDateAgo(new Date(2015, 0, 2), 1), 1 );\n });\n\n\n it(\"2 день до 02.01.2015 -> число 31\", function() {\n assert.equal( getDateAgo(new Date(2015, 0, 2), 2), 31 );\n });\n\n it(\"100 дней от 02.01.2015 -> число 24\", function() {\n assert.equal( getDateAgo(new Date(2015, 0, 2), 100), 24 );\n });\n\n it(\"365 дней от 02.01.2015 -> число 2\", function() {\n assert.equal( getDateAgo(new Date(2015, 0, 2), 365), 2 );\n });\n\n it(\"не меняет переданный объект Date\", function() {\n var date = new Date(2015, 0, 2);\n var dateCopy = new Date(date);\n getDateAgo(dateCopy, 100);\n assert.equal(date.getTime(), dateCopy.getTime());\n });\n \n});", "filename" : "test.js", "_id" : { "$oid" : "54c29beff1f6dbff33a79098" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29beff1f6dbff33a7909a" }, "plunkId" : "TThEf1Cq5Jw7aIxGEokl", "webPath" : "/task/last-day-of-month/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29beff1f6dbff33a7909b" } }, { "content" : "describe(\"getLastDayOfMonth\", function() {\n it(\"последний день 01.01.2012 - 31\", function() {\n assert.equal( getLastDayOfMonth(2012, 0), 31);\n });\n\n it(\"последний день 01.02.2012 - 29 (високосный год)\", function() {\n assert.equal( getLastDayOfMonth(2012, 1), 29);\n });\n\n it(\"последний день 01.02.2013 - 28\", function() {\n assert.equal( getLastDayOfMonth(2013, 1), 28);\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29beff1f6dbff33a7909c" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bf0f1f6dbff33a7909d" }, "plunkId" : "nBODZdcm1zySLsHLr5y9", "webPath" : "/task/last-day-of-month/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bf0f1f6dbff33a7909e" } }, { "content" : "describe(\"getLastDayOfMonth\", function() {\n it(\"последний день 01.01.2012 - 31\", function() {\n assert.equal( getLastDayOfMonth(2012, 0), 31);\n });\n\n it(\"последний день 01.02.2012 - 29 (високосный год)\", function() {\n assert.equal( getLastDayOfMonth(2012, 1), 29);\n });\n\n it(\"последний день 01.02.2013 - 28\", function() {\n assert.equal( getLastDayOfMonth(2013, 1), 28);\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bf0f1f6dbff33a7909f" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bf0f1f6dbff33a790a3" }, "plunkId" : "i4qMM0BHacTJaZOvsZEp", "webPath" : "/task/format-date-ddmmyy/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bf0f1f6dbff33a790a4" } }, { "content" : "describe(\"formatDate\", function() {\n it(\"правильно форматирует дату 30.01.14\", function() {\n assert.equal( formatDate(new Date(2014, 0, 30)), '30.01.14');\n });\n\n it(\"правильно форматирует дату 01.01.01\", function() {\n assert.equal( formatDate(new Date(2001, 0, 1)), '01.01.01');\n });\n\n it(\"правильно форматирует дату 01.01.00\", function() {\n assert.equal( formatDate(new Date(2000, 0, 1)), '01.01.00');\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bf0f1f6dbff33a790a5" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bf1f1f6dbff33a790a6" }, "plunkId" : "56u7g6fp0lt2wJUmtExn", "webPath" : "/task/format-date-ddmmyy/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bf1f1f6dbff33a790a7" } }, { "content" : "describe(\"formatDate\", function() {\n it(\"правильно форматирует дату 30.01.14\", function() {\n assert.equal( formatDate(new Date(2014, 0, 30)), '30.01.14');\n });\n\n it(\"правильно форматирует дату 01.01.01\", function() {\n assert.equal( formatDate(new Date(2001, 0, 1)), '01.01.01');\n });\n\n it(\"правильно форматирует дату 01.01.00\", function() {\n assert.equal( formatDate(new Date(2000, 0, 1)), '01.01.00');\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bf1f1f6dbff33a790a8" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bf2f1f6dbff33a790aa" }, "plunkId" : "mhJxWaIODMqOWXMYa6Bw", "webPath" : "/task/format-date-relative/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bf2f1f6dbff33a790ab" } }, { "content" : "describe(\"formatDate\", function() {\n it(\"выводит дату 1мс назад как \\\"только что\\\"\", function() {\n assert.equal( formatDate( new Date(new Date - 1) ), 'только что' );\n });\n\n it('выводит дату \"30 сек назад\"', function() {\n assert.equal( formatDate( new Date( new Date - 30*1000) ), \"30 сек. назад\" );\n });\n\n it('выводит дату \"5 мин назад\"', function() {\n assert.equal( formatDate( new Date( new Date- 5*60*1000) ), \"5 мин. назад\");\n });\n\n it(\"выводит старую дату в формате дд.мм.гг чч:мм\", function() {\n assert.equal( formatDate( new Date(2014, 2, 1, 11, 22, 33) ), \"01.03.14 11:22\" ); \n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bf2f1f6dbff33a790ac" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bf2f1f6dbff33a790ad" }, "plunkId" : "pX78csZkjHN1hmaT5LVw", "webPath" : "/task/format-date-relative/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bf2f1f6dbff33a790ae" } }, { "content" : "describe(\"formatDate\", function() {\n it(\"выводит дату 1мс назад как \\\"только что\\\"\", function() {\n assert.equal( formatDate( new Date(new Date - 1) ), 'только что' );\n });\n\n it('выводит дату \"30 сек назад\"', function() {\n assert.equal( formatDate( new Date( new Date - 30*1000) ), \"30 сек. назад\" );\n });\n\n it('выводит дату \"5 мин назад\"', function() {\n assert.equal( formatDate( new Date( new Date- 5*60*1000) ), \"5 мин. назад\");\n });\n\n it(\"выводит старую дату в формате дд.мм.гг чч:мм\", function() {\n assert.equal( formatDate( new Date(2014, 2, 1, 11, 22, 33) ), \"01.03.14 11:22\" ); \n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bf2f1f6dbff33a790af" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bf3f1f6dbff33a790b3" }, "plunkId" : "ZwGwBJfDpVDHd6McavjZ", "webPath" : "/task/format-date-polymorphic/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bf3f1f6dbff33a790b4" } }, { "content" : "describe(\"formatDate\", function() {\n it(\"читает дату вида гггг-мм-дд из строки\", function() {\n assert.equal( formatDate( '2011-10-02' ), \"02.10.11\" );\n });\n\n it(\"читает дату из числа 1234567890 (миллисекунды)\", function() {\n assert.equal( formatDate( 1234567890 ), \"14.02.09\" );\n });\n\n it(\"читает дату из массива вида [гггг, м, д]\", function() {\n assert.equal( formatDate( [2014,0,1] ), \"01.01.14\" );\n });\n\n it(\"читает дату из объекта Date\", function() {\n assert.equal( formatDate( new Date(2014,0,1) ), \"01.01.14\" );\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bf3f1f6dbff33a790b5" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bf4f1f6dbff33a790b6" }, "plunkId" : "T6VXXKvb2lzRhvLGx96Q", "webPath" : "/task/format-date-polymorphic/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bf4f1f6dbff33a790b7" } }, { "content" : "describe(\"formatDate\", function() {\n it(\"читает дату вида гггг-мм-дд из строки\", function() {\n assert.equal( formatDate( '2011-10-02' ), \"02.10.11\" );\n });\n\n it(\"читает дату из числа 1234567890 (миллисекунды)\", function() {\n assert.equal( formatDate( 1234567890 ), \"14.02.09\" );\n });\n\n it(\"читает дату из массива вида [гггг, м, д]\", function() {\n assert.equal( formatDate( [2014,0,1] ), \"01.01.14\" );\n });\n\n it(\"читает дату из объекта Date\", function() {\n assert.equal( formatDate( new Date(2014,0,1) ), \"01.01.14\" );\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bf4f1f6dbff33a790b8" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bf5f1f6dbff33a790bf" }, "plunkId" : "dI0e24Z26dEsPb76smZm", "webPath" : "/task/get-decimal/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bf5f1f6dbff33a790c0" } }, { "content" : "describe(\"getDecimal\", function() {\n it(\"возвращает дробную часть 1.2 как 0.2\", function() {\n assert.equal( getDecimal(1.2), 0.2 );\n });\n\n it(\"возвращает дробную часть 1.3 как 0.3\", function() {\n assert.equal( getDecimal(1.3), 0.3 );\n });\n\n it(\"возвращает дробную часть 12.345 как 0.345\", function() {\n assert.equal( getDecimal(12.345), 0.345 );\n });\n\n it(\"возвращает дробную часть -1.2 как 0.2\", function() {\n assert.equal( getDecimal(-1.2), 0.2 );\n });\n\n it(\"возвращает дробную часть 5 как 0\", function() {\n assert.equal( getDecimal(5), 0 );\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bf5f1f6dbff33a790c1" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bf7f1f6dbff33a790c2" }, "plunkId" : "OEHVDOsrktb0iNqZbAl6", "webPath" : "/task/get-decimal/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bf7f1f6dbff33a790c3" } }, { "content" : "describe(\"getDecimal\", function() {\n it(\"возвращает дробную часть 1.2 как 0.2\", function() {\n assert.equal( getDecimal(1.2), 0.2 );\n });\n\n it(\"возвращает дробную часть 1.3 как 0.3\", function() {\n assert.equal( getDecimal(1.3), 0.3 );\n });\n\n it(\"возвращает дробную часть 12.345 как 0.345\", function() {\n assert.equal( getDecimal(12.345), 0.345 );\n });\n\n it(\"возвращает дробную часть -1.2 как 0.2\", function() {\n assert.equal( getDecimal(-1.2), 0.2 );\n });\n\n it(\"возвращает дробную часть 5 как 0\", function() {\n assert.equal( getDecimal(5), 0 );\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bf7f1f6dbff33a790c4" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bf7f1f6dbff33a790cb" }, "plunkId" : "XR2NCjSLjmoL6mXMIfK0", "webPath" : "/task/ucfirst/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bf7f1f6dbff33a790cc" } }, { "content" : "describe(\"ucFirst\", function() {\n it('делает первый символ заглавным', function() {\n assert.strictEqual( ucFirst(\"вася\"), \"Вася\" );\n });\n \n it('для пустой строки возвращает пустую строку', function() {\n assert.strictEqual( ucFirst(\"\"), \"\" );\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bf7f1f6dbff33a790cd" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bf8f1f6dbff33a790ce" }, "plunkId" : "yYIdS2ssYEi24EWAUtVg", "webPath" : "/task/ucfirst/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bf8f1f6dbff33a790cf" } }, { "content" : "describe(\"ucFirst\", function() {\n it('делает первый символ заглавным', function() {\n assert.strictEqual( ucFirst(\"вася\"), \"Вася\" );\n });\n \n it('для пустой строки возвращает пустую строку', function() {\n assert.strictEqual( ucFirst(\"\"), \"\" );\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bf8f1f6dbff33a790d0" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bf8f1f6dbff33a790d2" }, "plunkId" : "IMUHBftr2fHGwdjXt5xo", "webPath" : "/task/check-spam/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bf8f1f6dbff33a790d3" } }, { "content" : "describe(\"checkSpam\", function() {\n it('считает спамом \"buy ViAgRA now\"', function() {\n assert.isTrue( checkSpam('buy ViAgRA now') );\n });\n\n it('считает спамом \"free xxxxx\"', function() {\n assert.isTrue( checkSpam('free xxxxx') );\n });\n\n it('не считает спамом \"innocent rabbit\"', function() {\n assert.isFalse( checkSpam('innocent rabbit') );\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bf8f1f6dbff33a790d4" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bfaf1f6dbff33a790d5" }, "plunkId" : "bi8jqIL2b9hb0labsHoE", "webPath" : "/task/check-spam/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bfaf1f6dbff33a790d6" } }, { "content" : "describe(\"checkSpam\", function() {\n it('считает спамом \"buy ViAgRA now\"', function() {\n assert.isTrue( checkSpam('buy ViAgRA now') );\n });\n\n it('считает спамом \"free xxxxx\"', function() {\n assert.isTrue( checkSpam('free xxxxx') );\n });\n\n it('не считает спамом \"innocent rabbit\"', function() {\n assert.isFalse( checkSpam('innocent rabbit') );\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bfaf1f6dbff33a790d7" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bfaf1f6dbff33a790d9" }, "plunkId" : "M91IJNY971ZyCR6R1ywj", "webPath" : "/task/truncate/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bfaf1f6dbff33a790da" } }, { "content" : "describe(\"truncate\", function() {\n it(\"обрезает строку до указанной длины (включая троеточие)\", function() {\n assert.equal( \n truncate(\"Вот, что мне хотелось бы сказать на эту тему:\", 20),\n \"Вот, что мне хоте...\"\n );\n });\n\n it(\"не меняет короткие строки\", function() {\n assert.equal( \n truncate(\"Всем привет!\", 20), \n \"Всем привет!\"\n );\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bfaf1f6dbff33a790db" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bfbf1f6dbff33a790dc" }, "plunkId" : "mAhamvQCfrejkLGtpJ1f", "webPath" : "/task/truncate/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bfbf1f6dbff33a790dd" } }, { "content" : "describe(\"truncate\", function() {\n it(\"обрезает строку до указанной длины (включая троеточие)\", function() {\n assert.equal( \n truncate(\"Вот, что мне хотелось бы сказать на эту тему:\", 20),\n \"Вот, что мне хоте...\"\n );\n });\n\n it(\"не меняет короткие строки\", function() {\n assert.equal( \n truncate(\"Всем привет!\", 20), \n \"Всем привет!\"\n );\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bfbf1f6dbff33a790de" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bfbf1f6dbff33a790e4" }, "plunkId" : "Kq5IjJHxWmiStR335j1a", "webPath" : "/task/is-empty/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bfbf1f6dbff33a790e5" } }, { "content" : "describe(\"isEmpty\", function() {\n it(\"если объект пустой - возвращает true\", function() {\n assert.isTrue( isEmpty({}) );\n });\n\n it(\"если у объекта есть любое свойство, не важно какое - возвращает false\", function() {\n assert.isFalse( isEmpty({ anything: false }) );\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bfbf1f6dbff33a790e6" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bfcf1f6dbff33a790e7" }, "plunkId" : "IULv5iIrhtyVl2VHcSLT", "webPath" : "/task/is-empty/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bfcf1f6dbff33a790e8" } }, { "content" : "describe(\"isEmpty\", function() {\n it(\"если объект пустой - возвращает true\", function() {\n assert.isTrue( isEmpty({}) );\n });\n\n it(\"если у объекта есть любое свойство, не важно какое - возвращает false\", function() {\n assert.isFalse( isEmpty({ anything: false }) );\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bfcf1f6dbff33a790e9" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bfcf1f6dbff33a790ed" }, "plunkId" : "aiU8nDF7DpRFMjgFT8Wl", "webPath" : "/task/multiply-numeric/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bfcf1f6dbff33a790ee" } }, { "content" : "describe(\"multiplyNumeric\", function() {\n it(\"умножает численные свойства на 2\", function() {\n var menu = {\n width: 200,\n height: \"300\",\n title: \"Моё меню\"\n };\n multiplyNumeric(menu);\n assert.equal( menu.width, 400 );\n assert.equal( menu.height, 600 );\n assert.equal( menu.title, \"Моё меню\" );\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bfcf1f6dbff33a790ef" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bfcf1f6dbff33a790f0" }, "plunkId" : "fTVHgjHG6dSSfQ5sGlgu", "webPath" : "/task/multiply-numeric/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bfcf1f6dbff33a790f1" } }, { "content" : "describe(\"multiplyNumeric\", function() {\n it(\"умножает численные свойства на 2\", function() {\n var menu = {\n width: 200,\n height: \"300\",\n title: \"Моё меню\"\n };\n multiplyNumeric(menu);\n assert.equal( menu.width, 400 );\n assert.equal( menu.height, 600 );\n assert.equal( menu.title, \"Моё меню\" );\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bfcf1f6dbff33a790f2" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29bfff1f6dbff33a790f8" }, "plunkId" : "TrDAjJbGpXmV3EoDwehV", "webPath" : "/task/maximal-subarray/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29bfff1f6dbff33a790f9" } }, { "content" : "describe(\"getMaxSubSum\", function() {\n it(\"максимальная подсумма [1, 2, 3] равна 6\", function() {\n assert.equal( getMaxSubSum([1, 2, 3]), 6);\n });\n\n it(\"максимальная подсумма [-1, 2, 3, -9] равна 5\", function() {\n assert.equal( getMaxSubSum([-1, 2, 3, -9]), 5);\n });\n\n it(\"максимальная подсумма [-1, 2, 3, -9, 11] равна 11\", function() {\n assert.equal( getMaxSubSum([-1, 2, 3, -9, 11]), 11);\n });\n\n it(\"максимальная подсумма [-2, -1, 1, 2] равна 3\", function() {\n assert.equal( getMaxSubSum([-2, -1, 1, 2]), 3);\n });\n\n it(\"максимальная подсумма [100, -9, 2, -3, 5] равна 100\", function() {\n assert.equal( getMaxSubSum([100, -9, 2, -3, 5]), 100);\n });\n\n it(\"максимальная подсумма [] равна 0\", function() {\n assert.equal( getMaxSubSum([]), 0);\n });\n\n it(\"максимальная подсумма [-1] равна 0\", function() {\n assert.equal( getMaxSubSum([-1]), 0);\n });\n\n it(\"максимальная подсумма [-1, -2] равна 0\", function() {\n assert.equal( getMaxSubSum([-1, -2]), 0);\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29bfff1f6dbff33a790fa" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c00f1f6dbff33a790fb" }, "plunkId" : "fD9iQ7r9E8wkgqnPnGE5", "webPath" : "/task/maximal-subarray/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c00f1f6dbff33a790fc" } }, { "content" : "describe(\"getMaxSubSum\", function() {\n it(\"максимальная подсумма [1, 2, 3] равна 6\", function() {\n assert.equal( getMaxSubSum([1, 2, 3]), 6);\n });\n\n it(\"максимальная подсумма [-1, 2, 3, -9] равна 5\", function() {\n assert.equal( getMaxSubSum([-1, 2, 3, -9]), 5);\n });\n\n it(\"максимальная подсумма [-1, 2, 3, -9, 11] равна 11\", function() {\n assert.equal( getMaxSubSum([-1, 2, 3, -9, 11]), 11);\n });\n\n it(\"максимальная подсумма [-2, -1, 1, 2] равна 3\", function() {\n assert.equal( getMaxSubSum([-2, -1, 1, 2]), 3);\n });\n\n it(\"максимальная подсумма [100, -9, 2, -3, 5] равна 100\", function() {\n assert.equal( getMaxSubSum([100, -9, 2, -3, 5]), 100);\n });\n\n it(\"максимальная подсумма [] равна 0\", function() {\n assert.equal( getMaxSubSum([]), 0);\n });\n\n it(\"максимальная подсумма [-1] равна 0\", function() {\n assert.equal( getMaxSubSum([-1]), 0);\n });\n\n it(\"максимальная подсумма [-1, -2] равна 0\", function() {\n assert.equal( getMaxSubSum([-1, -2]), 0);\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c00f1f6dbff33a790fd" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c01f1f6dbff33a79104" }, "plunkId" : "v29865qdBfc8KtQlncDT", "webPath" : "/task/array-find/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c01f1f6dbff33a79105" } }, { "content" : "describe(\"find\", function() {\n\n describe(\"возвращает позицию, на которой найден элемент\", function() {\n it(\"в массиве [1,2,3] находит 1 на позиции 0\", function() {\n assert.equal( find([1, 2, 3], 1), 0);\n });\n it(\"в массиве [1,2,3] находит 2 на позиции 1\", function() {\n assert.equal( find([1, 2, 3], 2), 1);\n }); \n it(\"в массиве [1,2,3] находит 3 на позиции 2\", function() {\n assert.equal( find([1, 2, 3], 3), 2);\n });\n });\n\n it(\"если элемент не найден, возвращает -1\", function() {\n assert.equal( find([1,2,3], 0), -1);\n });\n\n it(\"отличает false или null от 0\", function() {\n assert.equal( find([false, true, null], 0), -1);\n });\n\n it(\"отличает 1 от true\", function() {\n assert.equal( find([1, 2, 3], true), -1);\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c01f1f6dbff33a79106" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c02f1f6dbff33a79107" }, "plunkId" : "leMOvSmQpd0IOfknllaN", "webPath" : "/task/array-find/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c02f1f6dbff33a79108" } }, { "content" : "describe(\"find\", function() {\n\n describe(\"возвращает позицию, на которой найден элемент\", function() {\n it(\"в массиве [1,2,3] находит 1 на позиции 0\", function() {\n assert.equal( find([1, 2, 3], 1), 0);\n });\n it(\"в массиве [1,2,3] находит 2 на позиции 1\", function() {\n assert.equal( find([1, 2, 3], 2), 1);\n }); \n it(\"в массиве [1,2,3] находит 3 на позиции 2\", function() {\n assert.equal( find([1, 2, 3], 3), 2);\n });\n });\n\n it(\"если элемент не найден, возвращает -1\", function() {\n assert.equal( find([1,2,3], 0), -1);\n });\n\n it(\"отличает false или null от 0\", function() {\n assert.equal( find([false, true, null], 0), -1);\n });\n\n it(\"отличает 1 от true\", function() {\n assert.equal( find([1, 2, 3], true), -1);\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c02f1f6dbff33a79109" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c02f1f6dbff33a7910b" }, "plunkId" : "vQjOTBw73UEjeMnz8wLU", "webPath" : "/task/filter-range/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c02f1f6dbff33a7910c" } }, { "content" : "describe(\"filterRange\", function() {\n it(\"не меняет исходный массив\", function() {\n var arr = [5, 4, 3, 8, 0];\n \n filterRange(arr, 0, 10);\n assert.deepEqual(arr, [5,4,3,8,0]);\n });\n\n it(\"оставляет только значения указанного интервала\", function() {\n var arr = [5, 4, 3, 8, 0];\n \n var result = filterRange(arr, 3, 5);\n assert.deepEqual(result, [5,4,3]);\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c02f1f6dbff33a7910d" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c02f1f6dbff33a7910e" }, "plunkId" : "R03DLuj3IfwBMzTdlvAh", "webPath" : "/task/filter-range/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c02f1f6dbff33a7910f" } }, { "content" : "describe(\"filterRange\", function() {\n it(\"не меняет исходный массив\", function() {\n var arr = [5, 4, 3, 8, 0];\n \n filterRange(arr, 0, 10);\n assert.deepEqual(arr, [5,4,3,8,0]);\n });\n\n it(\"оставляет только значения указанного интервала\", function() {\n var arr = [5, 4, 3, 8, 0];\n \n var result = filterRange(arr, 3, 5);\n assert.deepEqual(result, [5,4,3]);\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c02f1f6dbff33a79110" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c03f1f6dbff33a79114" }, "plunkId" : "3e59YzIjNYJsjj4glDTC", "webPath" : "/task/add-class/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c03f1f6dbff33a79115" } }, { "content" : "describe(\"addClass\", function() {\n\n it(\"добавляет класс, которого нет\", function() {\n var obj = { className: 'open menu' };\n addClass(obj, 'new');\n assert.deepEqual(obj, {\n className: 'open menu new'\n });\n });\n\n it(\"не добавляет класс, который уже есть\", function() {\n var obj = { className: 'open menu' };\n addClass(obj, 'open');\n assert.deepEqual(obj, {\n className: 'open menu'\n });\n });\n\n it(\"не добавляет лишних пробелов, который уже есть\", function() {\n var obj = { className: '' };\n addClass(obj, 'open');\n assert.deepEqual(obj, {\n className: 'open'\n });\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c03f1f6dbff33a79116" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c03f1f6dbff33a79117" }, "plunkId" : "wIHUOaonXMqv3bxxXut8", "webPath" : "/task/add-class/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c03f1f6dbff33a79118" } }, { "content" : "describe(\"addClass\", function() {\n\n it(\"добавляет класс, которого нет\", function() {\n var obj = { className: 'open menu' };\n addClass(obj, 'new');\n assert.deepEqual(obj, {\n className: 'open menu new'\n });\n });\n\n it(\"не добавляет класс, который уже есть\", function() {\n var obj = { className: 'open menu' };\n addClass(obj, 'open');\n assert.deepEqual(obj, {\n className: 'open menu'\n });\n });\n\n it(\"не добавляет лишних пробелов, который уже есть\", function() {\n var obj = { className: '' };\n addClass(obj, 'open');\n assert.deepEqual(obj, {\n className: 'open'\n });\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c03f1f6dbff33a79119" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c03f1f6dbff33a7911b" }, "plunkId" : "7wD7Q9z6WiactEWN9OU6", "webPath" : "/task/filter-anagrams/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c03f1f6dbff33a7911c" } }, { "content" : "describe(\"aclean\", function() {\n \n it(\"удаляет анаграммы\", function() {\n var arr = [\"воз\", \"киборг\", \"корсет\", \"зов\", \"гробик\", \"костер\", \"сектор\"];\n assert.sameMembers(aclean(arr), [\"гробик\", \"зов\", \"сектор\"]);\n });\n \n it(\"не различает регистр символов\", function() {\n var arr = [\"воз\", \"ЗОВ\"];\n assert.equal( aclean(arr).length, 1 );\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c03f1f6dbff33a7911d" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c04f1f6dbff33a7911e" }, "plunkId" : "kKzFt41kR2RedD7SdeaS", "webPath" : "/task/filter-anagrams/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c04f1f6dbff33a7911f" } }, { "content" : "describe(\"aclean\", function() {\n \n it(\"удаляет анаграммы\", function() {\n var arr = [\"воз\", \"киборг\", \"корсет\", \"зов\", \"гробик\", \"костер\", \"сектор\"];\n assert.sameMembers(aclean(arr), [\"гробик\", \"зов\", \"сектор\"]);\n });\n \n it(\"не различает регистр символов\", function() {\n var arr = [\"воз\", \"ЗОВ\"];\n assert.equal( aclean(arr).length, 1 );\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c04f1f6dbff33a79120" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c04f1f6dbff33a79122" }, "plunkId" : "P4qmSeQYBcOshL9darWi", "webPath" : "/task/array-unique/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c04f1f6dbff33a79123" } }, { "content" : "describe(\"unique\", function() {\n it(\"убирает неуникальные элементы из массива\", function() {\n var strings = [\"кришна\", \"кришна\", \"харе\", \"харе\", \n \"харе\", \"харе\", \"кришна\", \"кришна\", \"8-()\"];\n\n assert.deepEqual( unique(strings), [\"кришна\", \"харе\", \"8-()\"] ); \n });\n\n it(\"не изменяет исходный массив\", function() {\n var strings = [\"кришна\", \"кришна\", \"харе\", \"харе\"];\n unique(strings);\n assert.deepEqual( strings, [\"кришна\", \"кришна\", \"харе\", \"харе\"] ); \n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c04f1f6dbff33a79124" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c05f1f6dbff33a79125" }, "plunkId" : "DhbroUAFZq7a6IpB9ccr", "webPath" : "/task/array-unique/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c05f1f6dbff33a79126" } }, { "content" : "describe(\"unique\", function() {\n it(\"убирает неуникальные элементы из массива\", function() {\n var strings = [\"кришна\", \"кришна\", \"харе\", \"харе\", \n \"харе\", \"харе\", \"кришна\", \"кришна\", \"8-()\"];\n\n assert.deepEqual( unique(strings), [\"кришна\", \"харе\", \"8-()\"] ); \n });\n\n it(\"не изменяет исходный массив\", function() {\n var strings = [\"кришна\", \"кришна\", \"харе\", \"харе\"];\n unique(strings);\n assert.deepEqual( strings, [\"кришна\", \"кришна\", \"харе\", \"харе\"] ); \n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c05f1f6dbff33a79127" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c05f1f6dbff33a79129" }, "plunkId" : "ETfO6JaeoyaLMBMdYCJL", "webPath" : "/task/camelcase/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c05f1f6dbff33a7912a" } }, { "content" : "describe(\"camelize\", function() {\n\n it(\"оставляет пустую строку \\\"как есть\\\"\", function() {\n assert.equal( camelize(\"\"), \"\");\n });\n\n describe(\"делает заглавным первый символ после дефиса\", function() {\n\n it(\"превращает background-color в backgroundColor\", function() {\n assert.equal( camelize(\"background-color\"), \"backgroundColor\");\n });\n\n it(\"превращает list-style-image в listStyleImage\", function() {\n assert.equal( camelize(\"list-style-image\"), \"listStyleImage\");\n });\n\n it(\"превращает -webkit-transition в WebkitTransition\", function() {\n assert.equal( camelize(\"-webkit-transition\"), \"WebkitTransition\");\n });\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c05f1f6dbff33a7912b" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c06f1f6dbff33a7912c" }, "plunkId" : "XBDbNQUcfsXJDImdkD1L", "webPath" : "/task/camelcase/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c06f1f6dbff33a7912d" } }, { "content" : "describe(\"camelize\", function() {\n\n it(\"оставляет пустую строку \\\"как есть\\\"\", function() {\n assert.equal( camelize(\"\"), \"\");\n });\n\n describe(\"делает заглавным первый символ после дефиса\", function() {\n\n it(\"превращает background-color в backgroundColor\", function() {\n assert.equal( camelize(\"background-color\"), \"backgroundColor\");\n });\n\n it(\"превращает list-style-image в listStyleImage\", function() {\n assert.equal( camelize(\"list-style-image\"), \"listStyleImage\");\n });\n\n it(\"превращает -webkit-transition в WebkitTransition\", function() {\n assert.equal( camelize(\"-webkit-transition\"), \"WebkitTransition\");\n });\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c06f1f6dbff33a7912e" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c06f1f6dbff33a79130" }, "plunkId" : "7BeE2Nkn7GsLE6VBKiUF", "webPath" : "/task/remove-class/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c06f1f6dbff33a79131" } }, { "content" : "describe(\"removeClass\", function() {\n\n it(\"ничего не делает, если класса нет\", function() {\n var obj = { className: 'open menu' };\n removeClass(obj, 'new');\n assert.deepEqual(obj, {\n className: 'open menu'\n });\n });\n\n it(\"не меняет пустое свойство\", function() {\n var obj = { className: '' };\n removeClass(obj, 'new');\n assert.deepEqual(obj, {\n className: \"\"\n });\n });\n\n it(\"удаляет класс, не оставляя лишних пробелов\", function() {\n var obj = { className: 'open menu' };\n removeClass(obj, 'open');\n assert.deepEqual(obj, {\n className: \"menu\"\n });\n });\n\n it(\"если класс один и он удалён, то результат - пустая строка\", function() {\n var obj = { className: \"menu\" };\n removeClass(obj, 'menu');\n assert.deepEqual(obj, {\n className: \"\"\n });\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c06f1f6dbff33a79132" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c07f1f6dbff33a79133" }, "plunkId" : "IYUlwQQ7HxoVKPB0PNVI", "webPath" : "/task/remove-class/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c07f1f6dbff33a79134" } }, { "content" : "describe(\"removeClass\", function() {\n\n it(\"ничего не делает, если класса нет\", function() {\n var obj = { className: 'open menu' };\n removeClass(obj, 'new');\n assert.deepEqual(obj, {\n className: 'open menu'\n });\n });\n\n it(\"не меняет пустое свойство\", function() {\n var obj = { className: '' };\n removeClass(obj, 'new');\n assert.deepEqual(obj, {\n className: \"\"\n });\n });\n\n it(\"удаляет класс, не оставляя лишних пробелов\", function() {\n var obj = { className: 'open menu' };\n removeClass(obj, 'open');\n assert.deepEqual(obj, {\n className: \"menu\"\n });\n });\n\n it(\"если класс один и он удалён, то результат - пустая строка\", function() {\n var obj = { className: \"menu\" };\n removeClass(obj, 'menu');\n assert.deepEqual(obj, {\n className: \"\"\n });\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c07f1f6dbff33a79135" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c07f1f6dbff33a79137" }, "plunkId" : "KXt4CYcUbrlPfy9X4cSM", "webPath" : "/task/filter-in-place/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c07f1f6dbff33a79138" } }, { "content" : "describe(\"filterRangeInPlace\", function() {\n\n it(\"меняет массив, оставляя только значения из диапазона\", function() {\n var arr = [5, 3, 8, 1];\n filterRangeInPlace(arr, 1, 4);\n assert.deepEqual(arr, [3, 1]);\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c07f1f6dbff33a79139" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c07f1f6dbff33a7913a" }, "plunkId" : "SGRhufpDBe5ZqRXREaRX", "webPath" : "/task/filter-in-place/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c07f1f6dbff33a7913b" } }, { "content" : "describe(\"filterRangeInPlace\", function() {\n\n it(\"меняет массив, оставляя только значения из диапазона\", function() {\n var arr = [5, 3, 8, 1];\n filterRangeInPlace(arr, 1, 4);\n assert.deepEqual(arr, [3, 1]);\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c07f1f6dbff33a7913c" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c08f1f6dbff33a79145" }, "plunkId" : "HpTo7DYhs3lspyMVmBhs", "webPath" : "/task/partial-sums-array/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c08f1f6dbff33a79146" } }, { "content" : "describe(\"getSums\", function() {\n\n it(\"частичные суммы [1,2,3,4,5] равны [1,3,6,10,15]\", function() {\n assert.deepEqual( getSums([1,2,3,4,5]), [1,3,6,10,15]);\n });\n\n it(\"частичные суммы [-2,-1,0,1] равны [-2,-3,-3,-2]\", function() {\n assert.deepEqual( getSums([-2,-1,0,1]), [-2,-3,-3,-2]);\n });\n\n it(\"частичные суммы [] равны []\", function() {\n assert.deepEqual( getSums([]), [] );\n });\n\n it(\"частичные суммы [1] равны [1]\", function() {\n assert.deepEqual( getSums([1]), [1] );\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c08f1f6dbff33a79147" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c08f1f6dbff33a79148" }, "plunkId" : "Han01Xo5OmPkw0469gnw", "webPath" : "/task/partial-sums-array/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c08f1f6dbff33a79149" } }, { "content" : "describe(\"getSums\", function() {\n\n it(\"частичные суммы [1,2,3,4,5] равны [1,3,6,10,15]\", function() {\n assert.deepEqual( getSums([1,2,3,4,5]), [1,3,6,10,15]);\n });\n\n it(\"частичные суммы [-2,-1,0,1] равны [-2,-3,-3,-2]\", function() {\n assert.deepEqual( getSums([-2,-1,0,1]), [-2,-3,-3,-2]);\n });\n\n it(\"частичные суммы [] равны []\", function() {\n assert.deepEqual( getSums([]), [] );\n });\n\n it(\"частичные суммы [1] равны [1]\", function() {\n assert.deepEqual( getSums([1]), [1] );\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c08f1f6dbff33a7914a" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c09f1f6dbff33a7915d" }, "plunkId" : "iJ5PTwmmVm1D856uAgbP", "webPath" : "/task/stringbuffer/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c09f1f6dbff33a7915e" } }, { "content" : "var buffer;\nbeforeEach(function() {\n buffer = makeBuffer();\n});\n\nit(\"возвращает пустую строку по умолчанию\", function() {\n assert.strictEqual( buffer(), \"\");\n});\n\nit(\"добавляет аргументы в буффер\", function() {\n buffer('Замыкания'); \n buffer(' Использовать'); \n buffer(' Нужно!'); \n assert.equal( buffer(), 'Замыкания Использовать Нужно!');\n});\n\nit(\"приводит всё к строке\", function() {\n buffer(null);\n buffer(false);\n assert.equal( buffer(), \"nullfalse\");\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c09f1f6dbff33a7915f" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c09f1f6dbff33a79160" }, "plunkId" : "Vu94b72JuMmlQ0n9h0Cy", "webPath" : "/task/stringbuffer/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c09f1f6dbff33a79161" } }, { "content" : "var buffer;\nbeforeEach(function() {\n buffer = makeBuffer();\n});\n\nit(\"возвращает пустую строку по умолчанию\", function() {\n assert.strictEqual( buffer(), \"\");\n});\n\nit(\"добавляет аргументы в буффер\", function() {\n buffer('Замыкания'); \n buffer(' Использовать'); \n buffer(' Нужно!'); \n assert.equal( buffer(), 'Замыкания Использовать Нужно!');\n});\n\nit(\"приводит всё к строке\", function() {\n buffer(null);\n buffer(false);\n assert.equal( buffer(), \"nullfalse\");\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c09f1f6dbff33a79162" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c09f1f6dbff33a79164" }, "plunkId" : "I9yHeMWcIdYC4mPYQbuO", "webPath" : "/task/stringbuffer-with-clear/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c09f1f6dbff33a79165" } }, { "content" : "var buffer;\n\nbeforeEach(function() {\n buffer = makeBuffer();\n});\n\nit(\"возвращает пустую строку по умолчанию\", function() {\n assert.strictEqual( buffer(), \"\");\n});\n\nit(\"добавляет аргументы в буффер\", function() {\n buffer('Замыкания'); \n buffer(' Использовать'); \n buffer(' Нужно!'); \n assert.equal( buffer(), 'Замыкания Использовать Нужно!');\n});\n\nit(\"приводит всё к строке\", function() {\n buffer(null);\n buffer(false);\n assert.equal( buffer(), \"nullfalse\");\n});\n\nit(\"очищает буфер вызовом clear\", function() {\n buffer(\"test\");\n buffer.clear();\n buffer(\"первый\");\n buffer(\"второй\");\n assert.equal( buffer(), \"первыйвторой\");\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c09f1f6dbff33a79166" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c0af1f6dbff33a79167" }, "plunkId" : "rbLL3i14r1kLdk4rbMmX", "webPath" : "/task/stringbuffer-with-clear/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c0af1f6dbff33a79168" } }, { "content" : "var buffer;\n\nbeforeEach(function() {\n buffer = makeBuffer();\n});\n\nit(\"возвращает пустую строку по умолчанию\", function() {\n assert.strictEqual( buffer(), \"\");\n});\n\nit(\"добавляет аргументы в буффер\", function() {\n buffer('Замыкания'); \n buffer(' Использовать'); \n buffer(' Нужно!'); \n assert.equal( buffer(), 'Замыкания Использовать Нужно!');\n});\n\nit(\"приводит всё к строке\", function() {\n buffer(null);\n buffer(false);\n assert.equal( buffer(), \"nullfalse\");\n});\n\nit(\"очищает буфер вызовом clear\", function() {\n buffer(\"test\");\n buffer.clear();\n buffer(\"первый\");\n buffer(\"второй\");\n assert.equal( buffer(), \"первыйвторой\");\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c0af1f6dbff33a79169" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c0bf1f6dbff33a7916c" }, "plunkId" : "18YhmRZn7Lb7RUSMy0SN", "webPath" : "/task/filter-through-function/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c0bf1f6dbff33a7916d" } }, { "content" : "var arr;\n\nbefore(function() {\n arr = [1, 2, 3, 4, 5, 6, 7];\n});\n\ndescribe(\"inArray\", function() {\n var checkInArr;\n\n before(function() {\n checkInArr = inArray(arr);\n });\n \n it(\"возвращает фильтр для значений в массиве\", function() {\n assert.isTrue( checkInArr(5) );\n assert.isFalse( checkInArr(0) );\n });\n});\n\n\ndescribe(\"inBetween\", function() {\n var checkBetween36;\n\n before(function() {\n checkBetween36 = inBetween(3, 6);\n });\n\n it(\"возвращает фильтрa для значений в промежутке\", function() {\n assert.isTrue( checkBetween36(5) );\n assert.isFalse( checkBetween36(0) );\n });\n});\n\n\ndescribe(\"filter\", function() {\n\n it(\"фильтрует через func\", function() {\n assert.deepEqual( filter(arr, function(a) { return a % 2 == 0; }), [2,4,6] ); \n });\n\n it(\"не модифицирует исходный массив\", function() {\n filter(arr, function(a) { return a % 2 == 0; });\n assert.deepEqual( arr, [1, 2, 3, 4, 5, 6, 7] ); \n });\n\n it(\"поддерживает фильтр inBetween\", function() {\n assert.deepEqual( filter(arr,inBetween(3,6)), [3,4,5,6]);\n });\n\n it(\"поддерживает фильтр inArray\", function() {\n assert.deepEqual( filter(arr, inArray([1,2,3])), [1,2,3]);\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c0bf1f6dbff33a7916e" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c0bf1f6dbff33a7916f" }, "plunkId" : "pIwTumCLOtoz20c4s8a0", "webPath" : "/task/filter-through-function/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c0bf1f6dbff33a79170" } }, { "content" : "var arr;\n\nbefore(function() {\n arr = [1, 2, 3, 4, 5, 6, 7];\n});\n\ndescribe(\"inArray\", function() {\n var checkInArr;\n\n before(function() {\n checkInArr = inArray(arr);\n });\n \n it(\"возвращает фильтр для значений в массиве\", function() {\n assert.isTrue( checkInArr(5) );\n assert.isFalse( checkInArr(0) );\n });\n});\n\n\ndescribe(\"inBetween\", function() {\n var checkBetween36;\n\n before(function() {\n checkBetween36 = inBetween(3, 6);\n });\n\n it(\"возвращает фильтрa для значений в промежутке\", function() {\n assert.isTrue( checkBetween36(5) );\n assert.isFalse( checkBetween36(0) );\n });\n});\n\n\ndescribe(\"filter\", function() {\n\n it(\"фильтрует через func\", function() {\n assert.deepEqual( filter(arr, function(a) { return a % 2 == 0; }), [2,4,6] ); \n });\n\n it(\"не модифицирует исходный массив\", function() {\n filter(arr, function(a) { return a % 2 == 0; });\n assert.deepEqual( arr, [1, 2, 3, 4, 5, 6, 7] ); \n });\n\n it(\"поддерживает фильтр inBetween\", function() {\n assert.deepEqual( filter(arr,inBetween(3,6)), [3,4,5,6]);\n });\n\n it(\"поддерживает фильтр inArray\", function() {\n assert.deepEqual( filter(arr, inArray([1,2,3])), [1,2,3]);\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c0bf1f6dbff33a79171" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c0bf1f6dbff33a79173" }, "plunkId" : "nEsVfHiT8gzXW2K9QpIU", "webPath" : "/task/make-army/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c0bf1f6dbff33a79174" } }, { "content" : "var army;\nbefore(function() {\n army = makeArmy();\n window.alert = sinon.stub(window, \"alert\");\n});\n\nit(\"army[0] выводит 0\", function() {\n army[0]();\n assert(alert.calledWith(0));\n});\n\n\nit(\"army[5] функция выводит 5\", function() {\n army[5]();\n assert(alert.calledWith(5));\n});\n\nafter(function() {\n window.alert.restore();\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c0bf1f6dbff33a79175" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c0cf1f6dbff33a79176" }, "plunkId" : "gmbzG91MDjEz1PR4rhxL", "webPath" : "/task/make-army/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c0cf1f6dbff33a79177" } }, { "content" : "var army;\nbefore(function() {\n army = makeArmy();\n window.alert = sinon.stub(window, \"alert\");\n});\n\nit(\"army[0] выводит 0\", function() {\n army[0]();\n assert(alert.calledWith(0));\n});\n\n\nit(\"army[5] функция выводит 5\", function() {\n army[5]();\n assert(alert.calledWith(5));\n});\n\nafter(function() {\n window.alert.restore();\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c0cf1f6dbff33a79178" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c0cf1f6dbff33a7917a" }, "plunkId" : "oixv56aLpSBNx4mFMddd", "webPath" : "/article/closures-module/hello-conflict", "files" : [ { "filename" : "hello.js", "content" : "// глобальная переменная нашего скрипта\nvar message = \"Привет\";\n\n// функция для вывода этой переменной\nfunction showMessage() {\n alert(message);\n}\n\n// выводим сообщение\nshowMessage();\n", "_id" : { "$oid" : "54c29c0cf1f6dbff33a7917b" } }, { "filename" : "index.html", "content" : "\n\n\n \n \n \n\n\n\n\n\n\n\n \n\n", "_id" : { "$oid" : "54c29c0cf1f6dbff33a7917c" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c0cf1f6dbff33a7917d" }, "plunkId" : "0zOmAJ3d8LRtJknudgyK", "webPath" : "/article/closures-module/hello-module", "files" : [ { "filename" : "hello.js", "content" : "(function() {\n \n // глобальная переменная нашего скрипта\n var message = \"Привет\";\n\n // функция для вывода этой переменной\n function showMessage() {\n alert(message);\n }\n\n // выводим сообщение\n showMessage();\n\n})();", "_id" : { "$oid" : "54c29c0cf1f6dbff33a7917e" } }, { "filename" : "index.html", "content" : "\n\n\n \n \n \n\n\n\n\n\n\n\n \n\n", "_id" : { "$oid" : "54c29c0cf1f6dbff33a7917f" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c0df1f6dbff33a7918d" }, "plunkId" : "rSGoC7CXkXqM7iI3XqWy", "webPath" : "/task/calculator/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c0df1f6dbff33a7918e" } }, { "content" : "sinon.stub(window, \"prompt\");\n\nprompt.onCall(0).returns(\"2\");\nprompt.onCall(1).returns(\"3\");\n\ndescribe(\"calculator\", function() {\n before(function() {\n calculator.read();\n });\n\n it(\"при вводе 2 и 3 сумма равна 5\", function() {\n assert.equal( calculator.sum(), 5 );\n });\n\n it(\"при вводе 2 и 3 произведение равно 6\", function() {\n assert.equal( calculator.mul(), 6 );\n });\n});\n\nafter(function() {\n prompt.restore();\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c0df1f6dbff33a7918f" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c0df1f6dbff33a79190" }, "plunkId" : "sGQteuKq1bhZtmzAlkVt", "webPath" : "/task/calculator/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c0df1f6dbff33a79191" } }, { "content" : "sinon.stub(window, \"prompt\");\n\nprompt.onCall(0).returns(\"2\");\nprompt.onCall(1).returns(\"3\");\n\ndescribe(\"calculator\", function() {\n before(function() {\n calculator.read();\n });\n\n it(\"при вводе 2 и 3 сумма равна 5\", function() {\n assert.equal( calculator.sum(), 5 );\n });\n\n it(\"при вводе 2 и 3 произведение равно 6\", function() {\n assert.equal( calculator.mul(), 6 );\n });\n});\n\nafter(function() {\n prompt.restore();\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c0df1f6dbff33a79192" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c0df1f6dbff33a7919d" }, "plunkId" : "dxYF2AXUrK8VZkZQ3vyI", "webPath" : "/task/calculator-constructor/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c0df1f6dbff33a7919e" } }, { "content" : "sinon.stub(window, \"prompt\")\n\nprompt.onCall(0).returns(\"2\");\nprompt.onCall(1).returns(\"3\");\n\ndescribe(\"calculator\", function() {\n var calculator;\n before(function() {\n calculator = new Calculator();\n calculator.read();\n });\n\n it(\"при вводе 2 и 3 сумма равна 5\", function() {\n assert.equal( calculator.sum(), 5 );\n });\n\n it(\"при вводе 2 и 3 произведение равно 6\", function() {\n assert.equal( calculator.mul(), 6 );\n });\n\n});\n\nafter(function() {\n prompt.restore();\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c0df1f6dbff33a7919f" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c0ef1f6dbff33a791a0" }, "plunkId" : "uMdDRxPyKUFoRLsAa3kB", "webPath" : "/task/calculator-constructor/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c0ef1f6dbff33a791a1" } }, { "content" : "sinon.stub(window, \"prompt\")\n\nprompt.onCall(0).returns(\"2\");\nprompt.onCall(1).returns(\"3\");\n\ndescribe(\"calculator\", function() {\n var calculator;\n before(function() {\n calculator = new Calculator();\n calculator.read();\n });\n\n it(\"при вводе 2 и 3 сумма равна 5\", function() {\n assert.equal( calculator.sum(), 5 );\n });\n\n it(\"при вводе 2 и 3 произведение равно 6\", function() {\n assert.equal( calculator.mul(), 6 );\n });\n\n});\n\nafter(function() {\n prompt.restore();\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c0ef1f6dbff33a791a2" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c0ef1f6dbff33a791a4" }, "plunkId" : "Jf3JV3d5dv0yLssokdkD", "webPath" : "/task/accumulator/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c0ef1f6dbff33a791a5" } }, { "content" : "describe(\"Accumulator(1)\", function() {\n var accumulator;\n before(function() {\n accumulator = new Accumulator(1);\n });\n\n beforeEach(function() {\n sinon.stub(window, \"prompt\")\n });\n\n afterEach(function() {\n prompt.restore();\n });\n\n it(\"начальное значение 1\", function() {\n assert.equal( accumulator.value, 1 );\n });\n\n it(\"после ввода 0 значение 1\", function() {\n prompt.returns(\"0\");\n accumulator.read();\n assert.equal( accumulator.value, 1 );\n });\n\n it(\"после ввода 1 значение 2\", function() {\n prompt.returns(\"1\");\n accumulator.read();\n assert.equal( accumulator.value, 2 );\n });\n\n it(\"после ввода 2 значение 4\", function() {\n prompt.returns(\"2\");\n accumulator.read();\n assert.equal( accumulator.value, 4 );\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c0ef1f6dbff33a791a6" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c0ff1f6dbff33a791a7" }, "plunkId" : "zVVKSiC6M18tXo5e2RDo", "webPath" : "/task/accumulator/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c0ff1f6dbff33a791a8" } }, { "content" : "describe(\"Accumulator(1)\", function() {\n var accumulator;\n before(function() {\n accumulator = new Accumulator(1);\n });\n\n beforeEach(function() {\n sinon.stub(window, \"prompt\")\n });\n\n afterEach(function() {\n prompt.restore();\n });\n\n it(\"начальное значение 1\", function() {\n assert.equal( accumulator.value, 1 );\n });\n\n it(\"после ввода 0 значение 1\", function() {\n prompt.returns(\"0\");\n accumulator.read();\n assert.equal( accumulator.value, 1 );\n });\n\n it(\"после ввода 1 значение 2\", function() {\n prompt.returns(\"1\");\n accumulator.read();\n assert.equal( accumulator.value, 2 );\n });\n\n it(\"после ввода 2 значение 4\", function() {\n prompt.returns(\"2\");\n accumulator.read();\n assert.equal( accumulator.value, 4 );\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c0ff1f6dbff33a791a9" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c10f1f6dbff33a791ab" }, "plunkId" : "7Kr4SqdGswrHFawxnfXZ", "webPath" : "/task/calculator-extendable/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c10f1f6dbff33a791ac" } }, { "content" : "var calculator;\nbefore(function() {\n calculator = new Calculator;\n});\n\nit(\"calculate(12 + 34) = 46\", function() {\n assert.equal( calculator.calculate(\"12 + 34\"), 46 );\n});\n\nit(\"calculate(34 - 12) = 22\", function() {\n assert.equal( calculator.calculate(\"34 - 12\"), 22 );\n});\n\nit(\"добавили умножение: calculate(2 * 3) = 6\", function() {\n calculator.addMethod(\"*\", function(a, b) {\n return a * b;\n });\n assert.equal( calculator.calculate(\"2 * 3\"), 6 );\n});\n\nit(\"добавили возведение в степень: calculate(2 ** 3) = 8\", function() {\n calculator.addMethod(\"**\", function(a, b) {\n return Math.pow(a, b);\n });\n assert.equal( calculator.calculate(\"2 ** 3\"), 8 );\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c10f1f6dbff33a791ad" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c11f1f6dbff33a791ae" }, "plunkId" : "qLIUHM0wWRPwcAHVdptD", "webPath" : "/task/calculator-extendable/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c11f1f6dbff33a791af" } }, { "content" : "var calculator;\nbefore(function() {\n calculator = new Calculator;\n});\n\nit(\"calculate(12 + 34) = 46\", function() {\n assert.equal( calculator.calculate(\"12 + 34\"), 46 );\n});\n\nit(\"calculate(34 - 12) = 22\", function() {\n assert.equal( calculator.calculate(\"34 - 12\"), 22 );\n});\n\nit(\"добавили умножение: calculate(2 * 3) = 6\", function() {\n calculator.addMethod(\"*\", function(a, b) {\n return a * b;\n });\n assert.equal( calculator.calculate(\"2 * 3\"), 6 );\n});\n\nit(\"добавили возведение в степень: calculate(2 ** 3) = 8\", function() {\n calculator.addMethod(\"**\", function(a, b) {\n return Math.pow(a, b);\n });\n assert.equal( calculator.calculate(\"2 ** 3\"), 8 );\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c11f1f6dbff33a791b0" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c11f1f6dbff33a791b5" }, "plunkId" : "0Ue1faDKzrmiWspHAvEg", "webPath" : "/task/objects-counter/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c11f1f6dbff33a791b6" } }, { "content" : "describe(\"Article.showStats\", function() {\n before(function() {\n sinon.stub(window, \"alert\");\n this.clock = sinon.useFakeTimers();\n });\n \n after(function() {\n window.alert.restore();\n this.clock.restore();\n });\n\n it(\"Выводит число статей и дату создания последней\", function() {\n new Article();\n this.clock.tick(100);\n new Article();\n Article.showStats(); \n \n assert( alert.calledWith('Всего: 2, Последняя: ' + new Date() ) );\n });\n\n it(\"и ещё одна статья...\", function() {\n this.clock.tick(100);\n new Article();\n Article.showStats();\n\n assert( alert.calledWith('Всего: 3, Последняя: ' + new Date() ) );\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c11f1f6dbff33a791b7" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c13f1f6dbff33a791b8" }, "plunkId" : "PtcxV610fq1icV893wrp", "webPath" : "/task/objects-counter/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c13f1f6dbff33a791b9" } }, { "content" : "describe(\"Article.showStats\", function() {\n before(function() {\n sinon.stub(window, \"alert\");\n this.clock = sinon.useFakeTimers();\n });\n \n after(function() {\n window.alert.restore();\n this.clock.restore();\n });\n\n it(\"Выводит число статей и дату создания последней\", function() {\n new Article();\n this.clock.tick(100);\n new Article();\n Article.showStats(); \n \n assert( alert.calledWith('Всего: 2, Последняя: ' + new Date() ) );\n });\n\n it(\"и ещё одна статья...\", function() {\n this.clock.tick(100);\n new Article();\n Article.showStats();\n\n assert( alert.calledWith('Всего: 3, Последняя: ' + new Date() ) );\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c13f1f6dbff33a791ba" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c13f1f6dbff33a791be" }, "plunkId" : "diQYgX8gSwMgrxY15sfi", "webPath" : "/task/apply-function-skip-first-argument/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c13f1f6dbff33a791bf" } }, { "content" : "describe(\"applyAll\", function() {\n\n it(\"применяет функцию ко всем аргументам, начиная со 2го\", function() {\n var min = applyAll(Math.min, 1, 2, 3);\n assert.equal( min, 1 );\n });\n\n it(\"при отсутствии аргументов просто вызывает функцию\", function() {\n var spy = sinon.spy();\n applyAll(spy);\n assert( spy.calledOnce );\n assert.equal( spy.firstCall.args.length, 0 );\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c13f1f6dbff33a791c0" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c14f1f6dbff33a791c1" }, "plunkId" : "PJFRnrc3oGIK7IHRoio6", "webPath" : "/task/apply-function-skip-first-argument/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c14f1f6dbff33a791c2" } }, { "content" : "describe(\"applyAll\", function() {\n\n it(\"применяет функцию ко всем аргументам, начиная со 2го\", function() {\n var min = applyAll(Math.min, 1, 2, 3);\n assert.equal( min, 1 );\n });\n\n it(\"при отсутствии аргументов просто вызывает функцию\", function() {\n var spy = sinon.spy();\n applyAll(spy);\n assert( spy.calledOnce );\n assert.equal( spy.firstCall.args.length, 0 );\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c14f1f6dbff33a791c3" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c14f1f6dbff33a791ce" }, "plunkId" : "RF0AAeevV3Xn01FLcMji", "webPath" : "/task/logging-decorator/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c14f1f6dbff33a791cf" } }, { "content" : "describe(\"makeLogging\", function() {\n it(\"записывает вызовы в массив log\", function() {\n var work = sinon.spy();\n\n var log = [];\n work = makeLogging(work, log);\n assert.deepEqual( log, []);\n\n work(1);\n assert.deepEqual( log, [1]);\n\n work(2);\n assert.deepEqual( log, [1, 2]);\n });\n\n it(\"передаёт вызов функции, возвращает её результат\", function() {\n var log = [];\n \n function work(x) {\n return x*2;\n }\n\n work = sinon.spy(work);\n var spy = work;\n work = makeLogging(work, log);\n \n assert.equal( work(1), 2 );\n assert(spy.calledWith(1));\n });\n \n\n it(\"сохраняет контекст вызова для методов объекта\", function() {\n var log = [];\n \n var calculator = {\n double: function(x) { return x*2; }\n }\n\n calculator.double = sinon.spy(calculator.double);\n var spy = calculator.double;\n calculator.double = makeLogging(calculator.double, log);\n\n assert.equal( calculator.double(1), 2 );\n assert(spy.calledWith(1));\n assert(spy.calledOn(calculator));\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c14f1f6dbff33a791d0" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c15f1f6dbff33a791d1" }, "plunkId" : "X1kG437NYklFa0CgEAYD", "webPath" : "/task/logging-decorator/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c15f1f6dbff33a791d2" } }, { "content" : "describe(\"makeLogging\", function() {\n it(\"записывает вызовы в массив log\", function() {\n var work = sinon.spy();\n\n var log = [];\n work = makeLogging(work, log);\n assert.deepEqual( log, []);\n\n work(1);\n assert.deepEqual( log, [1]);\n\n work(2);\n assert.deepEqual( log, [1, 2]);\n });\n\n it(\"передаёт вызов функции, возвращает её результат\", function() {\n var log = [];\n \n function work(x) {\n return x*2;\n }\n\n work = sinon.spy(work);\n var spy = work;\n work = makeLogging(work, log);\n \n assert.equal( work(1), 2 );\n assert(spy.calledWith(1));\n });\n \n\n it(\"сохраняет контекст вызова для методов объекта\", function() {\n var log = [];\n \n var calculator = {\n double: function(x) { return x*2; }\n }\n\n calculator.double = sinon.spy(calculator.double);\n var spy = calculator.double;\n calculator.double = makeLogging(calculator.double, log);\n\n assert.equal( calculator.double(1), 2 );\n assert(spy.calledWith(1));\n assert(spy.calledOn(calculator));\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c15f1f6dbff33a791d3" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c16f1f6dbff33a791d5" }, "plunkId" : "0dr4vW4j8EYHWRMSSe8J", "webPath" : "/task/logging-decorator-arguments/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c16f1f6dbff33a791d6" } }, { "content" : "describe(\"makeLogging\", function() {\n it(\"записывает вызовы в массив log\", function() {\n var work = sinon.spy();\n\n var log = [];\n work = makeLogging(work, log);\n assert.deepEqual( log, []);\n\n work(1, 2);\n assert.deepEqual( log, [[1, 2]]);\n\n work(3, 4);\n assert.deepEqual( log, [[1, 2], [3,4]]);\n });\n\n it(\"передаёт вызов функции, возвращает её результат\", function() {\n var log = [];\n \n function sum(a, b) {\n return a + b;\n }\n\n sum = sinon.spy(sum);\n var spy = sum;\n sum = makeLogging(sum, log);\n \n assert.equal( sum(1, 2), 3 );\n assert(spy.calledWith(1, 2));\n });\n \n\n it(\"сохраняет контекст вызова для методов объекта\", function() {\n var log = [];\n \n var calculator = {\n sum: function(a, b) { return a + b; }\n }\n\n calculator.sum = sinon.spy(calculator.sum);\n var spy = calculator.sum;\n calculator.sum = makeLogging(calculator.sum, log);\n\n assert.equal( calculator.sum(1, 2), 3 );\n assert(spy.calledWith(1, 2));\n assert(spy.calledOn(calculator));\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c16f1f6dbff33a791d7" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c16f1f6dbff33a791d8" }, "plunkId" : "udSvcQsMOS7N4O4sREvI", "webPath" : "/task/logging-decorator-arguments/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c16f1f6dbff33a791d9" } }, { "content" : "describe(\"makeLogging\", function() {\n it(\"записывает вызовы в массив log\", function() {\n var work = sinon.spy();\n\n var log = [];\n work = makeLogging(work, log);\n assert.deepEqual( log, []);\n\n work(1, 2);\n assert.deepEqual( log, [[1, 2]]);\n\n work(3, 4);\n assert.deepEqual( log, [[1, 2], [3,4]]);\n });\n\n it(\"передаёт вызов функции, возвращает её результат\", function() {\n var log = [];\n \n function sum(a, b) {\n return a + b;\n }\n\n sum = sinon.spy(sum);\n var spy = sum;\n sum = makeLogging(sum, log);\n \n assert.equal( sum(1, 2), 3 );\n assert(spy.calledWith(1, 2));\n });\n \n\n it(\"сохраняет контекст вызова для методов объекта\", function() {\n var log = [];\n \n var calculator = {\n sum: function(a, b) { return a + b; }\n }\n\n calculator.sum = sinon.spy(calculator.sum);\n var spy = calculator.sum;\n calculator.sum = makeLogging(calculator.sum, log);\n\n assert.equal( calculator.sum(1, 2), 3 );\n assert(spy.calledWith(1, 2));\n assert(spy.calledOn(calculator));\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c16f1f6dbff33a791da" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c17f1f6dbff33a791dc" }, "plunkId" : "fhkKufsxygQjNGI7YDDJ", "webPath" : "/task/caching-decorator/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c17f1f6dbff33a791dd" } }, { "content" : "describe(\"makeCaching\", function() {\n\n it(\"запоминает предыдущее значение функции с таким аргументом\", function() {\n function f(x) { \n return Math.random()*x; \n }\n\n f = makeCaching(f);\n\n var a = f(1);\n var b = f(1);\n assert.equal(a, b);\n \n var anotherValue = f(2); \n // почти наверняка другое значение\n assert.notEqual( a, anotherValue );\n });\n\n it(\"сохраняет контекст вызова\", function() {\n var obj = {\n spy: sinon.spy()\n };\n\n var spy = obj.spy;\n obj.spy = makeCaching(obj.spy);\n obj.spy(123);\n assert( spy.calledWith(123) );\n assert( spy.calledOn(obj) );\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c17f1f6dbff33a791de" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c18f1f6dbff33a791df" }, "plunkId" : "Ybjccby33S9t5SOxgOWT", "webPath" : "/task/caching-decorator/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c18f1f6dbff33a791e0" } }, { "content" : "describe(\"makeCaching\", function() {\n\n it(\"запоминает предыдущее значение функции с таким аргументом\", function() {\n function f(x) { \n return Math.random()*x; \n }\n\n f = makeCaching(f);\n\n var a = f(1);\n var b = f(1);\n assert.equal(a, b);\n \n var anotherValue = f(2); \n // почти наверняка другое значение\n assert.notEqual( a, anotherValue );\n });\n\n it(\"сохраняет контекст вызова\", function() {\n var obj = {\n spy: sinon.spy()\n };\n\n var spy = obj.spy;\n obj.spy = makeCaching(obj.spy);\n obj.spy(123);\n assert( spy.calledWith(123) );\n assert( spy.calledOn(obj) );\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c18f1f6dbff33a791e1" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c19f1f6dbff33a791ef" }, "plunkId" : "rSBS0RNfs11eoXF3g2Cz", "webPath" : "/task/delay/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c19f1f6dbff33a791f0" } }, { "content" : "describe(\"delay\", function() {\n before(function() {\n this.clock = sinon.useFakeTimers();\n });\n\n after(function() {\n this.clock.restore();\n });\n\n it(\"вызывает функцию через указанный таймаут\", function() {\n var start = Date.now();\n function f(x) {\n assert.equal(Date.now() - start, 1000);\n }\n f = sinon.spy(f);\n \n var f1000 = delay(f, 1000);\n f1000(\"test\");\n this.clock.tick(2000);\n assert(f.calledOnce, 'calledOnce check fails');\n });\n\n it(\"передаёт аргументы и контекст\", function() {\n var start = Date.now();\n var user = {\n sayHi: function(phrase, who) {\n assert.equal(this, user);\n assert.equal(phrase, \"Привет\");\n assert.equal(who, \"Вася\");\n assert.equal(Date.now() - start, 1500);\n }\n };\n \n user.sayHi = sinon.spy(user.sayHi);\n \n var spy = user.sayHi;\n user.sayHi = delay(user.sayHi, 1500);\n \n user.sayHi(\"Привет\", \"Вася\");\n \n this.clock.tick(2000);\n \n assert(spy.calledOnce, 'проверка calledOnce не сработала');\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c19f1f6dbff33a791f1" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c1af1f6dbff33a791f2" }, "plunkId" : "miUgzq2GIkRGbkR3qPPZ", "webPath" : "/task/delay/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c1af1f6dbff33a791f3" } }, { "content" : "describe(\"delay\", function() {\n before(function() {\n this.clock = sinon.useFakeTimers();\n });\n\n after(function() {\n this.clock.restore();\n });\n\n it(\"вызывает функцию через указанный таймаут\", function() {\n var start = Date.now();\n function f(x) {\n assert.equal(Date.now() - start, 1000);\n }\n f = sinon.spy(f);\n \n var f1000 = delay(f, 1000);\n f1000(\"test\");\n this.clock.tick(2000);\n assert(f.calledOnce, 'calledOnce check fails');\n });\n\n it(\"передаёт аргументы и контекст\", function() {\n var start = Date.now();\n var user = {\n sayHi: function(phrase, who) {\n assert.equal(this, user);\n assert.equal(phrase, \"Привет\");\n assert.equal(who, \"Вася\");\n assert.equal(Date.now() - start, 1500);\n }\n };\n \n user.sayHi = sinon.spy(user.sayHi);\n \n var spy = user.sayHi;\n user.sayHi = delay(user.sayHi, 1500);\n \n user.sayHi(\"Привет\", \"Вася\");\n \n this.clock.tick(2000);\n \n assert(spy.calledOnce, 'проверка calledOnce не сработала');\n });\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c1af1f6dbff33a791f4" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c1bf1f6dbff33a791f6" }, "plunkId" : "3wdxWhGrRp8rgzOQZ7fs", "webPath" : "/task/debounce/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c1bf1f6dbff33a791f7" } }, { "content" : "describe(\"debounce\", function() {\n before(function() {\n this.clock = sinon.useFakeTimers();\n });\n \n after(function() {\n this.clock.restore();\n });\n\n it(\"вызывает функцию не чаще чем раз в ms миллисекунд\", function() {\n var log = '';\n function f(a) { log += a; }\n\n f = debounce(f, 1000);\n\n f(1); // выполнится сразу же\n f(2); // игнор\n\n setTimeout(function() { f(3) }, 100); // игнор (рановато)\n setTimeout(function() { f(4) }, 1100); // выполнится (таймаут прошёл)\n setTimeout(function() { f(5) }, 1500); // игнор\n\n this.clock.tick(5000);\n assert.equal(log, \"14\");\n });\n\n it(\"сохраняет контекст вызова\", function() {\n var obj = {\n f: function() { \n assert.equal(this, obj);\n }\n };\n \n obj.f = debounce(obj.f, 1000);\n obj.f(\"test\");\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c1bf1f6dbff33a791f8" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c1cf1f6dbff33a791f9" }, "plunkId" : "7PAr0GpUuHAlmDjIrZj1", "webPath" : "/task/debounce/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c1cf1f6dbff33a791fa" } }, { "content" : "describe(\"debounce\", function() {\n before(function() {\n this.clock = sinon.useFakeTimers();\n });\n \n after(function() {\n this.clock.restore();\n });\n\n it(\"вызывает функцию не чаще чем раз в ms миллисекунд\", function() {\n var log = '';\n function f(a) { log += a; }\n\n f = debounce(f, 1000);\n\n f(1); // выполнится сразу же\n f(2); // игнор\n\n setTimeout(function() { f(3) }, 100); // игнор (рановато)\n setTimeout(function() { f(4) }, 1100); // выполнится (таймаут прошёл)\n setTimeout(function() { f(5) }, 1500); // игнор\n\n this.clock.tick(5000);\n assert.equal(log, \"14\");\n });\n\n it(\"сохраняет контекст вызова\", function() {\n var obj = {\n f: function() { \n assert.equal(this, obj);\n }\n };\n \n obj.f = debounce(obj.f, 1000);\n obj.f(\"test\");\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c1cf1f6dbff33a791fb" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c1df1f6dbff33a791fd" }, "plunkId" : "lX0ccKs5gMtlXPe6XfnC", "webPath" : "/task/throttle/source", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c1df1f6dbff33a791fe" } }, { "content" : "describe(\"throttle(f, 1000)\", function() {\n var f1000;\n var log = \"\";\n function f(a) { log += a; } \n\n before(function() {\n f1000 = throttle(f, 1000);\n this.clock = sinon.useFakeTimers();\n });\n\n it(\"первый вызов срабатывает тут же\", function() {\n f1000(1); // такой вызов должен сработать тут же\n assert.equal(log, \"1\");\n });\n\n it(\"тормозит второе срабатывание до 1000мс\", function() {\n f1000(2); // (тормозим, не прошло 1000мс)\n f1000(3); // (тормозим, не прошло 1000мс)\n // через 1000 мс запланирован вызов с последним аргументом \n\n assert.equal(log, \"1\"); // пока что сработал только первый вызов\n \n this.clock.tick(1000); // прошло 1000мс времени\n assert.equal(log, \"13\"); // log==13, т.к. сработал вызов f1000(3)\n });\n\n it(\"тормозит третье срабатывание до 1000мс после второго\", function() {\n this.clock.tick(100);\n f1000(4); // (тормозим, с последнего вызова прошло 100мс - менее 1000мс)\n this.clock.tick(100);\n f1000(5); // (тормозим, с последнего вызова прошло 200мс - менее 1000мс)\n this.clock.tick(700);\n f1000(6); // (тормозим, с последнего вызова прошло 900мс - менее 1000мс)\n \n this.clock.tick(100); // сработал вызов с 6\n\n assert.equal(log, \"136\");\n });\n\n after(function() {\n this.clock.restore();\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c1df1f6dbff33a791ff" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c1df1f6dbff33a79200" }, "plunkId" : "tvJUxdUpwgxdrOD4Di8L", "webPath" : "/task/throttle/solution", "files" : [ { "content" : "\n\n\n \n \n \n\n\n\n \n\n\n", "filename" : "index.html", "_id" : { "$oid" : "54c29c1df1f6dbff33a79201" } }, { "content" : "describe(\"throttle(f, 1000)\", function() {\n var f1000;\n var log = \"\";\n function f(a) { log += a; } \n\n before(function() {\n f1000 = throttle(f, 1000);\n this.clock = sinon.useFakeTimers();\n });\n\n it(\"первый вызов срабатывает тут же\", function() {\n f1000(1); // такой вызов должен сработать тут же\n assert.equal(log, \"1\");\n });\n\n it(\"тормозит второе срабатывание до 1000мс\", function() {\n f1000(2); // (тормозим, не прошло 1000мс)\n f1000(3); // (тормозим, не прошло 1000мс)\n // через 1000 мс запланирован вызов с последним аргументом \n\n assert.equal(log, \"1\"); // пока что сработал только первый вызов\n \n this.clock.tick(1000); // прошло 1000мс времени\n assert.equal(log, \"13\"); // log==13, т.к. сработал вызов f1000(3)\n });\n\n it(\"тормозит третье срабатывание до 1000мс после второго\", function() {\n this.clock.tick(100);\n f1000(4); // (тормозим, с последнего вызова прошло 100мс - менее 1000мс)\n this.clock.tick(100);\n f1000(5); // (тормозим, с последнего вызова прошло 200мс - менее 1000мс)\n this.clock.tick(700);\n f1000(6); // (тормозим, с последнего вызова прошло 900мс - менее 1000мс)\n \n this.clock.tick(100); // сработал вызов с 6\n\n assert.equal(log, \"136\");\n });\n\n after(function() {\n this.clock.restore();\n });\n\n});", "filename" : "test.js", "_id" : { "$oid" : "54c29c1df1f6dbff33a79202" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c1ef1f6dbff33a79203" }, "plunkId" : "xSEcNSBtNYRVJxBMjR5S", "webPath" : "/article/setTimeout-setInterval/setInterval-anim", "files" : [ { "filename" : "index.html", "content" : "\n\n\n \n \n\n\n\n\n\n\n\n\n\n\n", "_id" : { "$oid" : "54c29c1ef1f6dbff33a79204" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c1ff1f6dbff33a79216" }, "plunkId" : "oBYeNVTNa7MofiF5c2cD", "webPath" : "/task/coffeemachine-fix-run/solution", "files" : [ { "filename" : "index.html", "content" : "\n\n\n \n\n\n \n\n\n\n", "_id" : { "$oid" : "54c29c1ff1f6dbff33a79217" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c1ff1f6dbff33a79218" }, "plunkId" : "rYcm45y3rh58KEqJQKax", "webPath" : "/task/coffeemachine-fix-run/source", "files" : [ { "filename" : "index.html", "content" : "\n\n\n \n\n\n \n\n\n\n", "_id" : { "$oid" : "54c29c1ff1f6dbff33a79219" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c20f1f6dbff33a7921b" }, "plunkId" : "udmOzo0dGfAMNBeLVMyb", "webPath" : "/task/coffeemachine-disable-stop/solution", "files" : [ { "filename" : "index.html", "content" : "\n\n\n \n\n\n \n\n\n\n", "_id" : { "$oid" : "54c29c20f1f6dbff33a7921c" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c20f1f6dbff33a79236" }, "plunkId" : "u2ezArcWwcAliMf98FAk", "webPath" : "/task/clock-class/solution", "files" : [ { "filename" : "clock.js", "content" : "\nfunction Clock(options) {\n this._template = options.template;\n}\n\nClock.prototype._render = function render() {\n var date = new Date();\n\n var hours = date.getHours();\n if (hours < 10) hours = '0' + hours;\n\n var min = date.getMinutes();\n if (min < 10) min = '0' + min;\n\n var sec = date.getSeconds();\n if (sec < 10) sec = '0' + sec;\n\n var output = this._template.replace('h', hours).replace('m', min).replace('s', sec);\n\n console.log(output);\n};\n\nClock.prototype.stop = function() {\n clearInterval(this._timer);\n};\n\nClock.prototype.start = function() {\n this._render();\n var self = this;\n this._timer = setInterval(function() {\n self._render();\n }, 1000);\n};\n", "_id" : { "$oid" : "54c29c20f1f6dbff33a79237" } }, { "filename" : "index.html", "content" : "\n\n\n\n Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolorum aspernatur quam ex eaque inventore quod voluptatem adipisci omnis nemo nulla fugit iste numquam ducimus cumque minima porro ea quidem maxime necessitatibus beatae labore soluta voluptatum magnam consequatur sit laboriosam velit excepturi laborum sequi eos placeat et quia deleniti? Corrupti velit impedit autem et obcaecati fuga debitis nemo ratione iste veniam amet dicta hic ipsam unde cupiditate incidunt aut iure ipsum officiis soluta temporibus. Tempore dicta ullam delectus numquam consectetur quisquam explicabo culpa excepturi placeat quo sequi molestias reprehenderit hic at nemo cumque voluptates quidem repellendus maiores unde earum molestiae ad.\n
\n \n \n\n\n\n\n", "_id" : { "$oid" : "54c29c2bf1f6dbff33a79287" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c2bf1f6dbff33a79288" }, "plunkId" : "4EEuyAVLSxwTCj40eJ8g", "webPath" : "/task/create-notification/source", "files" : [ { "filename" : "index.css", "content" : ".notification {\n position: fixed;\n z-index: 1000;\n padding: 5px;\n border: 1px solid black;\n font: normal 20px Georgia;\n background: white;\n text-align: center;\n}\n\n.welcome {\n background: red;\n color: yellow;\n}\n\n", "_id" : { "$oid" : "54c29c2bf1f6dbff33a79289" } }, { "filename" : "index.html", "content" : "\n\n\n \n \n\n\n \n\n Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolorum aspernatur quam ex eaque inventore quod voluptatem adipisci omnis nemo nulla fugit iste numquam ducimus cumque minima porro ea quidem maxime necessitatibus beatae labore soluta voluptatum magnam consequatur sit laboriosam velit excepturi laborum sequi eos placeat et quia deleniti? Corrupti velit impedit autem et obcaecati fuga debitis nemo ratione iste veniam amet dicta hic ipsam unde cupiditate incidunt aut iure ipsum officiis soluta temporibus. Tempore dicta ullam delectus numquam consectetur quisquam explicabo culpa excepturi placeat quo sequi molestias reprehenderit hic at nemo cumque voluptates quidem repellendus maiores unde earum molestiae ad.\n
\n \nВ CSS есть готовый класс notification, который можно ставить уведомлению.
\n\n \n\n\n\n\n", "_id" : { "$oid" : "54c29c2bf1f6dbff33a7928a" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c2cf1f6dbff33a7928f" }, "plunkId" : "agVRzj1cu0v7gCOr2lW7", "webPath" : "/task/div-placeholder/solution", "files" : [ { "filename" : "index.html", "content" : "\n\n\n\n\n\n\nBefore Before Before\n\nstyle=\"width:300px\"
This Ecma Standard is based on several originating technologies, the most well known being JavaScript (Netscape) and JScript (Microsoft). The language was invented by Brendan Eich at Netscape and first appeared in that company's Navigator 2.0 browser. It has appeared in all subsequent browsers from Netscape and in all browsers from Microsoft starting with Internet Explorer 3.0.
\n\nThe development of this Standard started in November 1996. The first edition of this Ecma Standard was adopted by the Ecma General Assembly of June 1997.
\n\nThat Ecma Standard was submitted to ISO/IEC JTC 1 for adoption under the fast-track procedure, and approved as international standard ISO/IEC 16262, in April 1998. The Ecma General Assembly of June 1998 approved the second edition of ECMA-262 to keep it fully aligned with ISO/IEC 16262. Changes between the first and the second edition are editorial in nature.
\n\nThe third edition of the Standard introduced powerful regular expressions, better string handling, new control statements, try/catch exception handling, tighter definition of errors, formatting for numeric output and minor changes in anticipation of forthcoming internationalisation facilities and future language growth. The third edition of the ECMAScript standard was adopted by the Ecma General Assembly of December 1999 and published as ISO/IEC 16262:2002 in June 2002.
\n\nLorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit sint atque dolorum fuga ad incidunt voluptatum error fugiat animi amet! Odio temporibus nulla id unde quaerat dignissimos enim nisi rem provident molestias sit tempore omnis recusandae esse sequi officia sapiente.
\n \n \n\n- Что на завтрак, Бэрримор?\n- Овсянка, сэр.\n- А на обед?\n- Овсянка, сэр.\n- Ну а на ужин?\n- Котлеты, сэр.\n- Уррра!!!\n- Из овсянки, сэр!!!\n\n \n
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit sint atque dolorum fuga ad incidunt voluptatum error fugiat animi amet! Odio temporibus nulla id unde quaerat dignissimos enim nisi rem provident molestias sit tempore omnis recusandae esse sequi officia sapiente.
\n \n \n \n\n\n\n\n", "_id" : { "$oid" : "54c29c2ff1f6dbff33a792b3" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c30f1f6dbff33a792b4" }, "plunkId" : "WocAlcvRq3cWPTzvoGOg", "webPath" : "/task/position-at/source", "files" : [ { "filename" : "index.css", "content" : ".note {\n position: fixed;\n z-index: 1000;\n padding: 5px;\n border: 1px solid black;\n background: white;\n text-align: center;\n font: italic 14px Georgia;\n}\n\nblockquote {\n background:#f9f9f9;\n border-left:10px solid #ccc;\n margin: 0 0 0 100px;\n padding:.5em 10px;\n quotes:\"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n display: inline-block;\n white-space: pre;\n}\n\nblockquote:before {\n color: #ccc;\n content: open-quote;\n font-size:4em;\n line-height:.1em;\n margin-right:.25em;\n vertical-align:-.4em;\n}\n", "_id" : { "$oid" : "54c29c30f1f6dbff33a792b5" } }, { "filename" : "index.html", "content" : "\n\n\n \n \n\n\n \nLorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit sint atque dolorum fuga ad incidunt voluptatum error fugiat animi amet! Odio temporibus nulla id unde quaerat dignissimos enim nisi rem provident molestias sit tempore omnis recusandae esse sequi officia sapiente.
\n \n \n\n- Что на завтрак, Бэрримор?\n- Овсянка, сэр.\n- А на обед?\n- Овсянка, сэр.\n- Ну а на ужин?\n- Котлеты, сэр.\n- Уррра!!!\n- Из овсянки, сэр!!!\n\n \n
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit sint atque dolorum fuga ad incidunt voluptatum error fugiat animi amet! Odio temporibus nulla id unde quaerat dignissimos enim nisi rem provident molestias sit tempore omnis recusandae esse sequi officia sapiente.
\n \n \n \n\n\n\n\n", "_id" : { "$oid" : "54c29c30f1f6dbff33a792b6" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c30f1f6dbff33a792ba" }, "plunkId" : "hYLQngKQqrmIANjOr1rZ", "webPath" : "/task/position-at-absolute/solution", "files" : [ { "filename" : "index.css", "content" : ".note {\n position: absolute;\n z-index: 1000;\n padding: 5px;\n border: 1px solid black;\n background: white;\n text-align: center;\n font: italic 14px Georgia;\n}\n\nblockquote {\n background:#f9f9f9;\n border-left:10px solid #ccc;\n margin: 0 0 0 100px;\n padding:.5em 10px;\n quotes:\"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n display: inline-block;\n white-space: pre;\n}\n\nblockquote:before {\n color: #ccc;\n content: open-quote;\n font-size:4em;\n line-height:.1em;\n margin-right:.25em;\n vertical-align:-.4em;\n}\n", "_id" : { "$oid" : "54c29c30f1f6dbff33a792bb" } }, { "filename" : "index.html", "content" : "\n\n\n \n \n\n\n \nИсправления два:
\n \ngetCoords()
из учебника для получения абсолютных координат.position:fixed
на position:absolute
в стилях.\n- Что на завтрак, Бэрримор?\n- Овсянка, сэр.\n- А на обед?\n- Овсянка, сэр.\n- Ну а на ужин?\n- Котлеты, сэр.\n- Уррра!!!\n- Из овсянки, сэр!!!\n\n \n
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit sint atque dolorum fuga ad incidunt voluptatum error fugiat animi amet! Odio temporibus nulla id unde quaerat dignissimos enim nisi rem provident molestias sit tempore omnis recusandae esse sequi officia sapiente.
\n \n \n \n\n\n\n\n", "_id" : { "$oid" : "54c29c30f1f6dbff33a792bc" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c31f1f6dbff33a792be" }, "plunkId" : "y6x3OJzRWPlAMN5MOyUq", "webPath" : "/task/position-at-2/solution", "files" : [ { "filename" : "index.css", "content" : ".note {\n position: absolute;\n z-index: 1000;\n padding: 5px;\n border: 1px solid black;\n background: white;\n text-align: center;\n font: italic 14px Georgia;\n opacity: .8;\n}\n\nblockquote {\n background: #f9f9f9;\n border-left: 10px solid #ccc;\n margin: 0 0 0 100px;\n padding: .5em 10px;\n quotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n display: inline-block;\n white-space: pre;\n}\n\nblockquote:before {\n color: #ccc;\n content: open-quote;\n font-size: 4em;\n line-height: .1em;\n margin-right: .25em;\n vertical-align: -.4em;\n}\n", "_id" : { "$oid" : "54c29c31f1f6dbff33a792bf" } }, { "filename" : "index.html", "content" : "\n\n\n \n \n\n\n \nLorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit sint atque dolorum fuga ad incidunt voluptatum error fugiat animi amet! Odio temporibus nulla id unde quaerat dignissimos enim nisi rem provident molestias sit tempore omnis recusandae esse sequi officia sapiente.
\n \n \n\n- Что на завтрак, Бэрримор?\n- Овсянка, сэр.\n- А на обед?\n- Овсянка, сэр.\n- Ну а на ужин?\n- Котлеты, сэр.\n- Уррра!!!\n- Из овсянки, сэр!!!\n\n \n
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit sint atque dolorum fuga ad incidunt voluptatum error fugiat animi amet! Odio temporibus nulla id unde quaerat dignissimos enim nisi rem provident molestias sit tempore omnis recusandae esse sequi officia sapiente.
\n \n \n \n\n\n\n\n", "_id" : { "$oid" : "54c29c31f1f6dbff33a792c0" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c31f1f6dbff33a792c9" }, "plunkId" : "lCTJhYpudGyHV4YoEPyh", "webPath" : "/task/dom-children/solution", "files" : [ { "filename" : "index.html", "content" : "\n\n \n \n1:1 | 2:1 | 3:1 | 4:1 | 5:1 |
1:2 | 2:2 | 3:2 | 4:2 | 5:2 |
1:3 | 2:3 | 3:3 | 4:3 | 5:3 |
1:4 | 2:4 | 3:4 | 4:4 | 5:4 |
1:5 | 2:5 | 3:5 | 4:5 | 5:5 |
1:1 | 2:1 | 3:1 | 4:1 | 5:1 |
1:2 | 2:2 | 3:2 | 4:2 | 5:2 |
1:3 | 2:3 | 3:3 | 4:3 | 5:3 |
1:4 | 2:4 | 3:4 | 4:4 | 5:4 |
1:5 | 2:5 | 3:5 | 4:5 | 5:5 |
Второй
\n\n\n\n\n", "_id" : { "$oid" : "54c29c33f1f6dbff33a792d8" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c33f1f6dbff33a792dc" }, "plunkId" : "MYFCTnRA7mqphgFPvlKW", "webPath" : "/task/get-user-attribute/solution", "files" : [ { "filename" : "index.html", "content" : "\n\n\n\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n\n\n\n\n\n\n\n", "_id" : { "$oid" : "54c29c35f1f6dbff33a792ef" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c35f1f6dbff33a792f0" }, "plunkId" : "RiHL4QZekmIHpvR0Zah4", "webPath" : "/task/benchmark-search-dom/source", "files" : [ { "filename" : "index.html", "content" : "\n\n\n\t\n\n\n\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n1
2
3
4
5
6
7
8
9
\n\n\n\n\n\n\n", "_id" : { "$oid" : "54c29c35f1f6dbff33a792f1" } } ], "description" : "Fork from http://javascript.ru", "__v" : 0 },{ "_id" : { "$oid" : "54c29c35f1f6dbff33a792f6" }, "plunkId" : "jNbDIUSwTa2kap21z10g", "webPath" : "/task/hide-other/solution", "files" : [ { "filename" : "index.html", "content" : "\n\n\n \n\n\n\n\n\nДомашняя лошадь — животное семейства непарнокопытных, одомашненный и единственный сохранившийся подвид дикой лошади, вымершей в дикой природе, за исключением небольшой популяции лошади Пржевальского.
\n \nДомашний осёл или ишак — одомашненный подвид дикого осла, сыгравший важную историческую роль в развитии хозяйства и культуры человека. Все одомашненные ослы относятся к африканским ослам.
\n \nКоро́ва — самка домашнего быка, одомашненного подвида дикого быка, парнокопытного жвачного животного семейства полорогих. Самцы вида называются быками, молодняк — телятами, кастрированные самцы — волами. Молодых (до первой стельности) самок называют тёлками.
\n \nДомашняя лошадь — животное семейства непарнокопытных, одомашненный и единственный сохранившийся подвид дикой лошади, вымершей в дикой природе, за исключением небольшой популяции лошади Пржевальского.
\n\tДомашний осёл или ишак — одомашненный подвид дикого осла, сыгравший важную историческую роль в развитии хозяйства и культуры человека. Все одомашненные ослы относятся к африканским ослам.
\n\tКоро́ва — самка домашнего быка, одомашненного подвида дикого быка, парнокопытного жвачного животного семейства полорогих. Самцы вида называются быками, молодняк — телятами, кастрированные самцы — волами. Молодых (до первой стельности) самок называют тёлками.
\n\t