beautify_js
This commit is contained in:
parent
0febe4f5fd
commit
5c2f32e184
208 changed files with 3891 additions and 1474 deletions
|
@ -1,5 +1,5 @@
|
|||
function getWeekDay(date) {
|
||||
var days = ['вс','пн','вт','ср','чт','пт','сб'] ;
|
||||
var days = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'];
|
||||
|
||||
return days[ date.getDay() ];
|
||||
return days[date.getDay()];
|
||||
}
|
|
@ -1,29 +1,29 @@
|
|||
describe("getWeekDay", function() {
|
||||
it("3 января 2014 - пятница", function() {
|
||||
assert.equal( getWeekDay(new Date(2014, 0, 3)), 'пт');
|
||||
assert.equal(getWeekDay(new Date(2014, 0, 3)), 'пт');
|
||||
});
|
||||
|
||||
it("4 января 2014 - суббота", function() {
|
||||
assert.equal( getWeekDay(new Date(2014, 0, 4)), 'сб');
|
||||
assert.equal(getWeekDay(new Date(2014, 0, 4)), 'сб');
|
||||
});
|
||||
|
||||
it("5 января 2014 - воскресенье", function() {
|
||||
assert.equal( getWeekDay(new Date(2014, 0, 5)), 'вс');
|
||||
assert.equal(getWeekDay(new Date(2014, 0, 5)), 'вс');
|
||||
});
|
||||
|
||||
it("6 января 2014 - понедельник", function() {
|
||||
assert.equal( getWeekDay(new Date(2014, 0, 6)), 'пн');
|
||||
assert.equal(getWeekDay(new Date(2014, 0, 6)), 'пн');
|
||||
});
|
||||
|
||||
it("7 января 2014 - вторник", function() {
|
||||
assert.equal( getWeekDay(new Date(2014, 0, 7)), 'вт');
|
||||
assert.equal(getWeekDay(new Date(2014, 0, 7)), 'вт');
|
||||
});
|
||||
|
||||
it("8 января 2014 - среда", function() {
|
||||
assert.equal( getWeekDay(new Date(2014, 0, 8)), 'ср');
|
||||
assert.equal(getWeekDay(new Date(2014, 0, 8)), 'ср');
|
||||
});
|
||||
|
||||
it("9 января 2014 - четверг", function() {
|
||||
assert.equal( getWeekDay(new Date(2014, 0, 9)), 'чт');
|
||||
assert.equal(getWeekDay(new Date(2014, 0, 9)), 'чт');
|
||||
});
|
||||
});
|
|
@ -2,9 +2,9 @@ function getLocalDay(date) {
|
|||
|
||||
var day = date.getDay();
|
||||
|
||||
if ( day == 0 ) { // день 0 становится 7
|
||||
day = 7;
|
||||
if (day == 0) { // день 0 становится 7
|
||||
day = 7;
|
||||
}
|
||||
|
||||
|
||||
return day;
|
||||
}
|
||||
}
|
|
@ -1,29 +1,29 @@
|
|||
describe("getLocalDay возвращает день недели", function() {
|
||||
it("3 января 2014 - пятница", function() {
|
||||
assert.equal( getLocalDay(new Date(2014, 0, 3)), 5);
|
||||
assert.equal(getLocalDay(new Date(2014, 0, 3)), 5);
|
||||
});
|
||||
|
||||
it("4 января 2014 - суббота", function() {
|
||||
assert.equal( getLocalDay(new Date(2014, 0, 4)), 6);
|
||||
assert.equal(getLocalDay(new Date(2014, 0, 4)), 6);
|
||||
});
|
||||
|
||||
it("5 января 2014 - воскресенье", function() {
|
||||
assert.equal( getLocalDay(new Date(2014, 0, 5)), 7);
|
||||
assert.equal(getLocalDay(new Date(2014, 0, 5)), 7);
|
||||
});
|
||||
|
||||
it("6 января 2014 - понедельник", function() {
|
||||
assert.equal( getLocalDay(new Date(2014, 0, 6)), 1);
|
||||
assert.equal(getLocalDay(new Date(2014, 0, 6)), 1);
|
||||
});
|
||||
|
||||
it("7 января 2014 - вторник", function() {
|
||||
assert.equal( getLocalDay(new Date(2014, 0, 7)), 2);
|
||||
assert.equal(getLocalDay(new Date(2014, 0, 7)), 2);
|
||||
});
|
||||
|
||||
it("8 января 2014 - среда", function() {
|
||||
assert.equal( getLocalDay(new Date(2014, 0, 8)), 3);
|
||||
assert.equal(getLocalDay(new Date(2014, 0, 8)), 3);
|
||||
});
|
||||
|
||||
it("9 января 2014 - четверг", function() {
|
||||
assert.equal( getLocalDay(new Date(2014, 0, 9)), 4);
|
||||
assert.equal(getLocalDay(new Date(2014, 0, 9)), 4);
|
||||
});
|
||||
});
|
||||
});
|
|
@ -1,6 +1,6 @@
|
|||
function getDateAgo(date, days) {
|
||||
var dateCopy = new Date(date);
|
||||
|
||||
dateCopy.setDate( date.getDate() - days );
|
||||
return dateCopy.getDate();
|
||||
|
||||
dateCopy.setDate(date.getDate() - days);
|
||||
return dateCopy.getDate();
|
||||
}
|
|
@ -1,20 +1,20 @@
|
|||
describe("getDateAgo", function() {
|
||||
|
||||
it("1 день до 02.01.2015 -> число 1", function() {
|
||||
assert.equal( getDateAgo(new Date(2015, 0, 2), 1), 1 );
|
||||
assert.equal(getDateAgo(new Date(2015, 0, 2), 1), 1);
|
||||
});
|
||||
|
||||
|
||||
it("2 день до 02.01.2015 -> число 31", function() {
|
||||
assert.equal( getDateAgo(new Date(2015, 0, 2), 2), 31 );
|
||||
assert.equal(getDateAgo(new Date(2015, 0, 2), 2), 31);
|
||||
});
|
||||
|
||||
it("100 дней от 02.01.2015 -> число 24", function() {
|
||||
assert.equal( getDateAgo(new Date(2015, 0, 2), 100), 24 );
|
||||
assert.equal(getDateAgo(new Date(2015, 0, 2), 100), 24);
|
||||
});
|
||||
|
||||
it("365 дней от 02.01.2015 -> число 2", function() {
|
||||
assert.equal( getDateAgo(new Date(2015, 0, 2), 365), 2 );
|
||||
assert.equal(getDateAgo(new Date(2015, 0, 2), 365), 2);
|
||||
});
|
||||
|
||||
it("не меняет переданный объект Date", function() {
|
||||
|
@ -23,5 +23,5 @@ describe("getDateAgo", function() {
|
|||
getDateAgo(dateCopy, 100);
|
||||
assert.equal(date.getTime(), dateCopy.getTime());
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
|
@ -1,4 +1,4 @@
|
|||
function getLastDayOfMonth(year, month) {
|
||||
var date = new Date(year, month+1, 0);
|
||||
var date = new Date(year, month + 1, 0);
|
||||
return date.getDate();
|
||||
}
|
||||
}
|
|
@ -1,13 +1,13 @@
|
|||
describe("getLastDayOfMonth", function() {
|
||||
it("последний день 01.01.2012 - 31", function() {
|
||||
assert.equal( getLastDayOfMonth(2012, 0), 31);
|
||||
assert.equal(getLastDayOfMonth(2012, 0), 31);
|
||||
});
|
||||
|
||||
it("последний день 01.02.2012 - 29 (високосный год)", function() {
|
||||
assert.equal( getLastDayOfMonth(2012, 1), 29);
|
||||
assert.equal(getLastDayOfMonth(2012, 1), 29);
|
||||
});
|
||||
|
||||
it("последний день 01.02.2013 - 28", function() {
|
||||
assert.equal( getLastDayOfMonth(2013, 1), 28);
|
||||
assert.equal(getLastDayOfMonth(2013, 1), 28);
|
||||
});
|
||||
});
|
|
@ -1,13 +1,13 @@
|
|||
function formatDate(date) {
|
||||
|
||||
var dd = date.getDate();
|
||||
if ( dd < 10 ) dd = '0' + dd;
|
||||
if (dd < 10) dd = '0' + dd;
|
||||
|
||||
var mm = date.getMonth()+1;
|
||||
if ( mm < 10 ) mm = '0' + mm;
|
||||
var mm = date.getMonth() + 1;
|
||||
if (mm < 10) mm = '0' + mm;
|
||||
|
||||
var yy = date.getFullYear() % 100;
|
||||
if ( yy < 10 ) yy = '0' + yy;
|
||||
if (yy < 10) yy = '0' + yy;
|
||||
|
||||
return dd+'.'+mm+'.'+yy;
|
||||
}
|
||||
return dd + '.' + mm + '.' + yy;
|
||||
}
|
|
@ -1,13 +1,13 @@
|
|||
describe("formatDate", function() {
|
||||
it("правильно форматирует дату 30.01.14", function() {
|
||||
assert.equal( formatDate(new Date(2014, 0, 30)), '30.01.14');
|
||||
assert.equal(formatDate(new Date(2014, 0, 30)), '30.01.14');
|
||||
});
|
||||
|
||||
it("правильно форматирует дату 01.01.01", function() {
|
||||
assert.equal( formatDate(new Date(2001, 0, 1)), '01.01.01');
|
||||
assert.equal(formatDate(new Date(2001, 0, 1)), '01.01.01');
|
||||
});
|
||||
|
||||
it("правильно форматирует дату 01.01.00", function() {
|
||||
assert.equal( formatDate(new Date(2000, 0, 1)), '01.01.00');
|
||||
assert.equal(formatDate(new Date(2000, 0, 1)), '01.01.00');
|
||||
});
|
||||
});
|
||||
});
|
|
@ -1,34 +1,34 @@
|
|||
function formatDate(date) {
|
||||
var diff = new Date() - date; // разница в миллисекундах
|
||||
|
||||
|
||||
if (diff < 1000) { // прошло менее 1 секунды
|
||||
return 'только что';
|
||||
}
|
||||
|
||||
var sec = Math.floor( diff / 1000 ); // округлить diff до секунд
|
||||
|
||||
var sec = Math.floor(diff / 1000); // округлить diff до секунд
|
||||
|
||||
if (sec < 60) {
|
||||
return sec + ' сек. назад';
|
||||
}
|
||||
|
||||
var min = Math.floor( diff / 60000 ); // округлить diff до минут
|
||||
|
||||
var min = Math.floor(diff / 60000); // округлить diff до минут
|
||||
if (min < 60) {
|
||||
return min + ' мин. назад';
|
||||
return min + ' мин. назад';
|
||||
}
|
||||
|
||||
// форматировать дату, с учетом того, что месяцы начинаются с 0
|
||||
var d = date;
|
||||
d = [
|
||||
'0'+d.getDate(),
|
||||
'0'+(d.getMonth()+1),
|
||||
''+d.getFullYear(),
|
||||
'0'+d.getHours(),
|
||||
'0'+d.getMinutes()
|
||||
'0' + d.getDate(),
|
||||
'0' + (d.getMonth() + 1),
|
||||
'' + d.getFullYear(),
|
||||
'0' + d.getHours(),
|
||||
'0' + d.getMinutes()
|
||||
];
|
||||
|
||||
for(var i=0; i<d.length; i++) {
|
||||
d[i] = d[i].slice(-2);
|
||||
for (var i = 0; i < d.length; i++) {
|
||||
d[i] = d[i].slice(-2);
|
||||
}
|
||||
|
||||
return d.slice(0,3).join('.')+' '+d.slice(3).join(':');
|
||||
}
|
||||
return d.slice(0, 3).join('.') + ' ' + d.slice(3).join(':');
|
||||
}
|
|
@ -1,18 +1,18 @@
|
|||
describe("formatDate", function() {
|
||||
it("выводит дату 1мс назад как \"только что\"", function() {
|
||||
assert.equal( formatDate( new Date(new Date - 1) ), 'только что' );
|
||||
assert.equal(formatDate(new Date(new Date - 1)), 'только что');
|
||||
});
|
||||
|
||||
it('выводит дату "30 сек назад"', function() {
|
||||
assert.equal( formatDate( new Date( new Date - 30*1000) ), "30 сек. назад" );
|
||||
assert.equal(formatDate(new Date(new Date - 30 * 1000)), "30 сек. назад");
|
||||
});
|
||||
|
||||
it('выводит дату "5 мин назад"', function() {
|
||||
assert.equal( formatDate( new Date( new Date- 5*60*1000) ), "5 мин. назад");
|
||||
assert.equal(formatDate(new Date(new Date - 5 * 60 * 1000)), "5 мин. назад");
|
||||
});
|
||||
|
||||
it("выводит старую дату в формате дд.мм.гг чч:мм", function() {
|
||||
assert.equal( formatDate( new Date(2014, 2, 1, 11, 22, 33) ), "01.03.14 11:22" );
|
||||
assert.equal(formatDate(new Date(2014, 2, 1, 11, 22, 33)), "01.03.14 11:22");
|
||||
});
|
||||
|
||||
});
|
|
@ -1,12 +1,12 @@
|
|||
function formatDate(date) {
|
||||
if (typeof date == 'number') {
|
||||
// перевести секунды в миллисекунды и преобразовать к Date
|
||||
date = new Date(date*1000);
|
||||
} else if(typeof date == 'string') {
|
||||
date = new Date(date * 1000);
|
||||
} else if (typeof date == 'string') {
|
||||
// разобрать строку и преобразовать к Date
|
||||
date = date.split('-');
|
||||
date = new Date(date[0], date[1]-1, date[2]);
|
||||
} else if ( date.length ) { // есть длина, но не строка - значит массив
|
||||
date = new Date(date[0], date[1] - 1, date[2]);
|
||||
} else if (date.length) { // есть длина, но не строка - значит массив
|
||||
date = new Date(date[0], date[1], date[2]);
|
||||
}
|
||||
// преобразования для поддержки полиморфизма завершены,
|
||||
|
@ -15,13 +15,13 @@ function formatDate(date) {
|
|||
var day = date.getDate();
|
||||
if (day < 10) day = '0' + day;
|
||||
|
||||
var month = date.getMonth()+1;
|
||||
var month = date.getMonth() + 1;
|
||||
if (month < 10) month = '0' + month;
|
||||
|
||||
// взять 2 последние цифры года
|
||||
var year = date.getFullYear() % 100;
|
||||
var year = date.getFullYear() % 100;
|
||||
if (year < 10) year = '0' + year;
|
||||
|
||||
|
||||
var formattedDate = day + '.' + month + '.' + year;
|
||||
|
||||
return formattedDate;
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
describe("formatDate", function() {
|
||||
it("читает дату вида гггг-мм-дд из строки", function() {
|
||||
assert.equal( formatDate( '2011-10-02' ), "02.10.11" );
|
||||
assert.equal(formatDate('2011-10-02'), "02.10.11");
|
||||
});
|
||||
|
||||
it("читает дату из числа 1234567890 (миллисекунды)", function() {
|
||||
assert.equal( formatDate( 1234567890 ), "14.02.09" );
|
||||
assert.equal(formatDate(1234567890), "14.02.09");
|
||||
});
|
||||
|
||||
it("читает дату из массива вида [гггг, м, д]", function() {
|
||||
assert.equal( formatDate( [2014,0,1] ), "01.01.14" );
|
||||
assert.equal(formatDate([2014, 0, 1]), "01.01.14");
|
||||
});
|
||||
|
||||
it("читает дату из объекта Date", function() {
|
||||
assert.equal( formatDate( new Date(2014,0,1) ), "01.01.14" );
|
||||
assert.equal(formatDate(new Date(2014, 0, 1)), "01.01.14");
|
||||
});
|
||||
|
||||
});
|
|
@ -2,6 +2,6 @@ function getDecimal(num) {
|
|||
var str = "" + num;
|
||||
var zeroPos = str.indexOf(".");
|
||||
if (zeroPos == -1) return 0;
|
||||
str = str.slice( zeroPos );
|
||||
str = str.slice(zeroPos);
|
||||
return +str;
|
||||
}
|
|
@ -1,21 +1,21 @@
|
|||
describe("getDecimal", function() {
|
||||
it("возвращает дробную часть 1.2 как 0.2", function() {
|
||||
assert.equal( getDecimal(1.2), 0.2 );
|
||||
assert.equal(getDecimal(1.2), 0.2);
|
||||
});
|
||||
|
||||
it("возвращает дробную часть 1.3 как 0.3", function() {
|
||||
assert.equal( getDecimal(1.3), 0.3 );
|
||||
assert.equal(getDecimal(1.3), 0.3);
|
||||
});
|
||||
|
||||
it("возвращает дробную часть 12.345 как 0.345", function() {
|
||||
assert.equal( getDecimal(12.345), 0.345 );
|
||||
assert.equal(getDecimal(12.345), 0.345);
|
||||
});
|
||||
|
||||
it("возвращает дробную часть -1.2 как 0.2", function() {
|
||||
assert.equal( getDecimal(-1.2), 0.2 );
|
||||
assert.equal(getDecimal(-1.2), 0.2);
|
||||
});
|
||||
|
||||
it("возвращает дробную часть 5 как 0", function() {
|
||||
assert.equal( getDecimal(5), 0 );
|
||||
assert.equal(getDecimal(5), 0);
|
||||
});
|
||||
});
|
||||
});
|
|
@ -2,4 +2,4 @@ function ucFirst(str) {
|
|||
if (!str) return str;
|
||||
|
||||
return str[0].toUpperCase() + str.slice(1);
|
||||
}
|
||||
}
|
|
@ -1,9 +1,9 @@
|
|||
describe("ucFirst", function() {
|
||||
it('делает первый символ заглавным', function() {
|
||||
assert.strictEqual( ucFirst("вася"), "Вася" );
|
||||
assert.strictEqual(ucFirst("вася"), "Вася");
|
||||
});
|
||||
|
||||
|
||||
it('для пустой строки возвращает пустую строку', function() {
|
||||
assert.strictEqual( ucFirst(""), "" );
|
||||
assert.strictEqual(ucFirst(""), "");
|
||||
});
|
||||
});
|
||||
});
|
|
@ -2,4 +2,4 @@ function checkSpam(str) {
|
|||
var lowerStr = str.toLowerCase();
|
||||
|
||||
return !!(~lowerStr.indexOf('viagra') || ~lowerStr.indexOf('xxx'));
|
||||
}
|
||||
}
|
|
@ -1,13 +1,13 @@
|
|||
describe("checkSpam", function() {
|
||||
it('считает спамом "buy ViAgRA now"', function() {
|
||||
assert.isTrue( checkSpam('buy ViAgRA now') );
|
||||
assert.isTrue(checkSpam('buy ViAgRA now'));
|
||||
});
|
||||
|
||||
it('считает спамом "free xxxxx"', function() {
|
||||
assert.isTrue( checkSpam('free xxxxx') );
|
||||
assert.isTrue(checkSpam('free xxxxx'));
|
||||
});
|
||||
|
||||
it('не считает спамом "innocent rabbit"', function() {
|
||||
assert.isFalse( checkSpam('innocent rabbit') );
|
||||
assert.isFalse(checkSpam('innocent rabbit'));
|
||||
});
|
||||
});
|
|
@ -1,4 +1,4 @@
|
|||
function truncate(str, maxlength) {
|
||||
return (str.length > maxlength) ?
|
||||
return (str.length > maxlength) ?
|
||||
str.slice(0, maxlength - 3) + '...' : str;
|
||||
}
|
|
@ -1,14 +1,14 @@
|
|||
describe("truncate", function() {
|
||||
it("обрезает строку до указанной длины (включая троеточие)", function() {
|
||||
assert.equal(
|
||||
assert.equal(
|
||||
truncate("Вот, что мне хотелось бы сказать на эту тему:", 20),
|
||||
"Вот, что мне хоте..."
|
||||
);
|
||||
});
|
||||
|
||||
it("не меняет короткие строки", function() {
|
||||
assert.equal(
|
||||
truncate("Всем привет!", 20),
|
||||
assert.equal(
|
||||
truncate("Всем привет!", 20),
|
||||
"Всем привет!"
|
||||
);
|
||||
});
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
function isEmpty(obj) {
|
||||
for(var key in obj) {
|
||||
function isEmpty(obj) {
|
||||
for (var key in obj) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -1,9 +1,11 @@
|
|||
describe("isEmpty", function() {
|
||||
it("если объект пустой - возвращает true", function() {
|
||||
assert.isTrue( isEmpty({}) );
|
||||
assert.isTrue(isEmpty({}));
|
||||
});
|
||||
|
||||
it("если у объекта есть любое свойство, не важно какое - возвращает false", function() {
|
||||
assert.isFalse( isEmpty({ anything: false }) );
|
||||
assert.isFalse(isEmpty({
|
||||
anything: false
|
||||
}));
|
||||
});
|
||||
});
|
|
@ -1,11 +1,11 @@
|
|||
function isNumeric(n) {
|
||||
function isNumeric(n) {
|
||||
return !isNaN(parseFloat(n)) && isFinite(n)
|
||||
}
|
||||
|
||||
function multiplyNumeric(obj) {
|
||||
for(var key in obj) {
|
||||
if (isNumeric( obj[key] )) {
|
||||
for (var key in obj) {
|
||||
if (isNumeric(obj[key])) {
|
||||
obj[key] *= 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
function isNumeric(n) {
|
||||
function isNumeric(n) {
|
||||
return !isNaN(parseFloat(n)) && isFinite(n)
|
||||
}
|
||||
|
||||
|
|
|
@ -6,8 +6,8 @@ describe("multiplyNumeric", function() {
|
|||
title: "Моё меню"
|
||||
};
|
||||
multiplyNumeric(menu);
|
||||
assert.equal( menu.width, 400 );
|
||||
assert.equal( menu.height, 600 );
|
||||
assert.equal( menu.title, "Моё меню" );
|
||||
assert.equal(menu.width, 400);
|
||||
assert.equal(menu.height, 600);
|
||||
assert.equal(menu.title, "Моё меню");
|
||||
});
|
||||
});
|
|
@ -1,10 +1,10 @@
|
|||
function getMaxSubSum(arr) {
|
||||
var maxSum = 0, partialSum = 0;
|
||||
for (var i=0; i<arr.length; i++) {
|
||||
var maxSum = 0,
|
||||
partialSum = 0;
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
partialSum += arr[i];
|
||||
maxSum = Math.max(maxSum, partialSum);
|
||||
if (partialSum < 0) partialSum = 0;
|
||||
}
|
||||
return maxSum;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,33 +1,33 @@
|
|||
describe("getMaxSubSum", function() {
|
||||
it("максимальная подсумма [1, 2, 3] равна 6", function() {
|
||||
assert.equal( getMaxSubSum([1, 2, 3]), 6);
|
||||
assert.equal(getMaxSubSum([1, 2, 3]), 6);
|
||||
});
|
||||
|
||||
it("максимальная подсумма [-1, 2, 3, -9] равна 5", function() {
|
||||
assert.equal( getMaxSubSum([-1, 2, 3, -9]), 5);
|
||||
assert.equal(getMaxSubSum([-1, 2, 3, -9]), 5);
|
||||
});
|
||||
|
||||
it("максимальная подсумма [-1, 2, 3, -9, 11] равна 11", function() {
|
||||
assert.equal( getMaxSubSum([-1, 2, 3, -9, 11]), 11);
|
||||
assert.equal(getMaxSubSum([-1, 2, 3, -9, 11]), 11);
|
||||
});
|
||||
|
||||
it("максимальная подсумма [-2, -1, 1, 2] равна 3", function() {
|
||||
assert.equal( getMaxSubSum([-2, -1, 1, 2]), 3);
|
||||
assert.equal(getMaxSubSum([-2, -1, 1, 2]), 3);
|
||||
});
|
||||
|
||||
it("максимальная подсумма [100, -9, 2, -3, 5] равна 100", function() {
|
||||
assert.equal( getMaxSubSum([100, -9, 2, -3, 5]), 100);
|
||||
assert.equal(getMaxSubSum([100, -9, 2, -3, 5]), 100);
|
||||
});
|
||||
|
||||
it("максимальная подсумма [] равна 0", function() {
|
||||
assert.equal( getMaxSubSum([]), 0);
|
||||
assert.equal(getMaxSubSum([]), 0);
|
||||
});
|
||||
|
||||
it("максимальная подсумма [-1] равна 0", function() {
|
||||
assert.equal( getMaxSubSum([-1]), 0);
|
||||
assert.equal(getMaxSubSum([-1]), 0);
|
||||
});
|
||||
|
||||
it("максимальная подсумма [-1, -2] равна 0", function() {
|
||||
assert.equal( getMaxSubSum([-1, -2]), 0);
|
||||
assert.equal(getMaxSubSum([-1, -2]), 0);
|
||||
});
|
||||
});
|
|
@ -3,9 +3,9 @@ function find(array, value) {
|
|||
return array.indexOf(value);
|
||||
}
|
||||
|
||||
for(var i=0; i<array.length; i++) {
|
||||
for (var i = 0; i < array.length; i++) {
|
||||
if (array[i] === value) return i;
|
||||
}
|
||||
|
||||
|
||||
return -1;
|
||||
}
|
|
@ -2,25 +2,25 @@ describe("find", function() {
|
|||
|
||||
describe("возвращает позицию, на которой найден элемент", function() {
|
||||
it("в массиве [1,2,3] находит 1 на позиции 0", function() {
|
||||
assert.equal( find([1, 2, 3], 1), 0);
|
||||
assert.equal(find([1, 2, 3], 1), 0);
|
||||
});
|
||||
it("в массиве [1,2,3] находит 2 на позиции 1", function() {
|
||||
assert.equal( find([1, 2, 3], 2), 1);
|
||||
});
|
||||
assert.equal(find([1, 2, 3], 2), 1);
|
||||
});
|
||||
it("в массиве [1,2,3] находит 3 на позиции 2", function() {
|
||||
assert.equal( find([1, 2, 3], 3), 2);
|
||||
assert.equal(find([1, 2, 3], 3), 2);
|
||||
});
|
||||
});
|
||||
|
||||
it("если элемент не найден, возвращает -1", function() {
|
||||
assert.equal( find([1,2,3], 0), -1);
|
||||
assert.equal(find([1, 2, 3], 0), -1);
|
||||
});
|
||||
|
||||
it("отличает false или null от 0", function() {
|
||||
assert.equal( find([false, true, null], 0), -1);
|
||||
assert.equal(find([false, true, null], 0), -1);
|
||||
});
|
||||
|
||||
it("отличает 1 от true", function() {
|
||||
assert.equal( find([1, 2, 3], true), -1);
|
||||
assert.equal(find([1, 2, 3], true), -1);
|
||||
});
|
||||
});
|
|
@ -1,7 +1,7 @@
|
|||
function filterRange(arr, a, b) {
|
||||
var result = [];
|
||||
|
||||
for(var i=0; i<arr.length; i++) {
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
if (arr[i] >= a && arr[i] <= b) {
|
||||
result.push(arr[i]);
|
||||
}
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
describe("filterRange", function() {
|
||||
it("не меняет исходный массив", function() {
|
||||
var arr = [5, 4, 3, 8, 0];
|
||||
|
||||
|
||||
filterRange(arr, 0, 10);
|
||||
assert.deepEqual(arr, [5,4,3,8,0]);
|
||||
assert.deepEqual(arr, [5, 4, 3, 8, 0]);
|
||||
});
|
||||
|
||||
it("оставляет только значения указанного интервала", function() {
|
||||
var arr = [5, 4, 3, 8, 0];
|
||||
|
||||
|
||||
var result = filterRange(arr, 3, 5);
|
||||
assert.deepEqual(result, [5,4,3]);
|
||||
assert.deepEqual(result, [5, 4, 3]);
|
||||
});
|
||||
});
|
||||
});
|
|
@ -1,11 +1,11 @@
|
|||
function addClass(obj, cls) {
|
||||
var classes = obj.className ? obj.className.split(' ') : [];
|
||||
|
||||
for(var i=0; i<classes.length; i++) {
|
||||
for (var i = 0; i < classes.length; i++) {
|
||||
if (classes[i] == cls) return; // класс уже есть
|
||||
}
|
||||
|
||||
classes.push(cls); // добавить
|
||||
|
||||
|
||||
obj.className = classes.join(' '); // и обновить свойство
|
||||
}
|
|
@ -1,7 +1,9 @@
|
|||
describe("addClass", function() {
|
||||
|
||||
it("добавляет класс, которого нет", function() {
|
||||
var obj = { className: 'open menu' };
|
||||
var obj = {
|
||||
className: 'open menu'
|
||||
};
|
||||
addClass(obj, 'new');
|
||||
assert.deepEqual(obj, {
|
||||
className: 'open menu new'
|
||||
|
@ -9,7 +11,9 @@ describe("addClass", function() {
|
|||
});
|
||||
|
||||
it("не добавляет класс, который уже есть", function() {
|
||||
var obj = { className: 'open menu' };
|
||||
var obj = {
|
||||
className: 'open menu'
|
||||
};
|
||||
addClass(obj, 'open');
|
||||
assert.deepEqual(obj, {
|
||||
className: 'open menu'
|
||||
|
@ -17,11 +21,13 @@ describe("addClass", function() {
|
|||
});
|
||||
|
||||
it("не добавляет лишних пробелов, который уже есть", function() {
|
||||
var obj = { className: '' };
|
||||
var obj = {
|
||||
className: ''
|
||||
};
|
||||
addClass(obj, 'open');
|
||||
assert.deepEqual(obj, {
|
||||
className: 'open'
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
});
|
|
@ -1,14 +1,14 @@
|
|||
function aclean(arr) {
|
||||
var obj = {};
|
||||
|
||||
for(var i=0; i<arr.length; i++) {
|
||||
var sorted = arr[i].toLowerCase().split("").sort().join("");
|
||||
obj[sorted] = arr[i];
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
var sorted = arr[i].toLowerCase().split("").sort().join("");
|
||||
obj[sorted] = arr[i];
|
||||
}
|
||||
|
||||
var result = [];
|
||||
|
||||
for(var key in obj) {
|
||||
for (var key in obj) {
|
||||
result.push(obj[key]);
|
||||
}
|
||||
|
||||
|
|
|
@ -5,22 +5,22 @@ function intersection(arr1, arr2) {
|
|||
}
|
||||
|
||||
describe("aclean", function() {
|
||||
|
||||
|
||||
it("содержит ровно по 1 слову из каждого набора анаграмм", function() {
|
||||
var arr = ["воз", "киборг", "корсет", "зов", "гробик", "костер", "сектор"];
|
||||
|
||||
|
||||
var result = aclean(arr);
|
||||
assert.equal(result.length, 3);
|
||||
|
||||
assert.equal(intersection(result, ["гробик", "киборг"]).length, 1);
|
||||
assert.equal(intersection(result, ["воз", "зов"]).length, 1);
|
||||
assert.equal(intersection(result, ["корсет", "сектор", "костер"]).length, 1);
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
it("не различает регистр символов", function() {
|
||||
var arr = ["воз", "ЗОВ"];
|
||||
assert.equal( aclean(arr).length, 1 );
|
||||
assert.equal(aclean(arr).length, 1);
|
||||
});
|
||||
|
||||
});
|
|
@ -1,10 +1,10 @@
|
|||
function unique(arr) {
|
||||
var obj = {};
|
||||
|
||||
for(var i=0; i<arr.length; i++) {
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
var str = arr[i];
|
||||
obj[str] = true; // запомнить строку в виде свойства объекта
|
||||
}
|
||||
|
||||
|
||||
return Object.keys(obj); // или собрать ключи перебором для IE8-
|
||||
}
|
|
@ -1,14 +1,15 @@
|
|||
describe("unique", function() {
|
||||
it("убирает неуникальные элементы из массива", function() {
|
||||
var strings = ["кришна", "кришна", "харе", "харе",
|
||||
"харе", "харе", "кришна", "кришна", "8-()"];
|
||||
var strings = ["кришна", "кришна", "харе", "харе",
|
||||
"харе", "харе", "кришна", "кришна", "8-()"
|
||||
];
|
||||
|
||||
assert.deepEqual( unique(strings), ["кришна", "харе", "8-()"] );
|
||||
assert.deepEqual(unique(strings), ["кришна", "харе", "8-()"]);
|
||||
});
|
||||
|
||||
it("не изменяет исходный массив", function() {
|
||||
var strings = ["кришна", "кришна", "харе", "харе"];
|
||||
unique(strings);
|
||||
assert.deepEqual( strings, ["кришна", "кришна", "харе", "харе"] );
|
||||
assert.deepEqual(strings, ["кришна", "кришна", "харе", "харе"]);
|
||||
});
|
||||
});
|
|
@ -1,7 +1,7 @@
|
|||
function camelize(str) {
|
||||
var arr = str.split('-');
|
||||
|
||||
for(var i=1; i<arr.length; i++) {
|
||||
for (var i = 1; i < arr.length; i++) {
|
||||
// преобразовать: первый символ с большой буквы
|
||||
arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].slice(1);
|
||||
}
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
describe("camelize", function() {
|
||||
|
||||
it("оставляет пустую строку \"как есть\"", function() {
|
||||
assert.equal( camelize(""), "");
|
||||
assert.equal(camelize(""), "");
|
||||
});
|
||||
|
||||
describe("делает заглавным первый символ после дефиса", function() {
|
||||
|
||||
it("превращает background-color в backgroundColor", function() {
|
||||
assert.equal( camelize("background-color"), "backgroundColor");
|
||||
assert.equal(camelize("background-color"), "backgroundColor");
|
||||
});
|
||||
|
||||
it("превращает list-style-image в listStyleImage", function() {
|
||||
assert.equal( camelize("list-style-image"), "listStyleImage");
|
||||
assert.equal(camelize("list-style-image"), "listStyleImage");
|
||||
});
|
||||
|
||||
it("превращает -webkit-transition в WebkitTransition", function() {
|
||||
assert.equal( camelize("-webkit-transition"), "WebkitTransition");
|
||||
assert.equal(camelize("-webkit-transition"), "WebkitTransition");
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
function removeClass(obj, cls) {
|
||||
var classes = obj.className.split(' ');
|
||||
|
||||
for(i=0; i<classes.length; i++) {
|
||||
|
||||
for (i = 0; i < classes.length; i++) {
|
||||
if (classes[i] == cls) {
|
||||
classes.splice(i, 1); // удалить класс
|
||||
i--;
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
describe("removeClass", function() {
|
||||
|
||||
it("ничего не делает, если класса нет", function() {
|
||||
var obj = { className: 'open menu' };
|
||||
var obj = {
|
||||
className: 'open menu'
|
||||
};
|
||||
removeClass(obj, 'new');
|
||||
assert.deepEqual(obj, {
|
||||
className: 'open menu'
|
||||
|
@ -9,7 +11,9 @@ describe("removeClass", function() {
|
|||
});
|
||||
|
||||
it("не меняет пустое свойство", function() {
|
||||
var obj = { className: '' };
|
||||
var obj = {
|
||||
className: ''
|
||||
};
|
||||
removeClass(obj, 'new');
|
||||
assert.deepEqual(obj, {
|
||||
className: ""
|
||||
|
@ -17,7 +21,9 @@ describe("removeClass", function() {
|
|||
});
|
||||
|
||||
it("удаляет класс, не оставляя лишних пробелов", function() {
|
||||
var obj = { className: 'open menu' };
|
||||
var obj = {
|
||||
className: 'open menu'
|
||||
};
|
||||
removeClass(obj, 'open');
|
||||
assert.deepEqual(obj, {
|
||||
className: "menu"
|
||||
|
@ -25,11 +31,13 @@ describe("removeClass", function() {
|
|||
});
|
||||
|
||||
it("если класс один и он удалён, то результат - пустая строка", function() {
|
||||
var obj = { className: "menu" };
|
||||
var obj = {
|
||||
className: "menu"
|
||||
};
|
||||
removeClass(obj, 'menu');
|
||||
assert.deepEqual(obj, {
|
||||
className: ""
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
});
|
|
@ -1,10 +1,10 @@
|
|||
function filterRangeInPlace(arr, a, b) {
|
||||
|
||||
for(var i = 0; i<arr.length; i++) {
|
||||
var val = arr[i];
|
||||
if (val < a || val > b) {
|
||||
arr.splice(i--, 1);
|
||||
}
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
var val = arr[i];
|
||||
if (val < a || val > b) {
|
||||
arr.splice(i--, 1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -1,18 +1,18 @@
|
|||
describe("getSums", function() {
|
||||
|
||||
it("частичные суммы [1,2,3,4,5] равны [1,3,6,10,15]", function() {
|
||||
assert.deepEqual( getSums([1,2,3,4,5]), [1,3,6,10,15]);
|
||||
assert.deepEqual(getSums([1, 2, 3, 4, 5]), [1, 3, 6, 10, 15]);
|
||||
});
|
||||
|
||||
it("частичные суммы [-2,-1,0,1] равны [-2,-3,-3,-2]", function() {
|
||||
assert.deepEqual( getSums([-2,-1,0,1]), [-2,-3,-3,-2]);
|
||||
assert.deepEqual(getSums([-2, -1, 0, 1]), [-2, -3, -3, -2]);
|
||||
});
|
||||
|
||||
it("частичные суммы [] равны []", function() {
|
||||
assert.deepEqual( getSums([]), [] );
|
||||
assert.deepEqual(getSums([]), []);
|
||||
});
|
||||
|
||||
it("частичные суммы [1] равны [1]", function() {
|
||||
assert.deepEqual( getSums([1]), [1] );
|
||||
assert.deepEqual(getSums([1]), [1]);
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue